Stanford University
Computer Science 249B: Winter 2011
Overview | Details | Materials | Exams | Project | Policies
Additionally, please begin to brainstorm ideas for your class project. We ask that you have a written proposal by Thursday, January 20. Please see the Projects page for details. You may choose to work both individually and in groups of 2. Groups of 3 may be allowed in some circumstances. Please note that the size and depth of your project should scale with the size of your group.
This course examines the grand challenge of producing "perfect software systems" or more modestly stated, how to produce really, really, good software. The next stage of evolution of software engineering is producing large-scale systems that manage critical infrastructure and in some cases, life-critical systems. How do we produce really high-quality software at a reasonable cost, software that does what it is supposed to do at a reasonable cost, and that can evolve to meet changing requirements and circumstances, and the behaves sensibly under overload conditions.
The objectives of the course are to:
Students are expected carry out a software development project that explores some aspect of the course. One possibility is developing a software system that explores some aspect of the structuring and practice discussed in the course. The project includes a report. There is a midterm and a final exam on the material covered in lectures. Students are also expected to attend and participate in class.
The following is the basic syllabus:
The course reader will be provided in PDF online in advance of the lectures. These are chapters that continue on from the CS 249A chapters. We keep the prior years readings as a reference for students to read ahead. As we update the reader for this year, we will mark the reading as updated.
Chapter 11 - Introduction (Updated) pdf and postscript
N. Leveson, High-pressure Steam Engines and Software Engineering
Chapter 12 - Audit (Updated) pdf and postscript
Chapter 13 - Named Descriptions (Updated) pdf and postscript
Chapter 14 - Concurrency (Updated) pdf and postscript
Chapter 15 - Collection and Iterator Implementation (Updated) pdf and postscript
Chapter 16 - Genericity, Templates, and Generic Programming (Updated) pdf and postscript
Chapter 17 - Value-Oriented Programming (updated) pdf and postscript
Chapter 18 - Memory Management (updated) pdf and postscript
Chapter 19 - OOP and the Object Model (updated) pdf and postscript
Chapter 20 - Type Structure and RTTI (Updated) pdf and postscript
Chapters 21 and 22 - Process and Conclusion (Updated) pdf and postscript
If you are interested in using the framework interfaces and classes discussed in cs249A for your project, they can be found here. These are the files used for the first homework assignment in cs249A. You will want to look inside of Tissue-HW.tar for the framework classes.
Files specific to cs249b can be found here: cs249b Files.
Please take a look at the detailed project page.
The honor code is to be followed and shall be enforced. In particular:
The Stanford honor code applies to all work done in this course. All work you submit must be your own. Suspected violations of the honor code will be investigated and referred to the Office of Judicial Affairs. The university requires faculty to investigate and refer suspected violations as part of their responsibility under the honor code.
Honor code violations are a serious matter, and being found guilty of one can ruin your academic career. Review the honor code. If you ever find yourself uncertain about how it applies to your situation, ask. Asking what you might think is a silly question is better than risking your career.
No incompletes will be given in this course, so make sure you determine before the drop deadline whether you can complete it satisfactorily.