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 ofstatic (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
