Lecturer Pearce
Office Hours
TR 1:00 - 3:00 in 213 Macquarrie Hall
Phone: (408) 924-5065
Email: prof.jpearce@gmail.com
URL: www.cs.sjsu.edu/faculty/pearce/pearce.html
Lectures
Text
Design Patterns in Java; Metsker & Wake; Addison-Wesley; 2006.
Course notes and other links can be found at:
www.cs.sjsu/faculty/pearce/cs151
Software
IDE: NetBeans or Eclipse
CASE Tool: StarUML
Prerequisites
Math 42, CS 46B, and CS 49J (or equivalent knowledge of Java) (with a grade of "C-" or better in each) or instructor consent.
Students are expected to have these skills:
Discover and design simple classes
Use encapsulation (private fields)
Document all public features of a class (javadoc style, @param, @return)
Design and implement programs that involve a single class or a couple of collaborating classes
Distinguish between instance fields/methods and static fields/methods
Read and write text files
Know sorting algorithms
Be able to implement and use arrays, lists, queues, stacks, hash tables
Develop and debug programs with > 100 lines of code
Know enough mathematics to be able to produce simple graphs (compute length of lines, end points of lines with a given starting point and angle, intersection of lines and circles, transform 2D coordinates)
Use javadoc
Grading
Grades will be determined by approximately four or five
programming assignments (50%), a midterm (20%), and a final exam (30%). Late
assignments are accepted by prior arrangement only.
Course Goal:
Introduce students to the basic principles of OO Design, plus elements of UML and design patterns. Cover the Java language features not yet seen in CS1 and CS2. Teach basic GUI programming.
Course Objectives:
OO Design:
Introduce core UML concepts
Introduce a simplified OO analysis and design methodology
Present the concept of design pattern
Present the concept of a software framework
Java Language:
Make students proficient in the use and creation of interfaces and inheritance hierarchies
Make students proficient in the Java type system
Introduce threads and thread safety
GUI Programming:
Introduce a GUI toolkit, including basic widgets and the event handling mechanism.
Student Learning
Outcomes:
Upon successful completion of this course, students should be able to:
OO Design
Interpret and produce UML class diagrams and UML sequence diagrams
Develop simple use cases, perform noun-verb analysis, interpret and produce CRC cards
Appropriately select and apply the following design patterns in the construction of a software application: Composite, Decorator, Iterator, Strategy, Template method, and Observer
Be able to follow a systematic OO design methodology
Java language
Create a class hierarchy involving existing and new interfaces and classes, including inner classes.
Design, implement, test, and debug programs in an object-oriented language, involving the creation of at least 10 classes and interfaces
Implement correctly the equals, hashCode, clone , toString methods
Use serializaton, reflection, and generics
Throw, propagate and catch exceptions
Implement threads and thread-safe data structures
GUI Programming
Use a GUI toolkit to create a graphical user interface involving frames, buttons, text components, panels, menus, and simple geometric shapes
Course Topics