Stanford University
Computer Science 349: Winter 2006 - 2007

Advanced Object-Oriented Programming

Overview | Details | Materials | Assignments | Exams | Project | Policies


Announcements

Overview

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. Another would be to study literature and software regarding some issue. 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. Collection Implementation: How to Achieve Predictable Performance
  4. Generic Programming and Templates
  5. The Software Development Process
  6. Design of Value Types
  7. Named Descriptions: Implementing Large Value Types
  8. Memory Management: Controlling Placement, Locality and Consumption
  9. Concurrency with Modular Object-oriented Programming
  10. Inheritance: When and Why Multiple Inheritance
  11. Naming, Directories and the Manager Pattern

Details

Lectures:
Monday and Wednesday 1:15 pm to 2:30 pm Gates 260
Instructor:
Evan Greenberg <first name dot last name at cs.stanford.edu>
Gates 440
(650) 723-9437
Office hours: Monday and Wednesday 3:00-4:00 PM or by arrangement through email, Gates 440
Teaching assistants:
none
Knowledge of CS 249 is recommended.
Units:
3 units
Course email list:
I was not planning to use one.
Grading:
45% project, 20% midterm exam, 20% final exam, 15% attendance & participation

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 249 chapters.

Chapter 10 - Introduction to CS349 pdf and postscript

Chapter 11 - Auditing pdf and postscript

Chapter 12 - Collection and Iterator Implementationpdf and postscript

Chapter 13 - Genericity, Templates and Generic Programming pdf and postscript

Chapter 14 - Process pdf and postscript

Chapter 15 - Value-Oriented Programming pdf and postscript

Chapter 16 - Type Structure of Programs pdf and postscript

Chapter 17 - Named Descriptions pdf and postscript

Chapter 18 - Concurrency pdf and postscript

Cheriton 19 - Memory Management pdf and postscript

Optional readings