Stanford University
Computer Science 249a: Fall 2009
Object-Oriented Programming from a Modeling and Simulation Perspective
Overiew
| Details
| Materials
| Assignments
| Exams
| Project
| Policies
Announcements
11/13/2009 - Assignment 3 review slides have been posted under Materials.
11/10/2009 - Assignment 3 has been released. There will be a review session discussing the assignment this Friday, November 13, at 3:15 in Gates B01.
11/3/2009 - Midterm grading rubric have been posted under Materials.
10/23/2009 - Midterm review slides have been posted under Materials.
10/21/2009 - Three sample midterms have been posted under Materials.
10/16/2009 - Assignment 2 review slides have been posted under Materials.
10/13/2009 - Assignment 2 has been released.
9/26/2009 - Some bugs in Assignment 1 have been fixed. Please download the new files.
9/25/2009 - Review session slides have been posted under Materials.
9/24/2009 - Exam dates have been posted under Exams.
9/22/2009 - Assignment 1 description released. It is due Monday, October 12, at 11:59 PM. A review session will be held on 25 Sept. (Friday) 3:15-4:05pm at Gates B01 to discuss the assignment.
9/18/2009 - Welcome to Computer Science 249a. The first day of class is Tuesday September 22, 2009 from 11:00 until 12:15.
Classes will be held in ** Skillings 193 **. Note: Lecture venue has changed!!
This course examines object-oriented programming techniques and issues,
emphasizing programming as modeling and simulation. We will explain the role of
programming conventions, style and restrictions in surviving object-oriented programming
for class libraries and programming-in-the-large.
The objectives of the course are to:
- inform students of the issues involved in developing large-scale object-oriented
software systems;
- teach how programming style conventions and language restrictions can ease
object-oriented software development; and
- provide students with insight into class library interface design.
Students will design and implement a simulation in C++ in several stages, applying
the techniques covered in the course. Students may also elect to do a project.
There will be an in-class midterm and a final exam.
For more background information, see the email sent out to
advertise the course last year.
- Lectures:
- Tuesday and Thursday, 11:00AM-12:15 PM, Skillings 193 and broadcast on SCPD)
- Review sessions:
- Friday 3:15-4:05 PM Gates B01 (when scheduled, also available on SCPD)
- Instructor:
- Prof. David Cheriton
<cheriton@cs.stanford.edu>
Gates 439
(650) 723-1131
Office hours: Tuesday and Thursday: 1:30-2:30 in Gates 439 and by appointment.
- Teaching assistants:
- Michael Chan
<mcfchan@stanford.edu>
Gates B24B
(650) 736-1816
Office hours: Monday 4:00-6:00, Thursday 12:15-2:15 in Gates B24B
- David Pursell
<dpursell@stanford.edu>
Gates B24B
(650) 736-1816
Office hours: Tuesday 12:15-2:15, Wednesday 12:00-2:00 in Gates B24B
- Prerequisites:
- Knowledge of C and basic programming methodology as developed in CS 106B or 106X,
107, basic knowledge of C++. CS 193D is recommended.
- Units:
- 3 (with optional project: 4 or 5)
- Instructor/TA email address:
- Send email to cs249a-aut0910-staff@lists.stanford.edu.
Whoever sees your email first will respond to it.
- Course email list:
- Only urgent announcements will be sent to the course email list.
You will be subscribed to this list automatically after you add the course to your study
list in Axess.
- Newsgroup:
- You are welcome and encouraged to use the su.class.cs249a
newsgroup to ask questions or discuss issues
with the entire class. Questions posted here will be responded to within 24 hours.
The Stanford news server is accessible only from within the stanford.edu domain. To
access the newsgroup from outside, please SSH to one of the
pod workstations and use
tin, trn or pine to subscribe to the newsgroup. Further instructions can be found at: Connecting to Stanford Usenet Newsgroups.
- Grading:
- 40% assignments, 15% midterm, 45% final exam.
Required Readings
- Chapter 1: Software Husbandry and Software Development pdf ps
- Chapter 2: Attribute-based Interface Design pdf ps
- Chapter 3: Events, Notifications, and Callbacks pdf ps
- Chapter 4: Objects: Entities, Values, and Descriptions pdf ps
- Chapter 5 and 6: Reference and Resource Management with Smart Pointers and Garbage Collection pdf ps
- Chapter 7: Exceptions and Exception Handling pdf ps
- Chapter 8: Naming, Introspection, and Modules pdf ps
- Chapter 9: Inter-Object Relationships: Components to Dynamic
Discovery pdf ps
Review Slides
Sample Midterms
We won't be posting solutions to the midterms, as all of the needed information can be found in the class readings. If you have a question, you are welcome to email the TAs or come to office hours.
Sample Finals
Optional readings
- Last year's offering of CS249
- Appendix A: Introduction to C++ pdf ps
- Appendix B: C++ Programming Style pdf ps
- Booch, Object-Oriented Analysis and Design With Applications, Addison-Wesley,
1994, ISBN: 0-805-35340-2
- Cargill, C++ Programming Style, Addison-Wesley, 1992, ISBN: 0-201-56365-7
- Eckel, Thinking in C++ html
- Ellis, Annotated C++ Reference Manual, Addison-Wesley, 1990, ISBN: 0-201-51459-1
- Lippman, C++ Primer, Addison-Wesley, 1998, ISBN : 0-201-82470-1
- Meyer, Object-Oriented Software Construction, Prentice Hall, 2000,
ISBN: 0-13-629155-4
- Meyers, Effective C++: 50 Specific Ways to Improve, Addison-Wesley, 1997,
ISBN: 0-201-92488-9
- Stroustrup, Design and Evolution of C++, Addison-Wesley, 1994,
ISBN: 0-201-54330-3
Interesting articles
Example code
Lecture slides
- Assignment 1
- Due: Monday, October 12, 11:59 PM.
Review Session: Friday, September 25th. 3:15-4:05 in Gates B01. Also broadcast on SCPD.
- Assignment 2 (Group) (Individual)
- Due: Monday, November 9, 11:59 PM.
Review Session: Friday, October 16th. 3:15-4:05 in Gates B01. Also broadcast on SCPD.
- Assignment 3
- Due: Monday, November 30, 11:59 PM.
Review Session: Friday, November 13th. 3:15-4:05 in Gates B01. Also broadcast on SCPD.
Collaboration
We expect the programming assignments to be done individually. This may
seem odd since the techniques and approaches covered in this course are
useful for team projects. However, we want to ensure a uniform experience
for all students, i.e. to avoid the usual situation in team projects where
one student does the bulk of the work and the others make only a minor
contribution.
Of course you are permitted and encouraged to discuss design strategies with
one another, but there should be no sharing of code or header files, and all
assistance (other than from the TA or instructor) must be cited. See this
link for
more
detailed explanation of what is permitted and what is not.
Working on assignments
You may work on the assignments on any Unix machine with a modern C++ compiler and
debugger. But since we will evaluate your assignment on one of the pod machines in
the Terman Hall computer cluster, we strongly recommend that you develop and test your code on one of these machines.
You should receive an additional 100 MB of disk quota on your afs drive within two days after registering for the course in Axess.
Email us if the extra quota proves insufficient.
Midterm: Monday, October 26, 7pm-8:15pm (Venue: Bldg. 200 Rooms 303, 305)
Make-up midterm: Wednesday, October 28, 2pm-3:15pm (Venue: Gates 463a)
Final: Monday, December 7, 3:30-6:30pm (Venue: Skilling Auditorium - right below the classroom)
Exams are closed book, closed notes. Remote SITN/SCPD students may take the exams at
their company sites; please have your local tutor send us email to make arrangements.
The project option associated with this class has been discontinued, due partially to administrative and scheduling problems. If you wish to pursue a project using the techniques discussed in CS249a, you are encouraged to take CS249b in the winter, also taught by Prof. Cheriton, which will have a project component.
Late assignment policy
Assignments submitted past the due date will be accepted and will be penalized 10% for each 24-hour period (including weekends).
Since lectures are made available via SCPD
on the same day they are taped, SITN/SCPD students are expected to follow the same schedule
as the rest of the class. This means that the above late assignment policy applies to
SITN/SCPD students as well; exceptions are not granted due to students' work obligations.
Honor code
It should go without saying, but because computer science project courses have a long
and ugly history of honor code violations, we will say it anyway:
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.
(This section is based on a handout for CS 244A.)
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.