CSE 332S: Object-Oriented Software Development Laboratory

Ruth Miller  
Office Hours: by appointment  
Contact Info: e-mail: ruth.miller@wustl.edu
Chris Gill  
Office Hours: by appointment  
Contact Info: e-mail: cdgill@wustl.edu
Message Board: We will also frequently read and respond to postings on the course message board (http://bb.wustl.edu/).

Spring 2015

This page is available through: http://classes.cec.wustl.edu/~cse332/
and through: http://www.cse.wustl.edu/~ruth.miller/courses/cse332/

Midterm Exam:
Thu Mar 5, during class time (10-11:30am for section 1, 11:30am-1pm for section 2) in McMillan (not McMillen) G052

Final Exam:
Thu Apr 30, 10:30am-12:30pm
Section 1: Lopata Hall 101
Section 2: Lab Sciences 250

TA Help Sessions:
Saturdays, 10:00 am - 12:00 pm, in Urbauer 218
Mondays, 6:00 pm - 8:00 pm, in Urbauer 218


  1. Course Description
  2. Prerequisites
  3. Times and Locations
  4. Message Board  (Click here to go directly to the message board.)
  5. Discussion/Studio Sessions
  6. Labs
  7. Coding Standards
  8. Textbooks and Other Resources
  9. Grading
  10. Cheating

Course Description

This course will expose you to the syntax, semantics, and standard libraries of the C++ language; to common C++ design and implementation idioms; and to many opportunities to apply the knowledge and idioms you learn through hands-on studio exercises and projects in C++.

All programming in this course will be done in C++, a language in which you can combine the object-oriented, procedural, and generic programming ideas with which you'll gain experience throughout the semester. Since many students enter this course with experience in Java but not C++, the early portion of the syllabus is designed to give you a breadth-first experience of the major capabilities and features of C++ and to assist your progress up the rest of the C++ learning curve. In addition to providing a reasonable coverage of the C++ language overall, this course also will focus on new features recently introduced to C++ and its libraries, particularly those from the C++11 standard.


Times and Locations

Discussions: Tuesdays and Thursdays 10am (Section 1) or 11:30 (Section 2) in Urbauer 218
Studios: Tuesdays and Thursdays after the discussion until the end of class.
Additional TA help sessions: times and locations TBA

The first class meeting will be on Tuesday January 13 in Urbauer 218. Following a presentation of the course structure and syllabus that day, we will also make sure each student's login works on the Windows machines in Urbauer 218, and address any problems that may occur.

After that introductory meeting, at each 90 minute class meeting on Tuesdays and Thursdays (except for the dates of the midterm and final reviews and exams), discussions will be held in Urbauer 218 and will consist of about 30 minutes of presentation and discussion of the main issues to consider for that day's topic, followed by a hands-on studio session for the remaining time that day in Urbauer 218. The review sessions prior to the midterm and final exams also will be held in Urbauer 218, but will occupy most to all of the session (and there will not be any studio exercises assigned on those days).

The instructors and teaching assistants will read and respond to postings on the course message board (http://bb.wustl.edu/).

Message Board

Please submit ALL questions, and concerns of public nature, to the class message board (http://bb.wustl.edu/). Please also answer other people's questions on the message board!

Please do not e-mail technical questions to your professor or teaching assistants individually: instead, please post on the message board for all to see, consider, and respond.

Please note that the message board is a vital part of your CSE 332 experience. Participation in the message board (i.e., quantity and quality of your posts) may be considered in your participation grade (and your completion and submission of studio exercises will be the baseline from which the participation grade is calculated).

If you have any trouble with your accounts, accessing blackboard and/or the course message board, etc., please let us know right away!

Discussion/Studio Sessions

The discussions and studio sessions will emphasize three main themes: C++ language syntax and semantics; procedural, object-oriented and generic programming techniques; and mastery of useful design, programming, and debugging techniques and tools.

In addition to class meeting dates and topics, assigned readings in the required textbook will be provided as we go through the semester.

Although the sequence of topics listed is a good guide to the course content overall, it may be adjusted somewhat as the semester progresses to emphasize, de-emphasize, or inter-relate certain topics depending on the progress and interests of the students in the course. If you are finding a given topic very easy or very difficult, please let your instructors know.

Date Topic Assigned Readings
Tue Jan 13

Lab 0
(assigned Tue Jan 13, due 11:59pm Tue Jan 27)
Course introduction and syllabus, C++ programs
(slides in ppt)

C++ program structure and development environment
(slides in ppt)
(studio exercises in pdf)
Thu Jan 15 C++ variables and basic data types
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 1, 2
Tue Jan 20 C++ strings, vectors, arrays, and IO
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 3 (and skim 8)
Thu Jan 22 C++ Expressions
(slides in ppt)
(studio exercises in pdf)
(files for studio: prefix_adder.h prefix_adder.cpp Makefile)
[LLM] Chap. 4
Tue Jan 27

Lab 1
(assigned Tue Jan 27, due 11:59pm Tue Feb 10)
C++ Statements
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 5
Thu Jan 29 C++ Functions (slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 6
Tue Feb 3 Classes
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 7
Thu Feb 5 IO Library
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 8
Tue Feb 10

Lab 2
(assigned Wed Feb 11, due 11:59pm Tue Mar 3)
Sequential Containers
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 9
Thu Feb 12 Generic Algorithms I
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 10
Tue Feb 17 Generic Algorithms II
(slides in ppt)
(studio exercises in pdf
Thu Feb 19 Associative Containers I
(slides in ppt)
(studio exercises in pdf
[LLM] Chap. 11
Tue Feb 24 Associative Containers II
(slides in ppt)
(studio exercises in pdf
Thu Feb 26 Review for Midterm Exam
(slides in ppt)
(sample questions in pdf:
note that this is NOT intended as a study guide, but rather as an
illustration of the kinds of questions we tend to ask in the exams in this course.
Tue Mar 3
Open Help Session
(time to work on labs and studios, no new material assigned)
Thu Mar 5
Midterm Exam
during class time (10-11:30am for section 1, 11:30am-1pm for section 2) in McMillan (not McMillen) G052
Fri Mar 6
Last day to submit studio exercises so far
for participation credit (deadline: 11:59pm)
Tue Mar 10 and Thu Mar 12
Spring Break (no classes)
Tue Mar 17

Lab 3
(assigned Mon Mar 16, due 11:59pm Sun Apr 5)
Object-oriented programming
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 15 (through section 15.6)
Thu Mar 19 Return and discuss graded midterm exams

Dynamic memeory
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 12
Tue Mar 24 Copy Control I (slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 13 (through section 13.4)
Thu Mar 26 Copy Control II (slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 13 (sections 13.5 and 13.6)
[LLM] Chap. 15 (sections 15.7 and 15.8)
Tue Mar 31 Overloaded operations and conversions (slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 14
Thu Apr 2 Templates and generic programming I
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 16
Tue Apr 7

Lab 4
(assigned Mon Apr 6, due 11:59pm Sun Apr 26)
Templates and generic programming II
(slides in ppt)
(studio exercises in pdf)
Thu Apr 9 Specialized library facilities
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 17
Tue Apr 14 Advanced Topics on Inheritance
(slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 18.3
Thu Apr 16 Advanced tools and techniques (slides in ppt)
(studio exercises in pdf)
[LLM] Chap. 19
Tue Apr 21 Semester summary and review for Final Exam
(slides in ppt)
Thu Apr 23
Open Help Session
(time to work on labs and studios, no new material assigned)
Fri Apr 24
Last day to submit studio exercises for
participation credit (deadline: 11:59pm)
Thu Apr 30
Final Exam 10:30am-12:30pm
Location Section 1: Lopata Hall 101
Section 2: Lab Sciences 250


There will be 5 lab assignments in this course. The labs will increase in difficulty and value throughout the semester.

Labs are to be submitted electronically, and will be graded and returned to you electronically as well. Each lab submission requires a separate ReadMe.txt file containing a lab report writeup. Each assigment web page will describe the procedure for submitting the lab, along with the report format and content requirements. Use of this process is required.

Labs 0, 1, and 2 are to be completed individually, though on labs 3 and 4 you will have the option of working in teams of 2 or 3 people. You should please submit your code and a lab report for each lab sufficiently ahead of its advertised due date and time (shown on the lab assignment web page) that normal e-mail delays etc. do not result in your lab being received late (according to the time stamp put on the e-mail by the CEC e-mail server used by the cse332 account).

Labs received within 24 hours after the posted deadline will be accepted with a 10% penalty up front, and labs submitted between 24 and 48 hours after the posted deadline will be accepted with a 20% penalty up front. Labs submitted after that will not be graded, except in the case of documented extenuating circumstances.

Extensions may be granted in advance on a case-by-case basis as long as the circumstances warrant an extension and the request is made sufficiently ahead of the deadline. Extensions will not be granted after the deadline except in very special cases (such as documented medical emergencies).

You may discuss general questions related your projects with other students, the TAs, and your instructors during studio hours. For additional help please contact your TAs or instructors. While you are encouraged to ask for help on particular problems you may encounter during a project, you must design and implement your own solutions, and prepare your own reports. In particular, while discussion of small code fragments related to specific questions is allowed and encouraged, direct sharing, viewing, or other "reuse" of complete code files (especially if done covertly) is strictly forbidden. If you're not sure whether or not sharing a given section of code is ok, please ask your instructors' permission before doing so.

The following labs have been assigned so far in the course:

Coding Standards

Many organizations impose coding standards on programmers, and these standards can range from general principles to very specific requirements. In this class, part of the grade for each programming assignment will be based on the CSE 332 Programming Guidelines, which are intended to build good programming habits that will help avoid common mistakes and help make your programs more readable and better organized and documented. As the course progresses, we'll point out relevant ones for each programming assignment, so please re-review it before starting each new programming assignment.

Textbooks and Other Resources

In addition to class meeting dates and topics, assigned readings in the following required textbook are shown for each of the class meetings:

In addition to the required textbook, the following texts may be useful and interesting additions to your programming library:

On-line information sources (please feel free to suggest other good ones):


As a rough guideline, 90-100 has historically been the A range, 80-89 the B range, and so on, though depending on the complete distribution the specific grade division points (and addition of + or - qualifiers to the grades near the boundaries) may vary.

For students taking the course pass/fail, a passing grade will be equivalent to a D or better in the course.

See the Labs section for a discussion of the labs and how they will be graded.

The midterm and final exams will be comprehensive: each potentially may cover any of the material up to that point in the course. The best way to study for the exams is to keep up with the studio exercises and programming assignments, and to ask lots of questions in the studio sessions throughout the semester.

The last grading component is an evaluation of your participation in the class, and of your application of the tools and techniques discussed in class and labs. This component is separated out to:

  1. broaden the evaluation criteria,
  2. reduce the weight of the exams a bit, and
  3. encourage active participation in discussions/studios.

Percentage completion of the studio exercises (including posting answers to them) will be used as the baseline for evaluating participation grades, though other factors such as attendance and engagement in discussion and studio sessions also may be considered if they differ significantly.

Labs 50 %
   Lab 0:  5 %
   Lab 1:  7 %
   Lab 2:  8 %
   Lab 3:  12 %
   Lab 4:  18 %
Midterm Exam 15 %
Final Exam 25 %
Participation   10 %


Cheating is the misrepresentation of someone else's work as your own, or assisting someone else in cheating, and will not be tolerated in this course.

For this course, examples of cheating include but are not limited to:

This is a very serious matter. Anyone found cheating will at a minimum lose points equal to the assigned value for the assignment in question (for example if an assignment were worth 10% of the course grade then -10% of the course grade would be assigned), or possibly receive an F for the course. Further action may be taken in extreme cases, possibly including referral to the School of Engineering and Applied Science's formal academic integrity review process.

Furthermore, our policy is that we will make the final determination on what constitutes cheating. If you suspect that you may be entering an ambiguous situation, it is your responsibility to clarify it before we detect it. If in doubt, please ask.

To ensure this policy is implemented consistently and fairly, and that any problems are detected and addressed as early as possible, we may make use of automated program similarity checkers to assess uniqueness and independence of submitted program solutions.