| Douglas C. Schmidt | David L. Levine | |
| Bryan 502 | Bryan 502C | |
| 935-4215 | 935-7538 | |
| Office hours: by appointment | Office hours: Tuesday, 12:00 pm - 2:00 pm |
| Department of Computer Science |
| School of Engineering and Applied Science |
| Washington University in St. Louis |
http://classes.cec.wustl.edu/~cs342/http://www.cs.wustl.edu/~levine/courses/cs342/
Contents
Please note that the newsgroup is a vital part of your CS342 experience. If you have trouble accessing it, please let us know right away!
Reading assignments are shown in brackets for each topic. The C++ reference and GoF are listed in the Textbooks section, below.
| 25 August (Wednesday) |
[C++ Reference, Ch. 1-4, 6-7, and 11] |
||
| 30 Aug - 1 September |
[C++ Reference, Ch. 1-9 and 11] (slides 1-24) |
[C++ Reference, Ch. 1-9 and 11] (slides 25-34) |
|
| 8 (no class Monday) |
[C++ Reference, Ch. 1-9 and 11] (slides 35-37) |
Introduction to Tools and Techniques Unix High-Level Overview | |
| 13 - 15 | C++ Objects [C++ Reference, Ch. 12-13](slides 1-16) |
C++ Objects [C++ Reference, Ch. 12-13](slides 17-27) |
|
| 20 - 22 | A Tour of C++, (cont'd) [C++ Reference, Ch. 1-9 and 11] (slides 39-70) |
A Tour of C++, (cont'd) [C++ Reference, Ch. 1-9 and 11] (slides 71-89,94) |
|
| 27 - 29 | [GoF, Ch. 1](slides 1-15) |
[GoF, Ch. 1] (slides 16-23) |
Debuggers |
| 4 - 6 October |
Introduction to Patterns [GoF, Ch. 1] (slides 24-48) |
Abstract
data types in C++ [C++ Reference, Ch. 14-15 and 17] (slizes 1-26) |
|
| 11 - 13 | Abstract
data types in C++ [C++ Reference, Ch. 14-15 and 17] (slides 27-61) |
Abstract
data types in C++ [C++ Reference, Ch. 14-15 and 17] (slides 62-73) |
|
| 18 - 20 | Abstract
data types in C++ [C++ Reference, Ch. 14-15 and 17] (slides 74-105) |
Pattern Case
Studies [GoF, Ch. 2-5, Appendix B] (slides 1-12) | Problem Solving and Reporting |
| 25 - 27 | Pattern Case
Studies [GoF, Ch. 2-5, Appendix B] (slides 13-38: Factory, Bridge, Adapter) | Pattern Case
Studies [GoF, Ch. 2-5, Appendix B] (slides 39-50) | Build control (make) CS 241 Using Simple Makefiles |
| 01 - 03 November |
I/O with C++ [C++ Reference, Ch. 20 and 32] (slides 1-20) |
Pattern Case
Studies (cont'd) [GoF, Ch. 2-5, Appendix B] (slides 51-71) | Source code control (RCS) Source code control (CVS) |
| 08 - 10 | Pattern Case
Studies (cont'd) [GoF, Ch. 2-5, Appendix B] (slides 72-123: Strategy, Facade, Singleton) | Pattern Case
Studies (cont'd) [GoF, Ch. 2-5, Appendix B] (slides 124-134: Factory Method) |
Static Diagnostic Tools (nm, size, strings, etc.) |
| 15 - 17 | Pattern Case
Studies (cont'd) [GoF, Ch. 2-5, Appendix B] (slides 135-151) |
C++ Inheritance [C++ Reference, Ch. 16-17] |
Dynamic diagnostic tools (ps, top) |
| 22 (no class Wednesday) |
C++ Inheritance [C++ Reference, Ch. 16-17] |
||
| 29 - 01 December |
More patterns: Observer, Memento, Command, Template Method, Composite [GoF, Ch. 5] |
Dynamic Binding and RTTI | The C++ Preprocessor [C++ Reference, Ch. 10] |
| 06 - 08 | Software design principles and concepts | The ACE Framework: C++ wrappers and Patterns | Scripting: sh Scripting: Perl |
| 13 - 20 | Review slides |
||
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 very relevant to C++ coding activities outside of ACE. Please feel free to submit suggestions for improvement to the ACE developers.
We'll use the required textbooks as references. The lecture schedule contains references to revelant portions of the required texts. Please read them before the class meeting.
Recommended texts:
Other information sources:
There will be a short, written quiz the end of each Wednesday's discussion/lecture. The quiz will focus on the material covered the preceding Wednesday (of the previous week) and Monday 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, 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 either the TAs or we detect it. If in doubt, please ask.
Lab: Lopata 400 (CEC SparcStation Lab)