CSC 290A: Collaborative Software Engineering, Spring 2009

Course Description

This experimental course teaches principles and practices of collaborative software development. The topics include fundamentals of programming (more for organizing information than for managing computers), software engineering, scalable information systems, and current practice and tools for teamwork and virtual collaboration. The assignments are a series of individual and group programming projects designing software interacting through the Web.

Instructor, Office Hours, and Grading

Instructor: Chen Ding, Prof.

Teaching assistant: Konstantinos (Kostas) Menychtas

Lectures: Tuesdays 9:40-10:55am in CSB 601 and Thursdays 11.05am-12.20pm in CSB 632.

Office hours: Ding, Fridays, 10am to 11am or by appointment, CSB Rm 710, x51373. Kostas, Fridays 4pm to 6pm, or by appointment, CSB Rm 626

Grading: total 100%

  • Written assignments account for 20% of your total grade
  • Programming assignments account for 80% of your total grade
    • 40% for individual projects
    • 40% for team projects

Class Schedule and Reading Material

Lecture Topic Reading

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, modest image/sound quality and limited playback control)
"Can't be built", by Gabriel (ieee library)

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, another by Cooper from books24x7 through ur subscription)

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, reference book for Scheme/general programming, use PLT Scheme)

Feb. 3, 5

The essence of programming languages
(slides)

Scheme, actor model, Smalltalk

Evolution of lisp by Steele and Gabriel (acm lib, read 2.8, 2.10, 3.5 at least)

The early history of Smalltalk by Kay (acm lib)

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 mythical man-month (acm lib, slides)
block, proc, and lambda in Ruby web post by Bendersky

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
Lazy list (by Frank)
Local wiki page on svn (VersionStuff)
In class demos by Kelsey

Feb. 17

Software design (cont'd)

Lazy data structure and memoization (cont'd)

Why interaction is more powerful than algorithms (acm lib)

Feb 19

HTTP, CGI programming
(slides)

Instant messaging systems
(slides)

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)

Feb 23

Web 2.0 (slides)
XHTML, CSS, Java Script, Ajax

Instant messaging systems (cont'd)

Web 2.0 programming (van der Vlist et al. books24x7)

Feb 25

Object vs. class
(slides)

Web 2.0 (cont'd)
XSLT (slides)

Self language (talk and paper by Smith and Unger, acm library)

Mar 3

Design patterns
(slides)

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, Chapter 5 of Garland and Anthony, books24x7)

Mar 5

Mid-term exam
(Hylan 301)

 

The rest of March

Design patterns in Ruby


observer, composite, iterator, command, adapter, proxy, decorator patterns
(slides)
Design patterns in Ruby by Olsen (safari on-line via ur subscription)

April 2

Software development processe


(slides)
Schuh's book on Agile development(books24x7 via ur subscription, read Chapter 3)
Legacy of Agile development (material from Construx)

April 7, 14

Chat-room project report

project page

April 9, 16

Design patterns

singleton, factory, builder

Complex patterns
interpreter, domain-specific language, meta-programming, configuration
(slides)

Design patterns in Ruby by Olsen (safari on-line via ur subscription)

April 21, 23, 27

Chat-room project report

project page

Written and Programming Assignments

Class Collaboration and Help

Use the power of the wiki to collaborate and help each other - Edit or Add content to the following pages as you wish:

  • Question and Answers: Post questions and answers on anything concerning the class.
  • Tools: Information about tools we are going to be using.
  • External Resources: Links to useful resources not falling in the previous categories.
  • TWiki-related: Formatting hints and conventions we follow for the class TWiki pages
Edit | Attach | Watch | Print version | History: r46 < r45 < r44 < r43 < r42 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r46 - 2009-04-20 - ChenDing
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding URCS? Send feedback