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 NEW

Lecture Topic Reading

Jan. 15

Introduction to complexity

programming, design, collaboration

The profession of IT 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)

Tuesdays
in February

Design patterns
creational, behavioral, structural patterns, UML
Design patterns by Lasater(books24x7 via ur subscription)

Thursdays
in February

Programming tools
source browsing, version control, module systems
handouts, in-class notes, and on-line material to be posted

Tuesdays
in March

Software engineering
development process, teamwork
handouts
Schuh's book on Agile development
(books24x7 via ur subscription, read Chapter 3)

Thursdays
in March

Web programming
HTTP, XML, AJAX, CSS, RSS
Web 2.0 programming, by van der Vlist et al. (books24x7 via ur subscription, read Chapter 1)
RSS programming, by Ayers and Watt (books24x7 via ur subscription, read Chapter 21)

classes
in April

Large-scale systems

Is computer science science by Denning(acm lib)
Epigrams on programming by Perlis (acm library)

Example programs

Show IP address http://betaweb.csug.rochester.edu/cs290/dingweb/show-my-ip-address.cgi shows the IP address of the client computer. The program has 15 lines of code.
Web-based hashtable http://betaweb.csug.rochester.edu/cs290/dingweb/show-my-ip-address.cgi 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: http://betaweb.csug.rochester.edu/cs290/dingweb/hashtable.cgi?k=key&v=val
  • to query: http://betaweb.csug.rochester.edu/cs290/dingweb/hashtable.cgi?k=key

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 | r7 < r6 < r5 < r4 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r5 - 2009-01-08 - ChenDing
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding URCS? Send feedback