Administrivia
255 Team
Email: is255-ta@sims.berkeley.edu
Instructor Brian Hayes
Office Hours: Tuesday 3:00pm-4:00pm 202 South Hall
Tutor Lisa de Larios-Heiman
Email: lisadlh@sims.berkeley.edu
Office Hours: Wednesday 3:30pm-4:30pm Second Floor Lab
Tutor Jesse Mendelsohn
Email: jessedm@sims.berkeley.edu
Office Hours: Tuesday 4:00pm-5:00pm Second Floor Lab
Tutor Brooke Maury
Email: brookem@sims.berkeley.edu
Office Hours: Wednesday 3:30pm-4:30pm Second Floor Lab
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 31 : Tuesday
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
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
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
September 14 : Tuesday
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
"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
September 28 : Tuesday
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
Resources
October 5 : Tuesday
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
Resources
October 12 : Tuesday
Lecture: Analysis of Algorithms
Lecturer: Brian Hayes
Required Readings
Complexity and Big-O Notation, Rebecca Hasti [Online]
Resources
Due on October 28
October 14 : Thursday
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
Resources
October 26 : Tuesday
October 28 : Thursday
Due on November 4
Resources
November 2 : Tuesday
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
November 9 : Tuesday
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
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
Lecturer: Brian Hayes
Required Readings
Chapter 12 of Head First Java [Textbook]
Resources
Due on December 9
November 23 : Tuesday
Lecturer: Brian Hayes
Resources
Task Event Listener code (zipped source)
Load this into an Eclipse project.
November 30 : Tuesday
Lecturer: Brian Hayes
Required Readings
Chapter 7 (19 pages, 11 pages example) of Designing Object-Oriented Software [Textbook]
Subsystem
Resources
Due on December 7
December 2 : Thursday
December 7 : Tuesday
December 9 : Thursday
last updated on 2004-11-18 by Broam

