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