| David L. Levine |   | Department of Computer Science |
|   | 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 |   |
http://classes.cec.wustl.edu/~cs342/www.cs/~levine/courses/cs342-s99/
Contents
Reading assignments are shown in brackets for each topic. The C++ Primer and GoF are referenced in the Textbooks section, below.
| 12 - 15 January |
|||
| 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++ 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 |
|||
| 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 | ||
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:
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.
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.
Recommended texts:
Other information sources:
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:
| Labs | 35 percent |
| Quizzes | 35 percent |
| Final exam | 20 percent |
| Participation; application of tools and techniques | 10 percent |
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.
Lab: Lopata 400 (CEC SparcStation Lab)