San Jose State University : Site Name

Navigation

Main Content

Reading to Buddy

Ronald Mak

Department of Computer Science
Department of Applied Data Science
Engineering Extended Studies
Spring Semester 2025

Office hours: TuTh 4:30 - 5:30 PM
Office location: Clark Hall CL 325
E-mail: ron.mak@sjsu.edu

CMPE 202: Software Systems Engineering


Section 47: Tu 6:00 - 8:45 PM in ISB 786

Click for:
Open student internships
at the NASA Ames Research Center

Check regularly. Positions open sporadically.


Assignments

# Assigned Due Assignment
1 Feb 4 Feb 11 Functional Specification and Initial Classes

Use case form: UseCaseForm.docx
2 Feb 11 Feb 18 Design Specification
3 Feb 18 Mar 11 Class design and the Rock-Paper-Scissors game

Example output for random choice: output-random.txt
Example output for smart choice: output-smart.txt
Example solution: RPS-textbased.zip    UML.pdf
4 Mar 11 Mar 25 GUI-Based Rock-Paper-Scissors game
5 Mar 25 Apr 11 Project proposal and prototype

Lectures

Week Date Content
1 Jan 28 Slides: Introduction; well-designed software; code examples; object-oriented design; backtracking from bad decisions; leaking changes; application development example

Example programs: Program1.1-Changes.zip   Program1.2-Complexity.zip   Program1.3-Inflexible.zip   Program1.4-Surprise.zip   Program2.1-Books-1.zip   Program2.2-Books-2.zip   Program2.3-Books-3.zip   Program2.4-Books-4.zip
2 Feb 4 Slides: Review of design principles; functional and nonfunctional requirements; UML diagrams; use cases; the Functional Specification; requirements analysis; initial classes

Example program: Program2.4-Books-5.zip
3 Feb 11 Slides: Good class design; UML diagrams to document class design; aggregation and composition; superclasses and subclasses; the Design Specification; Hide class implementations; Rules from the Law of Demeter; don't surprise users; the vexatious C++ vectors

Example programs: Program4.1-Automobile-1.zip   Program4.2-Automobile-2.zip   Program4.3-VehicleAbstract.zip   Program4.4-VehicleInterface.zip   Program5.2-DateArithmetic-1.zip   Program5.3-DateArithmetic-2.zip   Program5.4-DateArithmetic-3.zip   Program5.5-DateArithmetic-4.zip   Program5.6-DateArithmetic-5.zip   Program5.8-HiddenDate-1.zip   Program5.9-HiddenDate-2.zip
4 Feb 18 Slides: Rules from the Law of Demeter; the Open-Closed Principle; don't surprise users; the vexatious C++ vectors; programming by contract; overriding vs. overloading; the Liskov Substitution Principle; "is-a" vs. "has-a"; code to the Interface with a factory function

Example programs: Program5.7-DemeterAuto.zip   Program5.10-Mammals.zip   Program6.5-SurpriseMerge-1.zip   Program6.6-SurpriseMerge-2.zip   Program6.7-SurpriseVector-1.zip   Program6.8-SurpriseVector-2.zip   Program6.9-SurpriseVector-3.zip   Program6.10-CircularBuffer-1.zip   Program7.1-Taxes.zip   Program7.2-CircularBuffer-2.zip   Program7.3-CircularBuffer-3.zip   Program7.4-Toys-1.zip   Program7.5-Toys-2.zip   Program7.6-Toys-3.zip   Program7.7-Toys-4.zip
5 Feb 25 Slides: Recursion; Towers of Hanoi puzzle; Binary Search Tree; Quicksort; Fibonacci recursion disaster; recursion with dynamic backtracking; Eight Queens puzzle; Sudoku puzzles

Example programs: Program15.1-Largest.zip   Program15.2-Reverse.zip   Program15.3-Towers.zip   Program15.4-BST.zip   Program15.5-Quicksort.zip   Program15.6-Fibonacci.zip   Program15.7-Queens.zip   Program15.8-Sudoku.zip

Exercises: MemberOf.cpp   Multiply.cpp
6 Mar 4 Midterm

Slides: GUI programming; inversion of control; Qt 6; demo

Demo GUI program: DemoWidgets.zip  
7 Mar 11 Slides: GUI version of RPS; Template Design Pattern; Strategy Design Pattern

Example programs: Program8.1-Reports.zip   Program8.2-Reports-TemplateDP.zip   Program8.3-Sports.zip   Program8.4-Sports-StrategyDP.zip
8 Mar 18 Slides: Go over Assignment #3; Factory Method Design Pattern; Abstract Factory Design Pattern

Example programs: Program9.1-Provisions.zip   Program9.2-Provisions-FactoryDP.zip   Program9.3-Provisions-AbsFactoryDP.zip
9 Mar 25 Slides: A GUI-based RPS; Assignment #5; Adapter Design Pattern; Façade Design Pattern

Example programs: Program10.1-Fans.zip   Program10.2-Fans-AdapterDP.zip   Program10.3-Fans-AdapterDPx.zip   Program10.4-Funds.zip   Program10.5-Funds-FacadeDP.zip
10 Apr 8 Slides: Info about team projects; Singleton Design Pattern; Iterator Design Pattern; Visitor Design Pattern

Example programs: Program14.1-ExecPass.zip   Program14.2-ExecPass-SingletonDP.zip   Program11.1-Players.zip   Program11.2-PlayersIteratorDP.zip   Program11.3-Results.zip   Program11.4-Results-VisitorDP.zip
11 Apr 15 Slides: Composite Design Pattern; Decorator Design Pattern; Observer Design Pattern

Example programs: Program14.3-CostReport.zip   Program14.4-CostReport-CompositeDP.zip   Program14.5-Enhanced.zip   Program14.6-Enhanced-DecoratorDP.zip Program12.1-Stats.zip   Program12.2-Stats-ObserverDP.zip  
12 Apr 22 Slides: Info about your team projects; State Design Pattern; intro to multithreaded programming; critical regions; mutexes; condition variables

Example programs: Program13.1-TicketMachine.zip   Program13.2-TicketMachnine-StateDP.zip   Program16.1-Printing-unprotected.zip   Program16.2-Printing-MT.zip   Program16.3-ReaderWriter.zip   Program16.4-ProducerConsumer.zip
13 Apr 29 Slides:

Goals

The primary goal of this course is to become a much better programmer.

The instructor will share decades of experience as a successful software developer in industry and in scientific research institutions. The programming examples will be in C++, but the material will apply well to other object-oriented languages.

Course Learning Outcomes (CLO)

Department policy is to enforce
all course prerequisites strictly

Prerequisites

Classified graduate standing or instructor consent. Artificial Intelligence or Computer Engineering or Software Engineering majors only.

Recommended books

Object-Oriented Software Design in C++
Ronald Mak
Manning, 2024
978-1633439504
Book website

The class will be based on this, the instructor?s new book. Owning the book is not required (although greatly appreciated).
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
Addison-Wesley Professional, 1994
978-0201633610

The original "Gang of Four" design patterns book.
UML Distilled:A Brief Guide to the Standard Object Modeling Language, 2nd edition
Martin Fowler
Addison-Wesley, 2004
0-321-19368-7

This book teaches the Unified Modeling Language (UML).