Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit


Computer Science Department

CS151, Object Oriented Design and Programming, 06, Fall 2021


Course Format

Technology Intensive, Online Course

Faculty Web Page and MYSJSU Messaging: We will use Canvas for most class related materials. Any specific/personal questions (grade related or personal situations) must be communicated via email or canvas message.


Course 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 assignment. Prerequisite: MATH 42, CS 46B, and CS 49J (or equivalent knowledge of Java) (with a grade of "C-" or better in each); Computer Science, Applied and Computational Math or Software Engineering majors only; or instructor consent.


Course Goals

Understand fundamentals of object-oriented design and programming in Java; be aware of various methodologies and principles in software design and development; have ability to design, implement, and document an application using best practices.


Course Learning Outcomes (CLO)

Upon successful completion of this course, students will be able to:

1. OO Design and principles:

a. Introduce a simplified OO analysis and design methodology

b. Present the concepts of design patterns and choose the appropriate design patterns to follow to meet your application goals

c. Introduce core UML concepts

d. Present the concept of a software framework

e. Properly document the software system

2. Java Language:

a. Make students proficient in the use and creation of interfaces and inheritance hierarchies

b. Make students proficient in the Java type system

c. Introduce threads and thread safety

d. Introduce Java generics

3. GUI Programming:

a. Introduce GUI toolkits, including basic widgets, the event handling mechanism, advanced graphics programming and animation.

4. Java reflection:

a. Introduce the basic concepts of reflection programming.

b. Introduce methods and approaches utilized in Java reflection programming.

5. IO, web, and networking programming:

a. Introduce methods and approaches available for IO, web, and network programming.


Optional Texts/Readings (no required text)

This class does not require a mandatory textbook. Google is your friend! Always refer to the Java API specification documentation.


Optional textbook (I will not be teaching by it)

Object Oriented Design and Patterns

Author: Cay Horstmann

A newer version of the book is currently under development. Resources can be found at http://horstmann.com/oodp3/

Other optional readings

Design Patterns in Java | Edition: 2

Author: Steven John Metsker, William C. Wake

ISBN:9780321333025

Publication Date:04/21/2006

Publisher: Addison-Wesley.

Effective Java (Java Series) | Edition: 2

Author: Joshua Bloch

ISBN:9780321356680

Publication Date:05/18/2008

Publisher: Addison-Wesley

Java Concurrency in Practice

Author: Brian Goetz, Tim Peierls, Joshua Bloch

ISBN:9780321349606

Publication Date:05/23/2006

Publisher: Addison-Wesley


Other technology requirements / equipment / material

Java 8 or higher. IDE is not required but could be helpful - Eclipse or Netbeans. You can choose to use any text editor to write your programs. IDEs simply makes writing your programs easier as IDEs usually have additional features that save time and programming effort (e.g. automatic documentation, automatically prepopulating getters and setters, etc.).


Course Requirements and Assignments

SJSU classes are designed such that in order to be successful, it is expected that students will spend a minimum of forty-five hours for each unit of credit (normally three hours per unit per week), including preparing for class, participating in course activities, completing assignments, and so on. More details about student workload can be found in University Policy S12-3 at http://www.sjsu.edu/senate/docs/S12-3.pdf.

●    Each student is expected to be present, punctual, and prepared at every scheduled class and lab session. It is assumed that the students already have basic knowledge of digital Boolean logic and fundamentals of programming.

●    Attendance is NOT optional though it does not form any part of your grade. Individual participation is also required. There will be no make-ups for missed midterm or assignments, unless any special arrangements is made with the instructor beforehand. The student is responsible for any material he/she may have missed.

●    There will be 6-7 homework assignments (some of which might be team based), one final project, one midterm and final exam. All homework should be submitted through Canvas. No scanned copy of handwritten solution is allowed.


Final Examination or Evaluation

There is an online Final Exam for this course. Please check the university Final Exam schedule for the exact date and time of the final exam (http://info.sjsu.edu/static/catalog/final-exam-schedule-spring.html).


Grading Information

Grading calculation will be based on the following:

● Assignments/Problem Sets (40%)

● Quizzes (20%)

● Midterm exam (20%)

● Final Examination (20%)


Incomplete work:

Points will be deducted for incomplete question responses and solutions that are partially functional. Consult individual assignment for details of point allocation for each problem.


Extra credit:

Extra credit options might be available in this class. All and any possible extra credit options will be announced in class and posted in canvas system if and when they become available.


Homework assignment due date:

Submission is allowed till 11:59 pm on due date.


Late assignments:

10% of the assignment grade will be subtracted for each 1 week of late submission. Even one day late will count as the whole 1 week late. 8 days late submission will count as 2 weeks late, and so on.


Makeup Exams:

You must submit only your own work on exams. Makeup exams will only be given in cases of illness (documented by a doctor) or in cases of documentable, extreme emergency.


Grading scale:

  Point % Range
  Letter Grade
  97.0 – 100
  A+
  93.0 – 96.99
  A
  90.0 – 92.99
  A-
  87.0 – 89.99
  B+
  82.0 – 86.99
  B
  80.0 – 81.99
  B-
  77.0 – 79.99
  C+
  72.0 – 76.99
  C
  70.0 – 71.99
  C-
  67.0 – 69.99
  D+
  62.0 – 66.99
  D
  60.0 – 61.99
  D-
  <60.0
  F

Note that “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.” See University Policy F13-1 at http://www.sjsu.edu/senate/docs/F13-1.pdf for more details.


Classroom Protocol (aka how to succeed in this class)

1. Attend all sessions. From past semesters, data shows that there is a positive correlation between attendance and your overall grade.

2. Come to class on time. Students entering the classroom late disrupt the lecture and / or the students already in class who may be engaged in lab or discussion.

3. A laptop/tablet is required in this class. Bring your device to lectures in order to be able to participate in in-class quizzes and activities.

4. If you miss a lecture you are still responsible for any material discussed or assignments given. A large portion of each class will be used for hands-on lab / discussion. All students are expected to participate in class activities. Students who are often absent will find themselves at a disadvantage during the tests.

5. No audio / video recording or photography in the classroom without prior permission of instructor. Instructor may provide review videos and/or flipped classroom.

6. No personal discussion or cell phone activity during class time. Please set the cell phone on silent/vibrate mode.

7. Email to be sent to the instructor's SJSU email ID ([email protected] or [email protected]only. I check email periodically during the day but much less during weekends. Please do not expect quick turnaround time during weekends.

8. Start on your homework early and stay on top of them. Some assignments take way more time than you expect. Don’t let your initial impression fool you.

9. Start forming study/project groups NOW. It makes it easier to work with the group for the final project. Your project partners are highly important to your success so choose them wisely.

10. Be prepared to learn A LOT. Some of this may require you to self-study certain topics. I will guide you through this journey but the onus of getting the best of this class lies on you.

11. If you are stuck or don’t understand something, ASK. Come to office hours. If office hours don’t work for you please email, ask on piazza, ask me right after class. I cannot help you if you don’t ask for it.