| David L. Levine | Christopher D. Gill | |
or by appointment |
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.
| 18 - 20 January |
||||
| C++ overview
(gzip-ps)
(pdf) [C++ Reference, Ch. 1-4, 6-7, and 11] Java vs. C++ summaries |
Software design principles and concepts (slides 1-19) (gzip-ps) (pdf) |
Introduction to Tools and Techniques
(gzip-ps)
(pdf) Problem Solving and Reporting (gzip-ps) (pdf) |
||
| 25 - 27 | Software design principles and concepts (slides 20-42) (gzip-ps) (pdf) |
Software design principles and concepts (slides 43-55) (gzip-ps) (pdf) |
||
| 1 - 3 February |
A Tour of C++ (selected slides)
(gzip-ps)
(pdf) [C++ Reference, Ch. 1-9 and 11] [C++ Reference, Ch. 12-13] |
Unix High-Level Overview (gzip-ps) (pdf) | ||
| 8 - 10 | Introduction to patterns (slides 1-23)
(gzip-ps)
(pdf) [GoF, Ch. 1] |
Introduction to patterns (slides 24-33)
(gzip-ps)
(pdf) [GoF, Ch. 1] |
||
| 15 - 17 | C++ Objects
(gzip-ps)
(pdf) [C++ Reference, Ch. 12-13] |
Introduction to patterns (slides 34-end)
(gzip-ps)
(pdf) [GoF, Ch. 1] |
Debuggers
(gzip-ps)
(pdf) Debugging Under Unix: gdb |
|
| 22 - 24 | Pattern Case Studies (slides 49-66)
(Strategy, Facade, Adapter, Singleton)
(gzip-ps)
(pdf) [GoF, Ch. 2-5, Appendix B] |
Pattern Case Studies (slides 67-95)
(Factory Method, Iterator)
(gzip-ps)
(pdf) [GoF, Ch. 2-5, Appendix B] |
||
| 29 - 2 March |
Pattern Case Studies (slides 96-121)
(Bridge, Factory)
(gzip-ps)
(pdf) [GoF, Ch. 2-5, Appendix B] |
Abstract data types in C++ (slides 1-28)
(gzip-ps)
(pdf) [C++ Reference, Ch. 14-15 and 17] |
Build control (make) (gzip-ps) (pdf) | |
| 7 - 9 | ||||
| 14 - 16 | Abstract data types in C++ (slides 29-45)
(gzip-ps)
(pdf) [C++ Reference, Ch. 14-15 and 17] Lab 6, Observable Sort (gzip-ps) (pdf) |
Source code control (RCS (gzip-ps) (pdf)/CVS (gzip-ps) (pdf)) | ||
| 21 - 23 | Abstract data types in C++ (slides 45-98)
(gzip-ps)
(pdf) [C++ Reference, Ch. 14-15 and 17] |
C++ Inheritance (slides 1-59)
(gzip-ps)
(pdf) [C++ Reference, Ch. 16-17] |
Static Diagnostic Tools (nm, size, strings, etc.) (gzip-ps) (pdf) | |
| 28 - 30 | C++ Inheritance (slides 60-76)
(gzip-ps)
(pdf) [C++ Reference, Ch. 16-17] |
Pattern Case Studies
(Bridge, Factory)
(gzip-ps)
(pdf) [GoF, Ch. 2-5, Appendix B] Memento (gzip-ps) (pdf) | Dynamic diagnostic tools (ps, top) (gzip-ps) (pdf) | |
| 4 - 6 April |
C++ Performance Issues
(gzip-ps)
(pdf) I/O with C++ (gzip-ps) (pdf) [C++ Reference, Ch. 20 and 32] |
Command, Decorator, Composite
(gzip-ps)
(pdf) [GoF, Ch. 4] |
Scripting: sh (gzip-ps) (pdf) | |
| 11 - 13 | STL
(gzip-ps)
(pdf) [GoF, Ch. 5] |
|||
| 18 - 20 | The C++ Preprocessor
(gzip-ps)
(pdf) [C++ Reference, Ch. 10] |
The ACE Framework: C++ wrappers and Patterns (slides 1-21) (gzip-ps) (pdf) | Scripting: Perl (gzip-ps) (pdf) | |
| 25 - 27 | The ACE Framework: C++ wrappers and Patterns (slides 22-55) (gzip-ps) (pdf) | Review for Final Exam (gzip-ps) (pdf) | ||
| 9 May | ||||
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 email turn-in process
(via make) also submits your code for grading. Use of this
process is required.
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:
gdb tutorial
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 | 40 percent Lab 1: 2 percent Labs 2 through 7: 5 percent each Lab 8: 8 percent |
| Quizzes | 35 percent |
| Final exam | 20 percent |
| Participation; application of tools and techniques | 5 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)