CS E71 342S: Object-Oriented Software Development Laboratory

David L. Levine   Department of Computer Science
levine@cs.wustl.edu   School of Engineering and Applied Science
Bryan 502C, 935-7538   Washington University in St. Louis
Office hours: Tuesday and Thursday, 2:00 pm - 3:00 pm  

This page is available through: http://classes.cec.wustl.edu/~cs342/
Or, at: www.cs/~levine/courses/cs342-s99/

 


Contents

  1. Course Description
  2. Prerequisites
  3. Assistants
  4. Newsgroup
  5. Discussions/Lectures
  6. Labs
  7. Coding Standards
  8. Textbooks
  9. Grading
  10. Cheating
  11. Times and Locations


Course Description

Intensive focus on practical aspects of designing, implementing, and debugging object-oriented software. Topics covered include reusing design patterns and software architectures and developing, documenting, and testing representative applications using object-oriented frameworks and C++. Design and implementation based on design patterns and frameworks are the central themes to enable the construction of reusable, extensible, efficient, and maintainable software.


Prerequisites


Assistants


Newsgroup

Please submit questions, and concerns of public nature, to the class newsgroup. Feel free to answer other people's questions on the newsgroup!


Discussions/Lectures

The discussions/lectures will emphasize three broad topics: object-oriented programming with C++, successful use of patterns and frameworks, and familiarity with useful programming tools and techniques. In general, these may be considered three separate tracks within the course. The examples and labs tie them together.

Reading assignments are shown in brackets for each topic. The C++ Primer and GoF are referenced in the Textbooks section, below.

