San Jose State University - Department of Computer Science
CS 151 - Object-Oriented Design
Cay S. Horstmann
cay.horstmann@sjsu.edu
Spring 2017
Meeting times and location, the exam schedule, and class assignments, are published in the course web site. Contact information and office hours are published in my university web page.
Description/Prerequisites
For the official catalog description and prerequisites, please visit the catalog page.
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
BS in Computer Science Program Outcomes Supported
These are the BSCS Program Outcomes supported by this course:
- An ability to apply knowledge of computing and mathematics to solve problems
- An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution
- An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
- An ability to function effectively on teams to accomplish a common goal
- An ability to use current techniques, skills, and tools necessary for computing practice
- An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
- An ability to apply design and development principles in the construction of software systems of varying complexity
Required Texts/Readings
- Textbook: Cay Horstmann, Object-Oriented Design and Patterns, 3rd ed. This is a work in progress, and you will receive a free digital copy for your personal use. You may not share your copy with others.
- Additional References
- K. Arnold, J. Gosling and D.Holmes, The Java Programming Language, 4th Ed., Addison-Wesley.
- M. Fowler, UML Distilled, 3rd Ed., Addison-Wesley.
- E. Gamma et al., Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley.
- X. Jia, Object-Oriented Software Development Using Java: Principles, Patterns, and Frameworks, 2nd Ed., Addison-Wesley.
Course Requirements
- Exams (55%)
- Two in-class exams (15% per exam) and a final exam (25%). Exams cannot be made up, except for reasons of illness, as certified by a doctor, or documentable extreme emergency. Makeup exams may be oral.
- Programming Assignments (20%)
- Schedule your time well to protect yourself against unexpected problems. Late work is not accepted, and there is no extra credit or makeup work.
- Team Project (20%)
- You work in a team of 3 - 4 people that is formed by the instructor on a topic that is chosen by the instructor. For the project, students are expected to report their own results as well as their collaborators. The task responsibility and contribution of every team member must be precisely documented in a report. During the project demo, team members are expected to be able to provide correct answers to questions that are specific to their tasks. Team members will be graded individually based on the report, their participation in project demo and peer evaluation.
- Class Attendance, Preparation and Participation (5%)
- Each student is expected to be present, punctual, and prepared at every scheduled class session. University policy F69-24 states that “Students should attend all meetings of their classes, not only because they are responsible for material discussed therein, but because active participation is frequently essential to insure maximum benefit for all members of the class. Attendance per se shall not be used as a criterion for grading.” You will be graded on particpation in class and online discussions, and your performance on quizzes that check the assigned pre-class reading.
- Time Spent
- As per Policy Recommendation S12-3, success in this course is based on the expectation that students will spend, for each unit of credit, a minimum of forty-five hours over the length of the course for instruction or preparation/studying or course related activities.
This is a 3-unit/15-week class, so you should spend 135 hours per semester or 9 hours per week on this class.
Calendar
- Mon Jan 30
- Introduction
- Wed Feb 1
- Object-Oriented Design Process
- Mon Feb 6
- Object-Oriented Design Process
- Wed Feb 8
- Object-Oriented Design Process
- Mon Feb 13
- Guidelines for Class Design
- Wed Feb 15
- Guidelines for Class Design
- Mon Feb 20
- Guidelines for Class Design
- Wed Feb 22
- Interface Types and Polymorphism
- Mon Feb 27
- Interface Types and Polymorphism
- Wed Mar 1
- Interface Types and Polymorphism
- Mon Mar 6
- Patterns and GUI Programming
- Wed Mar 8
- Midterm 1
- Mon Mar 13
- Patterns and GUI Programming
- Wed Mar 15
- Patterns and GUI Programming
- Mon Mar 20
- Inheritance and Abstract Classes
- Wed Mar 22
- Inheritance and Abstract Classes
- Mon Mar 27
- Spring Break
- Wed Mar 29
- Spring Break
- Mon Apr 3
- Android Programming
- Wed Apr 5
- Android Programming
- Mon Apr 10
- The Java Object Model
- Wed Apr 12
- The Java Object Model
- Mon Apr 17
- The Java Object Model
- Wed Apr 19
- Midterm 2
- Mon Apr 24
- Frameworks
- Wed Apr 26
- Frameworks
- Mon May 1
- Concurrency
- Wed May 3
- Concurrency
- Mon May 8
- Concurrency
- Wed May 10
- Project Presentations
- Mon May 15
- Project Presentations
- Mon May 22
- 12:15-14:30 Final exam
Grading Policy
You will receive a letter grade for each of the exams, the finals, the total homework performance, and the total participation in labs/discussions/quizzes. Letter grades are obtained by adding and curving the numeric scores. When determining a curve, the cutoffs are guided by the university definitions for letter grades:
- A+, A, A- excellent
- B+, B, B- above average
- C+, C, C- average
- D+, D, D- below average
- F failure
Letter grades are converted into number grades, as specified by the registrar, except that an A+ is counted as 4.3, and weighted with the percentages given in the Course Requirements section. The weighted average is rounded towards the nearest letter grade, which is your class grade.
University Policy F13-1 states: “All students have the right, within a reasonable time, to know their academic scores, to review their grade-dependent work, and to be provided with explanations for the determination of their course grades.”
Course Policies
- Adding the Course
- To add the course, take the prerequisite quiz. You must use your add code within 24 hours, or the add code will be reassigned to someone else.
- Individual Work
- All homework and exams must be your own individual work. You may never copy anything from anyone without attribution, with one exception—you may copy from the textbook. For homeworks and exams, you may not copy anything from any other student at all. You may not share any of your homework or exam work with any students prior to submission. Except for the team project, you may not collaboratively produce results in pairs or teams.
- Publicly Viewable Work
- Your class work (including homework, exam, and project work) may be viewable by other students of this course. Your grades will not be viewable by others.
- Laptops
- You will be required to bring a laptop to all (!) classes and exams. Your laptop must be capable of running a virtual machine with the course software, and you must be proficient in using it.
University Policies
Per University Policy S16-9, university-wide policy information relevant to all courses, such as academic integrity, accommodations, etc. will be available on the Office of Graduate and Undergraduate Programs’ Syllabus Information web page .