CSC 290 Collaborative software engineering

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.

Class schedule and reading material (last updated 9-Jan-09) NEW

Lecture Topic Reading

Jan. 15

Introduction to complexity

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

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

Lambda calculus

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

Closures, actors

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

in February

Design patterns
creational, behavioral, structural patterns, UML
Design patterns by Lasater (books24x7 via ur subscription)
UML (Chapter 14 of Kak, books24x7, Chapter 5 of Garland and Anthony, books24x7)

in February

Programming tools
libraries, source browsing, version control, module systems, virtual machines
Open source development with CVS, 2nd Ed., Fogel & Bar (books24x7 via ur subscription, Chapters 2, 6, 9)
diet libc by von Leitner (an entertaining presentation, see also Chapter 13 of von Hagen's GCC book at book24x7)
Java virtual machine (Chapter 1 of Spell, books24x7, Chapter 14 of Meyers, books24x7)
other material to be posted

in March

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, read Chapter 1)
Schuh's book on Agile development(books24x7 via ur subscription, read Chapter 3)
other material tbd

in March

Web programming
Beginning XML 4th Ed. by Hunter et al. (books24x7 via ur subscription, Chapters 13, 22)

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

Example programs

Show IP address shows the IP address of the client computer. The program has 15 lines of code.
Web-based hashtable allows anyone to insert key and value pairs from one computer and retrieve them from any other computer. The usage is as follows
  • to insert:
  • to query:

The program has 159 lines of code. The core is about 40 lines, and the rest is producing timing information such as the date/time of the insertion and the oldest entry in the table.

The table has a maximal size. Oldest entries are removed if the table becomes too large. Don't store anything that you cannot afford to lose!

Source code The source code is currently under svn and can be checked out from /p/compiler/repos/dingweb. The programs are written in Ruby.

Work in progress (restricted access)

Edit | Attach | Watch | Print version | History: r46 | r8 < r7 < r6 < r5 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r6 - 2009-01-09 - ChenDing
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding URCS? Send feedback