Lectures
Lecture Notes for CS351, Fall 2010
This page will house lecture notes, slides, code, URLs, etc., as they become available.
- Lecture 01: Aug 24: Introduction; syllabus; topics of the course; philosophy of design; P1 assigned.
-
- Lecture 02: Aug 26: Progress meter; administrivia: pretest; philosophy of testing; agile testing; edge and corner cases; testing bugs.
-
- Lecture Notes
- |PDFified slides|
- Lecture 03: Aug 31: Quiz 1 announced; source code statistics; testing guidelines: common, uncommon, edge, corner, exception cases; interfaces: principles of abstraction and centralized definition.
-
- Lecture Notes
- |PDFified slides|
- Lecture 04: Sep 02: Announcement: Labor Day! Lab canceled week of Sep 6; disussion of data structure selection and design considerations for M2 (see video; not in lecture slides); progress meter; tactical design thinking; more on programming with interfaces -- code examples; P1M1 crit.
-
- Lecture Notes
- |Keynote slides| |PDFified slides|
- Example Code
- |code.jar| |code.tar.gz|
- Lecture 05: Sep 07: Quiz 1; more discussion of data structures; depth- and breadth-first search; FIFO vs LIFO and search; data structures for graph search; designing iterators; lazy evaluation; use of libraries.
-
- Lecture Notes
- |PDFified slides|
- Lecture 06: Sep 09: Design notes for P1 M2 and M3; intro to UML; notes on generics.
-
- Lecture Notes
- |PDFified slides|
- Lecture 07: Sep 14: Eclipse tricks; intro to design patterns: parts of a pattern; the factory method and callback patterns; UML sequence diagrams.
-
- Lecture Notes
- |PDFified slides|
- Lecture 08: Sep 16: Stupid Java tricks: breaking the generics semantics; the true nature of
final ; the principle of least privilege; intro to memory diagrams; whatstatic really means. -
- Lecture Notes
- |Keynote slides| |PDFified slides|
- Lecture 09: Sep 21: Q1 returned; Eclipse tricks; true nature of static revisited; memory diagrams revisited; the memory diagramming procedure.
-
- Lecture Notes
- |PDFified slides|
- Lecture 10: Sep 23: Use of turnin; memory diagrams revisited: the MemDiagram/MemDiagramClass procedures; Art of Comments; static initialization.
-
- Lecture Notes
- |PDFified slides|
- Lecture 11: Sep 28: P2 assigned; P2 Q&A; Design patterns: Singleton and Action.
-
- Lecture Notes
- |PDFified slides|
- Lecture 12: Sep 30: Thinking about design; trading space for time; priority queues; generics + arrays == evil.
-
- Lecture Notes
- |PDFified slides|
- Lecture 13: Oct 05: Stats on P1 M1-R; news of the day: SEC/CFTC report blames computerized stock trading for "flash crash"; design principle: prefer polymorphism to tests; polymorphism and event queues; case study from my code; the Factory Object design pattern; factories and prioritization policies for P2; P2 M1 crit.
-
- Lecture Notes
- |PDFified slides|
- Lecture 14: Oct 07: Q&A on Midterm; thoughts on the state of education and the
economy; final bits of
static : static vs non-static inner classes; static inner classes and memory diagrams. Introduction to the Model-View-Controller design pattern: callback pattern reprised; intro to the listener/observer pattern. -
- Lecture Notes
- |PDFified slides|
- Lecture 15: Oct 19: Reminder: Quiz 2 on Oct 28; P3 starting Oct 28; Team selection; design discussions for P2; Tip o' the day: micro-tests; MVC design pattern continued: the Listener (Observer) design pattern; the View pattern; putting the parts together; code example: HelloWorld from Hell.
-
- Lecture Notes
- |PDFified slides|
- Lecture 16: Oct 21: Tip o' the day: love your debugger; Design principle: mimesis; mimetic design in SWING; modularity, elegance, GUI design, and you; SWING object reference hierarchies; example SWING program.
-
- Lecture Notes
- |PDFified slides|
- Example Code
- |code.jar| |code.tar.gz|
- Lecture 17: Oct 26: Miscellany: P2M2 crit cont'd; notes on input sanitization; the Composite design pattern; concrete example of MVC: the DebugLog facility.
-
- Lecture Notes
- |PDFified slides|
- Example Code
- |code.jar| |code.tar.gz|
- Lecture 18: Oct 27: Quiz 2; Project 3 team assignments; P3 handout and discussion.
-
- Lecture Notes
- |PDFified slides|
- Lecture 19: Nov 02: Q2 returned; intro to threading and synchronization: models of multi-processing; processes vs threads; inter-process communication; design principle: interfaces; intro to Java Graphics: the Java graphics stack; the java.awt.Graphics2d object.
-
- Lecture Notes
- |PDFified slides|
- Lecture 20: Nov 04: Notes on P3M1 evaluation; concurrency definitions; live action
multithreading demo; semantics of
synchronized keyword; the Java Graphics2D rendering pipeline. -
- Lecture Notes
- |PDFified slides|
- Lecture 21: Nov 09: Clarification on P3 milestones; notes on giving formal presentations;
grading for presentations; more semantics of
synchronized keyword; Who Owns The Lock exercise. -
- Lecture Notes
- |PDFified slides|
- Lecture 22: Nov 11: Presentations: being a good audience; more WOTL; race conditions and security.
-
- Lecture Notes
- |PDFified slides|
- Lecture 23: Nov 16: Clarification on "formal presentations"; presentation by team Santa's Little Helpers; notes on technical difficulties; design principle: fail fastness; fail-fast and concurrency; reflections on reflection.
-
- Lecture Notes
- |PDFified slides|
- Example Code
- |code.jar| |code.tar.gz|
- Lecture 24: Nov 30: Straw poll: topics for remaining lectures?; exams rehashed: per-question analysis of midterm; final exam policy; midterm Q5 reprised/in-class design analysis; serialization sneakiness.
-
- Lecture Notes
- |PDFified slides|
- Lecture 25: Dec 02: Live action demo: over-serialization, memory models, and you. Introduction to introduction to AI.
-
- Lecture Notes
- |PDFified slides|
- Example Code
- |code.jar| |code.tar.gz|
- Lecture 27: Dec 09: Last day of class! Java puzzlers.
-
- Lecture Notes
- |PDFified slides|
Last updated: Fri 10 Dec 2010 12:42:25 PM MST
