CS 151: Object-Oriented Design

 

Department of Computer Science

San Jose State University

Fall 2015

 

 

Instructor Info

Vidya Rangasayee

DH 282

Vidya.rangasayee@sjsu.edu

(408) 924-5060

 

Class Info

Room#: MH 224

Meeting time: TR 7:30pm -8:45pm

Office hours: TR 5:00pm – 6:00pm (with appointment)

Final Exam: Thursday, December 10, 07:45pm – 10:00pm

 

 

Course Brief Info

CS 151: Object-Oriented Design

Course#: 50219 (CS)

Section#: 07

Prerequisites:

Ÿ  Math 042 (Discrete Mathematics)

Ÿ  CS 049J* (Programming in Java) or equivalent knowledge of Java

Ÿ  CS 046B (Introduction to Data Structures)

 

A grade C- or better, or instructor's consent is required. The Department of Computer Science strictly enforces prerequisites. If you are not already pre-enrolled, you must come to the first class meeting and pick up an Add-Form from the instructor. If applicable, show the instructor your card that indicates youΥre a graduating senior. It will be the instructor's and the department's decision whether or not to send you an add-code by email.

Any student who does not show up during the first two class meetings may be dropped by the instructor.

Prescribed texts

Ÿ  Cay Horstmann, "Object-Oriented Design & Patterns," 2nd edition, Wiley Publishers, Inc.
ISBN-13: 978-0471744870

Other Textbooks

Ÿ  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.

Software 

Ÿ  Programming Language: Java Platform SE 7 or higher 

o   It is available on all Department machines.

o   Download: http://www.oracle.com/technetwork/java/javase/downloads/index.html

Ÿ  StarUML

o   Download: http://staruml.sourceforge.net/en/download.php

o   StarUML Tutorial (to start off): http://www.owlnet.rice.edu/~comp201/07-spring/info/staruml/

o   StarUML User Guidhttp://staruml.sourceforge.net/en/documentations.php

Ÿ  Violet: http://horstmann.com/violet

Ÿ  IDE:

o   Eclipse: http://eclipse.org/

o   NetBeamshttp://netbeans.org/

 

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 Detail Info

Catalog Description

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, you 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 serialization, 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:

 

(a) An ability to apply knowledge of computing and mathematics to solve problems 

(b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution 

(c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs 

(d) An ability to function effectively on teams to accomplish a common goal 

(i) An ability to use current techniques, skills, and tools necessary for computing practice 

(j) 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 

(k) An ability to apply design and development principles in the construction of software systems of varying complexity

 

 

Programming assignments

There will be several programming assignments some of which are team based. For team based assignments, all members will get the same grade. 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.

 

Programs must be appropriately documented via javadoc comments and should adhere to the coding style posted on the CS Department web page: http://www.cs.sjsu.edu/web_mater/java_code.html.

 

Unless asked for specifically, all assignments must be submitted electronically. Instructions for this will be on the first assignment.

 

To learn time management, each assignment is worth a maximum of 100 points. Late assignments will lose 20 points and an additional 20 points for each 24 hours after the due date.

 

Exams

The midterm and final examinations will be open book, open notes. No Laptops or other electronic devices permitted during exams.

Instant messaging, e-mails, texting, tweeting, or other communication with anyone else during the exams will be considered cheating and strictly forbidden.

The current schedule for exams is

Midterm: Thursday, October 8th, 2015 during regular class

Final Exam: Thursday, December 10, 07:45pm – 10:00pm

 

 

Grading

Your individual class grade will be weighted as follows:

60% Individual and Team Assignments

15% Midterm exam

25% Final exam

 

I first try scores of 90, 80, and 70 to cut off letter grades of A-, B-, and C-, respectively. If overall class performance is too low to use these cut offs, I set a cut off of C- to a lower score than the class total average but a higher score than 60 (this number may change), and divide the students' group above the cut off of C- into A+, A, A-, B+, B, B-, C+, C, C-. The rest of students will be given by a grade of D+, D, D-, F or WU depending on their class performance.

 

Classroom protocol

Please:

Ÿ  Be on time!

Ÿ  No texting!

Ÿ  Set your cell phones in silent mode!

Ÿ  Participate in the class activities as much as you can.

Ÿ  Be patient about strange, easy questions from students.

Ÿ  Let's make a comfortable and respectful environment for presenting any idea.

Ÿ  Start on your homework early and stay on top of them

Ÿ  Have fun learning.

 

Policies

Workload

Success in this course is based on the expectation that students will spend, at least 6 hours per week for working on the homework, team works, and the programming assignments.

Academic integrity

Your own commitment to learning, as evidenced by your enrollment at San JosŽ State University, 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://sa.sjsu.edu/student_conduct.

Ÿ  Any cheating on an exam will result in a grade of F in the class.

Ÿ  If duplicate programs are found, both the provider and the copier will receive 0 point on the assignment. A second offense results in a grade of F in the class.

Ÿ  A student caught using resources like Rent-a-coder will receive an F for the course.

Ÿ  Any incident of academic dishonesty will be reported to University for disciplinary action.

 

Campus policy in compliance with the Americans with Disabilities Act

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 must register with DRC 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.

 

Recording Lectures

Recording lectures is not permitted by the instructor except under extenuating circumstances and require explicit permission of the instructor.

Course material developed by the instructor is the intellectual property of the instructor and cannot be shared publicly without his/her approval.  You may not publicly share or upload instructor generated material for this course such as exam questions, lecture notes, or homework solutions without instructor consent.