Lectures

Lecture Notes for CS351, Fall 2009

This page will house lecture notes, slides, code, URLs, etc., as they become available.

Lecture 01: Aug 25: Introduction; syllabus; topics of the course; philosophy of design; P1 assigned.
Lecture 02: Aug 27: Progress meter; administrivia: pretest; philosophy of testing; agile testing; edge and corner cases; testing bugs.
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 03: Sep 01: Administrivia; statistics on P1 code sizes; review of pretest bits: asymptotics of searching lists, arrays, and hashes; iteration question: programming idioms, off-by-one errors and use of java foreach, use of .contains().
Lecture Notes
|Keynote slides| |PDFified slides|
Example Code
|code.jar| |code.tar.gz|
Lecture 04: Sep 03: Notification: Quiz 1; URL access; notes on grading/effort optimization; programming with interfaces; Principle of Abstraction; Principle of Centralized Definition; critique process; how to give helpful crit feedback.
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 05: Sep 08: Progress meter; Quiz 1; Graph search (BFS and DFS).
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 06: Sep 10: Design notes: Terran's version of P1; UML; P1M2 Crit.
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 07: Sep 15: Stuff: Eclipse tricks; the true meaning of final; the true meaning of static (Part 1): fields and member variables; memory diagrams; the callback design pattern.
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 08: Sep 17: Q1 returned; Q1 statistics; static (Part 2): methods, initialization blocks, inner classes; method calls "under the hood"; (more) memory diagrams; P1M3 Crit.
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 09: Sep 22: Beautiful day -- design outside! High-level design; use of UML; simplification; "All models are wrong, but some are useful"; analysis paralysis. Administrivia: midterm announced; mail list issues.
Lecture 10: Sep 24: P3M3 back; midterm reminder; Design patterns: singleton, action.
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 11: Sep 29: Project 2 announced; P1Rollout crit.
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 12: Oct 01: Updates on grading for P1; design considerations for P2M1: trading space for time, glueing together data structures, data structure choice for FindableQueue; Priority (binary) heaps; heap properties and operations; generic implementation considerations: generics + arrays == evil; http://www.docjar.com/html/api/java/util/ArrayList.java.html.
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 13: Oct 06: Examining binary files: the UNIX ABCs; favor polymorphism over explicit conditionals; event processing loops and draw program loops; the Factory design pattern: factory methods and factory objects; use of Factories for prioritization in P2.
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 14: Oct 08: Computing history: ERNIE; design patterns; Model-View-Controller: the design problem(s) to be solved; sub-patterns: listener/observer, callback, view/adapter; P2M1 Crit.
Lecture Notes
|Keynote slides| |PDFified slides|
Example Code
|code.jar| |code.tar.gz|
Lecture 15: Oct 20: Design exercise: modeling water/resource flow for the duck pond.
Lecture 16: Oct 22: Reminders: P2R, Quiz2, P3 teams; job prospects; micro-tests; MVC reprised: building the model-view slice from the ground up; a bigger MVC demo: the DebugLog facility.
Lecture Notes
|Keynote slides| |PDFified slides|
Example Code
|code.jar| |code.tar.gz|
Lecture 17: Oct 27: Warning: input sanitization; Principle of mimesis: mimesis in P1 and P2; Mimesis and SWING: designing objects/code to mirror structure of visual representation; Composite design pattern; SWING as an instance of Composite; Discussion of Composite: define/defend/attack.
Lecture Notes
|Keynote slides| |PDFified slides| |PowerPoint slides|
Lecture 18: Nov 03: Models of multiprocessing: processes vs. threads; the process machine model; inter-process communication; the thread machine model; thread communication; Interface design principle; the AWT graphics rendering pipeline; the AWT event processing thread; user space vs. device space; geometry transforms; java.awt.Graphics2D; javax.swing.JComponent; Graphics2D.paintComponent(); the graphics state.
Lecture Notes
|Keynote slides| |PDFified slides| |PowerPoint slides|
Example Code
|code.jar| |code.tar.gz|
Lecture 19: Nov 05: Synchronization, cont'd: definitions, locks, enforced vs advisory locking; Live Action Multithreading demo; more Graphics2D: Geometry; AffineTransform.
Lecture Notes
|Keynote slides| |PDFified slides| |PowerPoint slides|
Example Code
|code.jar| |code.tar.gz|
Lecture 20: Nov 10: P3 administrivia; Points on Presenting; More synchronization: semantics of locking; Who Owns the Lock?; subtle cases of mutex failure.
Lecture Notes
|Keynote slides| |PDFified slides|
Lecture 21: Nov 12: Further notes on formal design presentations; presentation example; Computing history lesson; AWT pixel compositing.
Lecture Notes
|Keynote slides| |PDFified slides|
Example Code
|code.jar| |code.tar.gz|
Lecture 22: Dec 01
Lecture Notes
|Keynote slides| |PDFified slides| |PowerPoint slides|
Lecture 23: Dec 03
Lecture Notes
|Keynote slides| |PDFified slides| |PowerPoint slides|
Lecture 24: Dec 08
Lecture Notes
|Keynote slides| |PDFified slides| |PowerPoint slides|

Last updated: Thu 10 Dec 2009 08:43:39 AM MST