San José State University

College of Science/Department of Computer Science

CS151, Object Oriented Design, Section 3

Fall Semester, 2019

 

Course and Contact Information

 

·       Instructor:                      Jon Pearce

·       Office Location:            416 MacQuarrie Hall

·       Telephone:                     (408) 924-5065

·       Email:                               jon.pearce@sjsu.edu

·       Office Hours:                 TR 1:30 – 3:00

·       Class Days/Time:         TR 15:00 – 16:15

·       Classroom:                     MH 222

·       Prerequisites:              
Math 42, CS 46B, and CS 49J or equivalent knowledge of Java) with a grade of "C-" or better in each; Computer Science, Applied Science and Computational Math, or Software Engineering majors or students with instructor consent may enroll. 

Course Description:

 

Design of classes and interfaces. Object-oriented design methodologies and notations. Design patterns. Generics and reflection. Exception Handling. Concurrent programming. Graphical user interface programming. Software engineering concepts and tools. Required team-based assignments.

Section Description:

Students will be introduced to the above concepts through a series of in-class examples and team-based projects.

 

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

Software Engineering

§  Introduce a GUI toolkit, including basic widgets and the event handling mechanism

§  Introduce basic software engineering concepts and tools

 

 

Course Learning Outcomes

 

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 key design patterns in the construction of a software application

§  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

§  Use generic types, reflection, and lambda expressions

§  Throw, propagate and catch exceptions

§  Implement concurrent programs and use thread-safe data structures

Software Engineering

§  Use a GUI toolkit to create a graphical user interface involving frames, buttons, text components, panels, menus, and simple geometric shapes

§  Be able to document use cases for a simple team project

§  Be able to plan and track a simple team project

§  Be able to use a version control system and an automated build system

 

Required Texts/Readings

 

Textbook

 

Lecture note and other materials will be posted at CS151 Course Website:

 

   http://www.cs.sjsu.edu/faculty/pearce/modules/courses/Fall19/CS151/index.htm

 

Other Readings

 

My notes and lectures draw substantially from the following books:

 

·       Domain-Driven Design, Tackling Complexity in the Heart of Software; Eric Evans; Addison-Wesley; 2004.

·       Patterns, Principles, and Practices of Domain-Driven Design; Scott Millett with Nick Tune; Wrox; 2013.

·       Analysis Patterns: Reusable Object Models; Martin Fowler; Addison-Wesley; 1997.

·       Pattern-Oriented Software Architecture, volume 1; Buschmann, et. al.; Wiley; 1996.

·       Design Patterns, Elements of Reusable Object-Oriented Software; Gamma, et. al,; Addison-Wesley; 1994.

 

 

Other equipment / material requirements

 

Students should bring laptops to class. The following software should be installed:

 

·       Eclipse

·       StarUML 2

 

Course Requirements and Assignments

 

There will several team projects and several labs done individually. Both labs and projects will require students to be proficient writing and debugging Java.

 

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.

 

Grading Scheme

Course grades will be determined by computing a weighted average of all submitted work using the following weights:

 

Assignments

60%

Midterm

15%

Final

25%

TOTAL

100%

 

Weights of individual assignments appear on the course web page.

Assuming a normal distribution of weighted averages, I will use the following scheme for computing letter grades:

A

94% - 100%

A-

90% - 93%

B+

87% - 89%

B

84% - 86%

B-

80% - 83%

C+

77% - 79%

C

74% - 76%

C-

70% - 73%

D+

67% - 69%

D

64% -66%

D-

60% - 63%

F

0% - 59%

Please note that the above percentages are computed using the weights shown above. These are not the percentages shown in Canvas.

Classroom Protocol

 

Students should bring laptops to class and be prepared to work together on in-class labs.

 

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 Office of Graduate and Undergraduate Programs’ Syllabus Information web page at http://www.sjsu.edu/gup/syllabusinfo/

Course Schedule

 

Below is a tentative schedule of topics and activities. The instructor reserves the right to make changes to the schedule with fair warning. Exact due dates of assignments are given on the Assignments Page (see below).

 

Week

Dates

Topics & Activities

Assignments

1

8/22

Software Engineering Overview

 

2

8/27, 8/29

Requirements Modeling

OOA Labs

3

9/3, 9/5

Domain Modeling

 

4

9/10, 9/12

OOP

OOP Labs

5

9/17, 9/19

OOP

 

6

9/24, 9/26

MVC Architecture

Maze Challenge

7

10/1, 10/3

Building GUIs

 

8

10/8, 10/10

MVC Framework, Serialization

 

9

10/15, 10/17

MT Review, MT

 

10

10/22, 10/24

Client-Server Architecture

Maze Challenge II

11

10/29, 10/31

Pipeline Architecture

 

12

11/5, 11/7

Lambdas, Threads

 

13

11/12, 11/14

Agent-Based Architecture

Maze Challenge III

14

11/19, 11/21

Agent-Based Architecture

 

15

11/26, 11/28

Container-Component Architecture, Thanksgiving

Smart Box

16

12/3, 12/5

Container-Component Architecture, Final Review

 

Final Exam

 

Wednesday, December 11, 2:45 PM – 5:00 PM

 

Assignments

 

Assignment details can be found at:

·       Assignments