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 2026

Office hours: Up to one hour in person after each class
Online by appointment
Office location: Working from home
E-mail: ron.mak@sjsu.edu

CMPE 202: Software Systems Engineering


Section 47: W 6:00 - 8:45 PM in BBC 130

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

Check regularly. Positions open sporadically.


Assignments

# Assigned Due Assignment
1 Jan 28 Feb 4 Recursion and Backtracking

Provided code files: Island.h    Bridge.h    Graph.h
Example solutions: Assignment1-Problem1.zip    Assignment1-Problem2.zip
2 Feb 4 Feb 11 Multithreaded Programming

Example solutions: Assignment2-Problem1.zip    Assignment2-Problem2.zip    Assignment2-Problem3.zip    Assignment2-Problem4.zip
3 Feb 18 Feb 25 Functional Specification and Initial Classes

Use case form: UseCaseForm.docx
2 Feb 25 Mar 4 Design Specification

Lectures

Week Date Content
1 Jan 28 Slides: Introduction; recursion; Towers of Hanoi puzzle; 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.5-Quicksort.zip   Program15.6-Fibonacci.zip   Program15.7-Queens.zip   Program15.8-Sudoku.zip

Exercises: RecursiveMultiply.cpp   RecursiveMemberOf.cpp  
2 Feb 4 Slides: Intro to multithreaded programming; critical regions; mutexes; locks; atomic variables; condition variables; auto keyword; decltype pseudo-function

Example programs: Program16.1-Printing-unprotected.zip   Program16.2a-noyields.zip   Program16.2b-yields.zip   Program16.2c-lockguard.zip   Program16.3-ReaderWriter.zip   Program16.4-ProducerConsumer.zip
3 Feb 11 Slides: Dining philosophers; well-designed software; code examples; object-oriented design; backtracking from bad decisions; leaking changes; application development example

Example programs: DiningPhilosophers.zip   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
4 Feb 18 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
5 Feb 25 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; a Date class; lambda expressions

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   Lambda-1.zip   Lambda-2.zip   Lambda-3.zip

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). A newer edition with improved text and figures, but with examples in Python, is available at https://mng.bz/dXZ1. Until Feb. 11, use coupon code PBMak2 for a half-off discount.
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).