IS 255 : Foundations of Software Design

Administrivia

Teaching Team 

255 Team

Instructor Brian Hayes

Office Hours: Tuesday 3:00pm-4:00pm 202 South Hall

Tutor Lisa de Larios-Heiman

Office Hours: Wednesday 3:30pm-4:30pm Second Floor Lab

Tutor Jesse Mendelsohn

Office Hours: Tuesday 4:00pm-5:00pm Second Floor Lab

Tutor Brooke Maury

Office Hours: Wednesday 3:30pm-4:30pm Second Floor Lab

Course Description

Link to course description

This class is an intensive introduction to programming principles and practice that prepares students with a non-technical background for the more technical SIMS courses. Topics include the fundamentals of object-oriented design, standard data structures and algorithms, software development, and computer program execution. This class is not simply a second semester course in the use of the Java programming language.

Course Information

School of Information Management and Systems INFOSYS 255

Course Dates: August 31 to December 15, 2004

Lecture Schedule: Tuesday Thursday 9:00am-10:30am in 202 South Hall

Lab Schedule: Thursday 2:00pm-3:30pm in Second Floor Lab, South Hall

Units: 4

Grading Option: Satisfactory/Unsatisfactory only

Course Texts

Required

Head First Java, Kathy Sierra and Bert Bates. O'Reilly, 2003. ISBN: 0596004656

Designing Object-Oriented Software, Rebecca Wirfs-Brock, Brian Wilkerson and Lauren Wiener. Pearson Education, 1990. ISBN: 0136298257

Course Work

August 30 : Monday

Placement Exam 

9:30am-11:00am, 205 South Hall

August 31 : Tuesday

Lecture: Class Overview; Motivation for Software Design (part 1) 

So, you want to know a bit more about software design? You might want to get started on the readings for lectures 2 and 3!

Lecturer: Brian Hayes

Required Readings

Machine Architecture: Gates [Online]

Machine Architecture: Circuits [Online]

Resources

Bits, Bytes, and Gates assigned 

Due on September 9

Assignment details

September 2 : Thursday

Lecture: Motivation for Designing Software (part 2) 

What else is going on under my laptop keyboard? Did we mention that you might want to plan ahead for next week's readings? The page counts for the readings do not include exercises.

Lecturer: Brian Hayes

Required Readings

Machine Architecture: The Central Processing Unit [Online]

Chapter 1-2 (32+ pages) of Head First Java [Textbook]

Breaking the Surface & A Trip to Objectville

Resources

Lab: SIMS Computing Environment 

Oh, Auntie Em! there's no place like home! -- The Wizard of Oz

Guest Lecturer: Kevin Heard of Director, Computing & Information Services, SIMS (email)

Optional Readings

SIMS File Services Tutorial [Online]

September 7 : Tuesday

Lecture: Motivation for Designing Software (part 3); Basic Building Blocks for More Complex Design (part 1) 

Can't see the forest for all the trees? You'll be happy that you started reading these chapters last week. The readings in HFJ03 should go quickly assuming you had a good first course in Java.

Lecturer: Brian Hayes

Required Readings

Chapter 1; Chapter 2, pp. 17-22 (19 pages) of Designing Object-Oriented Software [Textbook]

Why Use Object-Oriented Design? & What is an Object?, How Can Objects be Accessed?, Classes and Instances

Chapter 3-4 of Head First Java [Textbook]

Know Your Variables & How Objects Behave

Resources

Array and Get-Out-Of-Main Practice assigned 

Due on September 16

Assignment details

September 9 : Thursday

Lecture: Analysis and Design (part 1); Class Design (part 1) 

Is there more to writing good software than meets the eye?

Lecturer: Brian Hayes

Required Readings

Chapter 2, pp. 28-36; Chapter 3 of Designing Object-Oriented Software [Textbook]

Object-Oriented Design

Chapter 5 of Head First Java [Textbook]

Extra Strength Methods

Resources

Bits, Bytes, and Gates due 

Lab: Software Development Tools 

You will be happy you were using CVS the day your hard drive crashes!

Resources

September 14 : Tuesday

Lecture: Analysis and Design (part 2); Class Design (part 2) 

Lecturer: Brian Hayes

Required Readings

Chapters 4-5, (17 pages, 25 pages of example) of Designing Object-Oriented Software [Textbook]

Responsibilities & Collaborations

Resources

Quiz 

