CMPE 276: Software Engineering
Instructor: Luca de Alfaro
Email: my_first_name@ucsc.edu (please include "CE276" in the subject line)
Location: 2:00-3:45, TTh, Baskin Engineering 156.
Office Hours: 3-4pm Mondays, or by appointment.
Class Wiki: https://dvlab.cse.ucsc.edu/cmpe276-06-wiki/
Project Meeting: Alternates between Mondays, 3-4pm, and Tuesdays, 4-5pm, E2 339A.
Next project meeting: Tuesday Nov 21, after class.
Next class: Alisa Neeman will talk about design patterns.
About this year's edition of CMPE 276
In this year's edition of CMPE 276, the principles of software engineering will be applied to the construction of an open-source, publicly-available piece of software. Although I don't want to give out the details of the software project before classes start, I can tell you that it is a fun project aimed at letting people cooperate, and share information, while on the go. You can think of a mix of social networking, mobility, wikis... that you can use even while on vacation! To find out more, attend the first class!
Homework Assignments
/Assignment 1, due Sunday, October 1.
/Assignment 2, due Tuesday, October 24. /Evaluations, due Tuesday, December 5.
Reading Material
A generally interesting book for the project
Software Engineering for Internet Applications, or the "SEIA" book.
Material Covered in Class
Lecture 3: requirement specification; see also D. Harel, Statecharts: A Visual Formalism for Complex Systems, Sci. Comput. Programming 8 (1987), 231-274.
Lecture 4: interfaces as types. See also an introductory paper on Ticc.
Verisoft, with slides, and POPL 97 and FMSD papers. Also see lectures 2, 3, 4 from a course given by Godefroid at Stanford.
BLAST: Powerpoint slides, paper on system software verification using BLAST.
The notes of my lecture on BLAST.
Eraser: a dynamic data race detector for multi-threaded programs conference version.
Failure-oblivious computing, eliminating buffer overflows by returning other values, fault acceptability, by M. Rinard and co-authors.
Class Organization and Grading
In this class, the students will develop a software project, following the entire sequence of steps from requirement discovery and analysis, to maintenance of a deployed system. Students will work in a team, and we will mimick some of the dynamics that goes on in a real medium-sized company trying to develop a product.
Students will have to turn in weekly assignments related to the project (such as requirement documents, software architecture plans, ...), as well as a final project with a full set of documentation. The weekly assigments will contribute 70% of the class grade, and the final project submission will contribute the remaining 30%.
Students will be evaluated both by the instructor, and by their fellow team-mates via regular evaluations - just like in a real company. Students who perform poorly in their role can be reassigned by the instructor to other roles - in fact, even students who perform great may be reassigned, to cover "staffing needs".
