Stanford University
Computer Science 249B: Winter 2009

Advanced Object-Oriented Programming

Overview | Details | Materials | Exams | Project | Policies

Announcements

Course

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 handle often 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.

The objectives of the course are to:

Students are expected carry out a 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 will include a report. There will also be an midterm and a final exam. Students are also expected to attend and participate in class.

The following is the basic syllabus:

  1. Introduction to Part II: Process, People and Practice
  2. Audit: Integrating Invariant Checks with Production Software
  3. Named Descriptions: Implementing Large Value Types
  4. Concurrency with Modular Object-oriented Programming
  5. Collection Implementation: How to Achieve Predictable Performance
  6. Generic Programming and Templates
  7. The Software Development Process
  8. Design of Value Types
  9. Memory Management: Controlling Placement, Locality and Consumption
  10. Inheritance: When and Why Multiple Inheritance

Details

Lectures:
Tuesday and Thursday 11:00 am to 12:15 pm Gates 260
Section:
Announced as needed.
Instructor:
David Cheriton <cheriton@cs.stanford.edu>
Gates 439
(650) 723-1131
Office Hours:Tuesday and Thursday 1:30-2:30pm or by arrangement through email, Gates 439
Teaching assistants:
Nick Dovidio <ndovidio@stanford.edu>
Office Hours: Monday: 9:00am-11:30am and Tuesday: 9:30am-11:00am in Gates B26. Phone: (650)736-1817. Also by appointment.
Prerequisites:
Knowledge of CS 249A is recommended.
Units:
3 units
Course staff email list:
cs249b-win0809-staff
Midterm Information
The midterm is scheduled for Thursday 2/12/09 from 6:45-8:15pm in Gates B12.
Grading (Tentative):
15% Midterm, 30% Final, 55% Project
Schedule (All due dates are midnight unless otherwise stated)
1/20/09: Project Proposal.
1/22/09-1/23/09: Significantly extended office hours will be held to dicuss project proposals.
2/5/09: Milestone due.
2/6/09: Midterm Review in Gates 400, 1:15-2:00.
2/12/09: Midterm Exam: 6:45-8:15pm in Gates B12.
3/16/09: Monday March 16: Final exam 3:30pm-6:30pm in HERRINT195.
3/17/09: Project Demo.

Materials

Required reading

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.

N. Leveson, High-pressure Steam Engines and Software Engineering

Chapter 10 - Introduction to Part II pdf and postscript

Chapter 11 - Auditing (Updated) pdf and postscript

Chapter 12 - Named Descriptions (Updated) pdf and postscript

Chapter 13 - Concurrency (Updated) pdf and postscript

Chapter 14 - Collection and Iterator Implementation (Updated) pdf and postscript

Chapter 15 - Genericity, Templates and Generic Programming (Updated) pdf and postscript

Chapter 16 - Value-Oriented Programming and Value Types (Updated) pdf and postscript

Chapter 17 - Memory Management (Updated) pdf and postscript

Chapter 18 - Object-Oriented Programming and the Object Model (Updated) pdf and postscript

Chapter 19 - Process / Chapter 20 - Concluding Summary pdf and postscript

Files

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.

Optional readings

Interesting articles


Project

Please take a look at the detailed project page.

Policies

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.

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.

Incomplete policy

No incompletes will be given in this course, so make sure you determine before the drop deadline whether you can complete it satisfactorily.