CS 151: Object-Oriented Design

 

GREEN SHEET

 

Spring Semester 2012

Department of Computer Science
San Jose State University

Instructor: Ron Mak

 

Section 1: MW 6:00 - 7:15 pm, MacQuarrie Hall, room 222

Section 1: MW 7:30 - 8:45 pm, MacQuarrie Hall, room 222

 

Office hours:

MW: 8:45 - 10:00 PM

 

and by arrangement

 

 

Office location:

MacQuarrie Hall, room 413

E-mail:

ron.mak@sjsu.edu

Course catalog description

"Design of classes and interfaces. Value and reference semantics. Object-oriented design methodologies and notations. Design patterns. Reflection and serialization. Exception handling. Graphical user interface programming. Frameworks and components. Multithreading. Required team-based programming assignments." 3 units

Prerequisites

Math 42

Discrete Mathematics

CS 46B

Introduction to Data Structures

CS 49J

Programming in Java
(or equivalent knowledge of Java)

 

A grade C- or better in each, or instructor's consent. The Department of Computer Science strictly enforces prerequisites. A student not meeting any prerequisites must fill out an Add Form at the beginning of the semester to explain his or her justifications to take the course, and it will be the instructor's and the department's decision whether or not to allow the student to enroll.

Material assumed from prerequisite courses

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

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

Required texts

Title: 

Object-Oriented Design & Patterns, 2nd ed.

Author: 

Cay Horstmann

Publisher: 

Wiley Publishers, Inc.

ISBN-13: 

978-0471744870

 

There may be additional reading assignments and use of tools from the Internet. I will provide URLs.

Recommended texts

Title: 

The Object-Oriented Thought Process, 3rd ed.

Author: 

Matt Weisfeld

Publisher: 

Addison-Wesley Professional

ISBN-13: 

978-0672330162

Title: 

Head First Object-Oriented Analysis & Design

Author: 

Brett D. McLaughlin, et al.

Publisher: 

O'Reilly Media, 2006

ISBN-13: 

978-0596008673

Schedule

This schedule is subject to change with fair notice.

Readings are chapters from Object-Oriented Design & Patterns, 2nd ed.

 

Week

Dates

Topics and activities

Readings

1

Jan 25

Introduction

Form project teams

 

2

Jan 30, Feb 1

Journey to good design

 

3

Feb 6, 8

Journey to good design

Object-oriented design process

 

2

4

Feb 13, 15

Object-oriented design process

 

5

Feb 20, 22

Guidelines for class design

3

6

Feb 27, 29

Guidelines for class design

 

7

Mar 5, 7

Interface types and polymorphism

4

8

Mar 12, 14

Interface types and polymorphism

 

9

Mar 19, 21

Midcourse review

Midterm exam March 21

 

10

Mar 26-30

Spring break

 

11

Apr 2, 4

Patterns and GUI programming

5

12

Apr 9, 11

Patterns and GUI programming

 

13

Apr 16, 18

Inheritance and abstract classes

6

14

Apr 23, 25

The Java object model

7

15

Apr 30, May 2

Frameworks

Multithreaded programming

8

9

16

May 7, 9

Multithreaded programming

 

17

May 14

Course review

 

 

Monday
May 21

Final exam

Section 1: 5:15-7:30 PM

Section 2: 7:45-10:00 PM

MacQuarrie Hall, room 222

 

Project teams

You will form project teams of around 4 students each. The teams will last throughout the semester. Once the teams are formed, you will not be allowed to move from one team to another, so form your teams wisely! Each student must be on a team.

Assignments

Assignments will be team-based. For each assignment, each project team will turn in one set of work, and all members of each team will receive the same score for the assignment. Each team is responsible for choosing a team lead and dividing up the work among the team members. You are personally responsible for participating and contributing to your team's work, and for understanding each part of the work for every assignment whether or not you worked on that part.

Assessments

At the end of the semester, each of you will turn in an assessment of your own performance on your team, and an assessment of each of the other members of your team.

Exams

There will be unannounced quick quizzes at the start of some classes to test your understanding of the lectures and readings. There will be no make-ups for missed quizzes.

 

The quizzes, midterm, and final examinations will be open book, notes, and laptops. Instant messaging, e-mails, texting, tweeting, or other communication with anyone else during the exams will be strictly forbidden. You will get an individual score for each quiz and exam.

Class grade

Your individual class grade will be weighted as follows:

 

50%

Assignments*

15%

Quizzes**

15%

Midterm exam**

20%

Final exam**

 

 

 

 * project team scores
** individual scores

 

Each assignment and exam will be scored (given points) but not assigned a letter grade. The mean score and standard deviation will be announced after each assignment and exam. Final individual class letter grades will be assigned based on the class curve. Your final class grade can be adjusted up or down depending on your level and quality of participation on your project team as determined by the project tracking tools and your team members' assessments of your performance.

Classroom protocol

It is very important for each student to attend classes and to participate in class discussions. Some class meetings will end with time for each team to meet. Cell phones in silent mode, please.

Academic Integrity

Your own commitment to learning, as evidenced by your enrollment at SJSU, and the University's Academic Integrity Policy requires you to be honest in all your academic course work. Faculty members are required to report all infractions to the Office of Student Conduct and Ethical Development. The policy on academic integrity can be found at http://www.sjsu.edu/studentaffairs/.

Further Information

If you need course adaptations or accommodations because of a disability, or if you need special arrangements in case the building must be evacuated, please make an appointment with me as soon as possible, or see me during office hours. Presidential Directive 97-03 requires that students with disabilities requesting accommodations register with the SJSU Disability Resource Center to establish a record of their disability.

 

Please familiarize yourself with SJSU policies and procedures at http://info.sjsu.edu/static/catalog/policies.html particularly the add/drop policy. It is your responsibility to know and observe these policies. However, if there is something about a policy that you don't understand, please feel free to ask! You can also find answers to many questions at the Academic Advising and Retention Services web site. Note that for the Spring 2012 semester, the last day to drop a course without an entry in your permanent record is Monday, February 6, and the last day to add a course and register late is Monday, February 13. After these dates it becomes more difficult to drop or add a class, so be sure you are in good shape before these dates arrive! See http://www.sjsu.edu/provost/Academic_Calendars/1112aycalendar.pdf