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 2024

Office hours: TuTh 4:30 ? 5:30 PM Clark Hall CL 325
Office location: Clark Hall CL 325 (mostly working from home)
E-mail: ron.mak@sjsu.edu

CMPE 202: Software Systems Engineering


Section 47: Tu 6:00 - 8:45 PM

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

Check regularly. Positions open sporadically.


Assignments

# Assigned Due Assignment
1 Feb 6 Feb 13 Functional Specification and Initial Classes

Use case form: UseCaseForm.docx
2 Feb 13 Feb 20 Design Specification
3 Feb 20 Mar 12 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: Assignment3-solution.zip
4 Mar 12 Mar 26 GUI-Based Rock-Paper-Scissors game
Example solution: Assignment4-solution.zip
5 Mar 26 Apr 12 Project proposal and prototype

Lectures

Week Date Content
1 Jan 30 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 6 Slides: Review of design principles; functional and nonfunctional requirements; UML diagrams; use cases; the Functional Specification; requirements analysis; initial classes
3 Feb 13 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 20 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 27 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 5 Midterm

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

Demo GUI program: DemoWidgets.zip  
7 Mar 12 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 19 Slides: Computer History Museum trip; go over midterm; 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 26 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 9 Slides: 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 16 Class cancelled.
12 Apr 23 Slides: Observer Design Pattern; Composite Design Pattern; Decorator Design Pattern

Example programs: Program12.1-Stats.zip   Program12.2-Stats-ObserverDP.zip   Program14.3-CostReport.zip   Program14.4-CostReport-CompositeDP.zip   Program14.5-Enhanced.zip   Program14.6-Enhanced-DecoratorDP.zip
13 Apr 30 Slides: 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

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 (still in prepublication -- see the book website).
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).