Date
OO Programming with C++
Patterns and Frameworks
Tools and Techniques
12 - 15
January
Course Introduction
C++ overview
[C++ Primer, Ch. 1-5]
Introduction to patterns
[GoF, Ch. 1]
Introduction to Tools and Techniques,
Problem Solving and Reporting
19 - 22 A Tour of C++
[C++ Primer, Ch. 1-5]
26 - 29
C++ Objects
[C++ Primer, Ch. 8]
02 - 05
February
C++ Objects, wrapup
[C++ Primer, Ch. 1-5,8]
Introduction to patterns (cont'd)
[GoF, Ch. 1]
 
09 - 12 A Tour of C++ (cont'd)
[C++ Primer, Ch. 6,10,16]
Pattern Case Studies
[GoF, Ch. 2-5, Appendix B]
(slides 1-33: Factory, Bridge)
Debuggers
16 - 19 Abstract data types in C++
[C++ Primer, Ch. 6]
(slides 1-20)
Pattern Case Studies
[GoF, Ch. 2-5, Appendix B]
(slides 34-56: Adapter)
Build control (make)
23 - 26 Abstract data types in C++
[C++ Primer, Ch. 6]
(slides 21-52)
Pattern Case Studies
[GoF, Ch. 2-5, Appendix B]
(slides 57-95: Facade, Strategy,
Singleton, Double-Checked Locking)
Source code control (RCS)
02 - 05
March
No class: Spring Break
09 - 12 Abstract data types in C++ (cont'd)
[C++ Primer, Ch. 6]
(slides 53-79)
Pattern Case Studies (cont'd)
[GoF, Ch. 2-5, Appendix B]
(slides 101-132: Iterator, Factory Method)
Source code control (CVS)
16 - 19 Abstract data types in C++ (cont'd)
[C++ Primer, Ch. 6] (slides 80-105)
C++ Inheritance
[C++ Primer, Ch. 17] (slides 1-24)
Pattern Case Studies (cont'd)
[GoF, Ch. 2-5, Appendix B]
(slides 133-151: Iterator, Factory Method)
Memento
[GoF, Ch. 5]
Unix High-Level Overview
23 - 26 C++ Inheritance
[C++ Primer, Ch. 17-18] (slides 25-51)
Lab 6 Intro slides.
Observer [GoF, Ch. 5] Static Diagnostic Tools (nm, size, strings, etc.)
30 - 02
April
C++ Inheritance
[C++ Primer, Ch. 17-18] (slides 52-76)
Command, Template Method (slides 1-17)
[GoF, Ch. 5]
Dynamic diagnostic tools (ps, top)
06 - 09 I/O with C++
[C++ Primer, Ch. 20]
Decorator, Composite (slides 18-35)
[GoF, Ch. 4]
The C++ Preprocessor
[C++ Primer, Sec. 1.3]
13 - 16 Software design principles and concepts (slides 1-19) The ACE Framework: C++ wrappers and Patterns Scripting: sh
20 - 23 Software design principles and concepts (slides 20-52) Scripting: Perl
27 Review for Final Exam
Final Exam: Lopata 101, Thursday 29 April, 1030-1230


Labs

There will be 7 lab projects. Labs are turned in via email. Each lab assigment contains the procedure for turning in the lab. Labs will be due approximately every two weeks; the exact due date is contained in each lab description.

Each lab requires a short ``lab report''. The report does not have to have great detail. Actually, the shorter the report, the better, as long as it is complete. The actual report will be submitted via email, as well, so it must go into a file.

The lab report must contain:

  1. Introduction: state the problem and what you expect to find. State how you planned to reach your solution.
  2. Evaluation criteria: state how you will evaluate your solution (this must be done before you implement your solution).
  3. Test results: a brief summary of how your program meets the evaluation criteria.
  4. Conclusions: what did you learn from this lab.
Each student must turn in their own lab report for each project. Even if you don't complete your solution, please prepare your lab report in a timely matter. In general, late lab reports will not be accepted; wrap it up as best you can and move on.

You may discuss your projects with other students only in the lab, during lab hours. Each student must design and implement their own solution, and prepare their own report.


Coding Standards

Many organization impose coding standards on programmers. These standards can be very strict. In this class, the most important standard is to be consistent. As the course progresses, we'll suggest (at least :-) specific coding guidelines that must or should be followed.

If you'd like to look at some coding standards, the guidelines that the ACE developers use is a good place to start. It's concise, and for the most part relevant to C++ coding activities outside of ACE. Please feel free to submit suggestions for improvement to the ACE developers.


Textbooks

Required texts:

Recommended texts:

Other information sources:


Grading

The current grade chart shows the grades of everyone in the class, without names of course. Knowing a few of your grades should allow you to find yourself in the chart. As a rough guideline, 90-100 can be considered to be an A, 80-89 a B, and so on.

There will be a short, written quiz the end of each Thursday's discussion/lecture. The quiz will focus on the material covered the preceding Thursday and Tuesday in class, but may draw upon material covered in previous weeks. The lowest quiz score for the semester will be dropped.

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

The final exam will be comprehensive, and roughly proportioned to cover each of the three tracks in the course. The best way to study for the final is to keep up with the work during the semester.

The final grading component is an evaluation of your participation in the class, and an evaluation of the 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 final exam a bit, in case you have a bad day, and
  3. encourage active participation in discussions/lectures, labs, and on the newsgroup.

Labs 35 percent
Quizzes 35 percent
Final exam 20 percent
Participation; application of tools and techniques 10 percent


Cheating

Please see the WU Association of Graduate Engineering Students (AGES) statement of Academic Integrity. In addition, I fully agree with Professor Kwasny's statement on cheating:

Cheating is the willful misrepresentation of someone else's work as your own, and will not be tolerated in this course. Specific examples include, but are not limited to, submitting work identical to someone else's, submitting part or all of a programming assignment identical to someone else's, or using unapproved sources of information, e.g., notes, textbook, your neighbor's exam, etc., during a quiz or exam. This is a serious matter. Anyone found cheating will receive an F for the course. Further action may be taken in extreme cases.

Furthermore, my policy is that I 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 to me before either the TAs or I detect it. If in doubt, please ask.


Times and Locations

Discussions/Lectures: Lopata 101, Tuesday and Thursday, 11:30 am to 1:00 pm.

Lab: Lopata 400 (CEC SparcStation Lab)