| Professor: | Chris Gill |
| Office Hours: | Cupples II 300 (Studio/Lab Area) Wed 1-5pm, or Bryan 506 by appointment |
| Contact Info: | phone: (314) 935-7538 e-mail: cdgill@cse.wustl.edu |
| Message Board: | I will also frequently read and respond to postings on the course message board (http://classes.engineering.wustl.edu/cse332/bb). |
http://www.cse.wustl.edu/~cdgill/courses/cse332/
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.
There will not be a lab session on Wednesday August 26, and the first class meeting will be at 10am on Thursday August 27, in Cupples II 217. Following a presentation of the course structure and syllabus that day, you will head upstairs to the Cupples II 300 attic studio space to make sure your login works on the Windows machines there, or to address any problems that may occur.
After that introductory meeting, each 90 minute class meeting on Tuesdays and Thursdays (except on Oct 15 and 20 and Dec 8 when the midterm review, midterm exam, and semester review will be held respectively) will consist of 30 minutes of presentation and discussion (in the Cupples II 217 classroom) of the main issues to consider for that day's topic, followed by a hands-on studio session (in the Cupples II 300 attic studio space) for the remaining 60 minutes that day.
Lab sessions, during which you will have dedicated time and our assistance for working on your lab assignments, will be held on Wednesdays from 1-3pm and 3-5pm in the Cupples II 300 attic studio space.
The teaching assistants will be available during the scheduled studio and lab sessions, to answer questions about the programming assignments and to offer advice as you develop and debug your solutions.
The professor and teaching assistants will read and respond to postings on the course message board (http://classes.engineering.wustl.edu/cse332/bb).
Please do not e-mail technical questions to your professor 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) will count toward your participation grade.
If you have trouble accessing the message board, please let us know right away!
In addition to class meeting dates and topics, page numbers for reference material in the optional textbooks will be provided as we go through the semester. These are intended as an index to useful material to read at your discretion: while reading all of the page ranges given for both books is possible, skimming them followed by a more focused selection of which to read in-depth based on the ease with which you are able to digest and apply the material is likely a more effective use of your time.
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 professor know.
| Date | Topic | Reference Material |
| Thu, Aug 27 | Course introduction and syllabus (slides in ppt) |
|
|
Tue, Sep 1
Lab 1 assigned |
C++ program structure and development environment (slides in ppt) (studio exercises in pdf) |
Prata pp. 19-64; Deitel 6th Ed. pp. 14-23, 44-63; Deitel 7th Ed. pp. 13-24, 40-59 |
| Thu, Sep 3 |
C++ data types, namespaces, input, and output (slides in ppt) (studio exercises in pdf) |
Data types Prata pp. 65-143; Deitel 6th Ed. pp. 81-117, 334-358, 1270-1271; Deitel 7th Ed. pp. 68-102, 283-303, 1009-1010 Namespaces Prata pp. 424-437; Deitel 6th Ed. pp. 1241-1244; Deitel 7th Ed. online chapter 24.4 (once the companion website is made available by Pearson Higher Ed.) C++-style strings Prata pp. 857-872; Deitel 6th Ed. pp. 620-624; Deitel 7th Ed. pp. 756-772 STL vectors and lists Prata pp. 878-889, 910-913; Deitel 6th Ed. pp. 379-384, 1080-1083; Deitel 7th Ed. pp. 323-328, 930-942 Input and output Prata pp. 951-1032; Deitel 6th Ed. pp. 777-808; Deitel 7th Ed. pp. 645-673, 716-721 |
| Tue, Sep 8 |
C++ functions, classes, and templates (slides in ppt) (studio exercises in pdf) |
|
| Thu, Sep 10 |
C++ functions and the call stack (slides in ppt) (studio exercises in pdf) |
Prata pp. 279-340, 362-365; Deitel 6th Ed. pp. 245-311; Deitel 7th Ed. pp. 208-262 |
|
Tue, Sep 15
Lab 2 assigned |
C++ debugging (slides in ppt) (studio exercises in pdf) (example code: prefix_adder.h prefix_adder.cpp Makefile) |
|
| Thu, Sep 17 |
C++ exceptions (slides in ppt) (studio exercises in pdf) |
Prata pp. 805-827; Deitel 6th Ed. pp. 818-828, 829-831; Deitel 7th Ed. pp. 683-693, 695-697 |
| Tue, Sep 22 |
C++ pointers, arrays, and references
(slides in ppt) (studio exercises in pdf) |
Prata, pp. 144-150, 156-166, 340-355, 361-362; Deitel 6th Edition, pp. 333-486; Deitel 7th Edition, pp. 282-377 |
| Thu, Sep 24 |
C++ memory management
(slides in ppt) (studio exercises in pdf) |
Prata pp. 150-156, 166-171, 420-423, 827-829, 837-839; Deitel 6th Edition pp. 557-559, 836-839, 948; Deitel 7th Edition pp. 476-478, 701-701, 809 |
|
Tue, Sep 29
Lab 3 assigned |
C++ classes
(slides in ppt) (studio exercises in pdf) |
Prata pp. 355-358, 445-499, 515-517; Deitel 6th Edition pp. 81-117, 487-557; Deitel 7th Edition pp. 68-102, 395-423, 430-453 |
| Thu, Oct 1 |
Memory management for C++ classes
(slides in ppt) (studio exercises in pdf) |
|
| Tue, Oct 6 |
More on C++ memory models and memory management idioms (slides in ppt) (studio exercises in pdf) |
|
| Thu, Oct 8 |
C++ subclassing and inheritance polymorphism (slides in ppt) (studio exercises in pdf) |
Prata pp. 358-361, 633-743, 787-801, 829-834, 839-852; Deitel 6th Edition pp. 640-753, 832-836; Deitel 7th Edition pp. 521-567, 572-621 |
| Tue, Oct 13 |
C++ function and operator overloading
(slides in ppt) (studio exercises in pdf) |
Prata pp. 365-370, 502-515, 518-524; Deitel 6th Edition pp. 289-292, 578-628; Deitel 7th Edition pp. 248-251, 466-509 |
| Thu, Oct 15 |
Review for midterm exam (slides in ppt) (sample questions in pdf) (sample code files for memory management studio exercises: memory_management.cpp safe_ref_counted_guard.cpp safe_ref_counted_guard.h scope_detector.cpp scope_detector.h) |
|
|
Tue, Oct 20
Lab 4 assigned |
|
|
| Thu, Oct 22 |
Generic programming techniques in C++ (slides in ppt) (studio exercises in pdf) |
Prata pp. 890 Deitel 6th Edition pp. 1059-1060 Deitel 7th Edition pp. 917-919 |
| Tue, Oct 27 |
interface polymorphism with C++ templates (slides in ppt) (studio exercises in pdf) |
Prata pp. 370-388, 744-777, 801-805 Deitel 6th Edition pp. 292-294, 756-771 Deitel 7th Edition pp. 251-253, 628-641 |
| Thu, Oct 29 |
More template examples and ideas (slides in ppt) (studio exercises in pdf) |
|
| Tue, Nov 3 |
C++ STL containers in depth
(slides in ppt) (studio exercises in pdf) |
Prata pp. 877-889, 905-922, 1095-1102 Deitel 6th Edition pp. 1060-1064, 1071-1094 Deitel 7th Edition pp. 919-923, 930-952 |
| Thu, Nov 5 |
C++ STL iterators in depth
(slides in ppt) (studio exercises in pdf) |
Prata pp. 890-905 Deitel 6th Edition pp. 1064-1069 Deitel 7th Edition pp. 923-928 |
|
Tue, Nov 10
Lab 5 assigned |
C++ STL algorithms in depth |
Prata pp. 930-933, 1102-1128 Deitel 6th Edition pp. 1069-1071, 1099-1130 Deitel 7th Edition pp. 928-929, 957-987 |
| Thu, Nov 12 | C++ STL functors in depth |
Prata pp. 922-930 Deitel 6th Edition pp. 1134-1137 Deitel 7th Edition pp. 991-994 |
| Tue, Nov 17 |
C++ STL case study (combining containers, iterators,
algorithms, and function objects) |
|
| Thu, Nov 19 | More on C++ associated types, typedefs and traits |
Prata pp. 210 (bottom of the page), 1075-1076 Deitel 6th Edition pp. 780, 1066-1069 Deitel 7th Edition pp. 856-857, 925-928 |
| Tue, Nov 24 |
More on generic programming and the C++ STL |
|
| Wed, Nov 25, and Thu, Nov 26 |
|
|
| Tue, Dec 1 |
Design Patterns I Guest lecturer: Prof. Smart |
|
| Thu, Dec 3 |
Design Patterns II Guest lecturer: Prof. Smart |
|
| Tue, Dec 8 |
Semester summary and review for final exam (last day of classes) |
|
Labs are to be submitted electronically, and will be graded and returned to you electronically as well. Each lab submission requires a separate 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, like the studio exercises, will be performed in teams of 2 or 3 people. You should please submit your code and a lab report for each lab by its advertised due date and time shown on the course web page and the lab assignment web page. Labs submitted 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.
You may discuss general questions related your projects with other students in lecture and labs, during lecture and lab hours respectively, and on the message board. While you are encouraged to post and 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 posting 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 professor's permission before doing so.
The following labs have been assigned so far in the course:
In addition to the required textbook, the following texts may be useful and interestingadditions to your programming library:
On-line information sources (please feel free to suggest other good ones):
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 will cover 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 during the semester, and to ask lots of questions in classroom, studios, and on the message board throughout the semester.
The final 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:
| Labs | 50 % Lab 1: 5 % Lab 2: 5 % Lab 3: 10 % Lab 4: 10 % Lab 5: 20 % Midterm exam |
15 % |
Final exam |
25 % |
Participation |
10 % |
|
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.