9:30am-9:45am, 202 South Hall

Classes and Objects

September 16 : Thursday

Lecture: Analysis and Design (part 3); Class Design (part 3) 

Lecturer: Brian Hayes

Required Readings

Chapter 6 (35 pages) of Head First Java [Textbook]

Using the Java Library

Resources

Array and Get-Out-Of-Main Practice due 

Contact Manager: Analysis, Design and Plan assigned 

Due on September 23

Assignment details

Lab: Introduction to Unix 

"Unix was not designed to stop people from doing stupid things, because that would also stop them from doing clever things." -- Doug Gwyn (f u cn rd ths, u cn gt a gd jb n unx prgrmmng)

Guest Lecturer: Kevin Heard of Director, Computing & Information Services, SIMS (email)

Optional Readings

Unix Tutorial [Online]

September 21 : Tuesday

Lecture: Analysis and Design; Inheritance and Polymorphism; Java Interfaces, Abstract Classes, Multiple Inheritances, and Java's Object Class (part 1) 

Lecturer: Brian Hayes

Required Readings

Chapter 8 of Designing Object-Oriented Software [Textbook]

This chapter, Protocols, discusses translating responsibilities and collaborations into class methods. You can skim or skip text specific to subsystems. When you read the section on Specifying Classes, think about how the same information can be expressed directly into Java source code using javadoc.

Chapter 2, pp. 29-30; Chapters 7 - 8 (58+ pages) of Head First Java [Textbook]

Better Living in Objectville: inheritance and polymorphism & Serious Polymorphism

Resources

September 23 : Thursday

Lecture: Java Interfaces, Abstract Classes, Multiple Inheritances, and Java's Object Class (part 2) 

Lecturer: Brian Hayes

Required Readings

Chapter 2 pp. 23-28; Chapter 4, pp. 67-70; Chapter 6 of Designing Object-Oriented Software [Textbook]

First two chapter readings provide a review polymorphism, inheritance, and class relationships. Chapter 6 provides guidelines for creating class hierarchies. When reading about contracts think about how they might or might not related to Java interfaces.

Is there such thing as Object-Oriented Analysis?, Martin Fowler [Online]

What's a Model For?, Martin Fowler [Online]

Chapter 8, pp. 204-213, (10 pages) of Head First Java [Textbook]

What about non-Animals? Why not make a class generic enough to take anything?

Resources

Contact Manager: Analysis, Design and Plan due 

Contact Manager: Detailed Design and Javadoc assigned 

Due on September 30

Assignment details

Lab: Inheritance and Polymorphism 

September 28 : Tuesday

Lecture: Java Constructors, Destructors, and Garbage Collection (part 1) 

Lecturer: Brian Hayes

Required Readings

Chapter 9 (31 pages) of Head First Java [Textbook]

Life and Death of an Object

Resources

Contact Manager: Implementation assigned 

Due on October 7

Assignment details

Quiz 

9:30am-9:45am, 202 South Hall

Inheritance and Polymorphism

September 30 : Thursday

Lecture: Java Constructors, Singletons, Destructors, and Garbage Collection (part 2); Java Packaging 

Lecturer: Brian Hayes

Required Readings

Chapter 6, p. 151; Chapter 16, p. 515-518 (5 pages) of Head First Java [Textbook]

You have to know the full name of the class you want to use in your code & Put your classes in packages!

Singleton pattern, Wikipedia [Online]

Resources

Contact Manager: Detailed Design and Javadoc due 

Lab: Singleton Pattern 

October 5 : Tuesday

Lecture: Stacks 

Lecturer: Brian Hayes

Required Readings

Chapter 10 of Head First Java [Textbook]

Resources

October 7 : Thursday

Lecture: Stacks; Java Exceptions; Analysis of Algorithms 

Lecturer: Brian Hayes

Required Readings

Algorithmic Efficiency -- Beating a Dead Horse Faster, Cprogramming.com [Online]

Chapter 11, Risky Behavior (33+ pages) of Head First Java [Textbook]

Resources

Contact Manager: Implementation due 

Lab: Stacks 

Resources

October 12 : Tuesday

Lecture: Analysis of Algorithms 

Lecturer: Brian Hayes

Required Readings

Complexity and Big-O Notation, Rebecca Hasti [Online]

Resources

Tic-Tac-Toe assigned 

Due on October 28

Assignment details

October 14 : Thursday

