Lecture | Topic![]() |
Reading |
---|---|---|
Feb. 10 |
Brooks on software design (slides ![]() functional design in OO languages iterator design as an example |
No Silver Bullet: Essence and Accidents of Software Engineering (on-line html |
The rest of March |
Design pattern in Ruby |
Design patterns in Ruby by Olsen (safari on-line via ur subscription![]() |
Mar 3 |
Design patterns |
Design patterns in Ruby by Olsen (safari on-line via ur subscription![]() Design patterns by Lasater (books24x7 via ur subscription ![]() UML (Chapter 14 of Kak, books24x7 ![]() ![]() |
Jan. 27, 29 |
Everything is a function (slides ![]() Lambda calculus, functional design |
Church numerals (wiki page![]() How to Design Programs by Felleisen, Findler, Flatt and Shriram Krishnamurthi (free on-line access ![]() ![]() |
Jan. 20, 22 |
Everything is an object (slides ![]() object-oriented programming |
Synthesizing OO and functional design by Krishnamurthi, Felleisen, and Friedman, 1998 (.ps at the author's site at Brown![]() Ruby programming (free on-line book by Thomas and Hunt ![]() ![]() |
Feb 19 |
HTTP, CGI programming Instant messaging systems |
CGI book (Colburn, safari on-line![]() IRCP (part II, chap. 10, network protocols handbook, safari on-line ![]() Jabber and XMPP(part II of programming Jabber by Adams, safari on-line ![]() |
Jan. 15 |
Introduction to complexity (slides, ur access only ![]() programming, design, collaboration |
Voices of computing by Denning (acm library![]() History of programming languages keynote by Steele and Gabriel in 2007 (85 min movie from acm library ![]() "Can't be built", by Gabriel (ieee library ![]() |
Feb. 12 |
Lazy evaluation, streams, memoization (slides ![]() Revision control(slides by Kelsey *storing, retrieving, logging, splitting, merging |
Structure and interpretation of computer programs on-line book site, Sec. 3.5 |
Mar 5 |
Mid-term exam |
|
Feb 25 |
Object vs. class Web 2.0 (cont'd) |
Self language (talk and paper by Smith and Unger, acm library![]() |
Topics |
Programming tools libraries, source browsing, version control, module systems, virtual machines |
Open source development with CVS, 2nd Ed., Fogel & Bar (books24x7 via ur subscription |
Apr. 2, 7, 9 |
Scalable systems I theory of locality |
The locality principle by Denning (acm lib![]() Whole-program locality by Ding et al. (acm lib ![]() |
Apr. 14, 16 |
Scalable systems II genetic "systems" |
Selfish gene by Dawkins in 1976 (read Chapter 4, the gene machine, and Chapter 5, aggression and stability) |
Apr. 21, 23 |
Scalable systems III game theory |
material and reading tbd |
Feb. 17 |
Software design (cont'd) Lazy data structure and memoization (cont'd) |
Why interaction is more powerful than algorithms (acm lib |
Topics |
Software engineering development process, teamwork |
Epigrams on programming by Perlis (acm library![]() Software paradigms by Kaisler (books24x7 via ur subscription ![]() Components, COTS(Lau editor, books24x7 ![]() Schuh's book on Agile development(books24x7 via ur subscription ![]() other material tbd |
Feb. 3, 5 |
The essence of programming languages (slides ![]() Scheme, actor model, Smalltalk |
Evolution of lisp by Steele and Gabriel (acm lib The early history of Smalltalk by Kay (acm lib |
Feb 23 |
Web 2.0 (slides Instant messaging systems (cont'd) |
Web 2.0 programming (van der Vlist et al. books24x7![]() |
Topics |
Web programming HTTP, XML, AJAX, CSS, RSS, Atom, SVG |
Beginning XML 4th Ed. by Hunter et al. (books24x7 via ur subscription![]() |