Click for:
Open student internships
at the NASA Ames Research Center
Check regularly. Positions open sporadically.
| # | 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 |
| 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 |
Department policy is to enforce
all course prerequisites strictly
Classified graduate standing or instructor consent. Artificial Intelligence or Computer Engineering or Software Engineering majors only.
|
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). |