Lecture: Queues, and General Lists 

Lecturer: Brian Hayes

Required Readings

Processes, Osman Balci, et al. and et al. [Online]

java.util.ArrayList API documentation [Online]

java.util.Vector API documentation [Online]

Resources

Lab: Debugging and Queues 

October 19 : Tuesday

Lecture: Recursion; Searching Lists 

Lecturer: Brian Hayes

Required Readings

Recursive and Iterative Techniques with Sums, Brian Hayes [Online]

Resources

October 21 : Thursday

Lecture: Hash Maps; Tic-Tac-Toe Design 

Lecturer: Brian Hayes

Required Readings

Mastering Algorithms with C: Chapter 8: Hash Tables, Kyle Loudon [Online]

Resources

Lab: Hashtable 

Resources

October 26 : Tuesday

Lecture: Hash Maps; Java Object Class (Revisited) 

Lecturer: Brian Hayes

Resources

October 28 : Thursday

Lecture: Trees 

Lecturer: Brian Hayes

Resources

Tic-Tac-Toe due 

Big-O assigned 

Due on November 4

Assignment details

Lab: Hashkeys 

Resources

November 2 : Tuesday

Lecture: Graphs 

Lecturer: Brian Hayes

Required Readings

Graph Theory: An Introduction , Aaron Boyko, Andrew Ashton, Jeff Afseth, Kathy Erickson, Randy Noble, Rishi Raj, Teddy Ntwari and Vicki Eng [Online]

Resources

November 4 : Thursday

Lecture: Graphs: Traversals and Visualization 

Guest Lecturer: Jeffrey Heer of U.C. Berkeley, Computer Science (email, website)

Resources

Country Graph assigned 

Due on November 18

Assignment details

Lab: Graph Traversal 

November 9 : Tuesday

Lecture: Regular Expressions; Factory Pattern 

Lecturer: Brian Hayes

Required Readings

Chapter 10, pp. 286-288; Chapter 11, p. 300 of Head First Java [Textbook]

What is the role of NumberFormat's getCurrencyInstance method? What is the role of MidiSystem's getSequencer method?

Resources

Quiz 

9:10am-9:25am, 202 South Hall

Queues, Stacks, Hash tables

November 11 : Thursday : Veterans Day

Lecture: Holiday: No Class 

Lab: Catch up on your work! 

November 16 : Tuesday

Lecture: Regular Expressions (cont.); Factory Pattern (time permitting) 

Were off to the lab to experiment with regular expressions.

Lecturer: Brian Hayes

Resources

Lecture 22 Notes (.ppt)

Regular Expression Exploration lab

Regular Expression Explorer (zipped source and documentation)

Load this into Eclipse. Instructions are provided in the Regulary Expression Exploration lab document.

November 18 : Thursday

Lecture: Analysis Patterns 

Lecturer: Brian Hayes

Required Readings

Chapter 12 of Head First Java [Textbook]

Resources

Country Graph due 

SIMS Bank assigned 

Due on December 9

Assignment details

Lab: Event Listeners 

Required Readings

Chapter 12 of Head First Java [Textbook]

Resources

November 23 : Tuesday

Lecture: Event Listeners 

Lecturer: Brian Hayes

Resources

Quiz 

9:10am-9:25am, 202 South Hall

Trees and Graphs

November 25 : Thursday : Thanksgiving

Lecture: Holiday: No Class 

Lab: Modeling Thanksgiving Dinners 

November 30 : Tuesday

Lecture: Subsystems 

Lecturer: Brian Hayes

Required Readings

Chapter 7 (19 pages, 11 pages example) of Designing Object-Oriented Software [Textbook]

Subsystem

Resources

Subsystem Concepts assigned 

Due on December 7

Assignment details

December 2 : Thursday

Lecture: Sorting 

Lecturer: Brian Hayes

Required Readings

Simple Sorting in Java, Robert LaFore [Online]

Data Structures and Algorithms: Quicksort, John Morris [Online]

Resources

Lab: Sorting and Searching 

Resources

December 7 : Tuesday

Lecture: Finite State Machines 

Lecturer: Brian Hayes

Resources

Subsystem Concepts due 

December 9 : Thursday

Lecture: Recapitulation 

Lecturer: Brian Hayes

Required Readings

Totally Gridbag, Matt Qual [Online]

Resources

Lab: We've got something up our sleeves 

last updated on 2004-11-18 by Broam