E81 CSE 332S: Object-Oriented Software Development Laboratory

Fall 2008

This page is available through: http://classes.cec.wustl.edu/~cse332/
and through: http://www.cse.wustl.edu/~cdgill/courses/cse332/

Instructors: Chris Gill Terry Tidwell
Office Hours: Lopata 400 (CEC Linux Lab) Wed 2-4pm, or by appointment Lopata 400 (CEC Linux Lab) Wed 1-2pm and 4-5pm, or by appointment
Contact Info: (314) 935-7538 or cdgill@cse.wustl.edu ttidwell@cse.wustl.edu


Course Description

This course will expose you to the syntax, semantics, and standard libraries of the C++ language; to common C++ design and implementation idioms; and to opportunities to apply the knowledge and idioms you learn through hands-on programming projects in C++.

Programming assignments will be done in C++. Since most students enter this course with experience in Java, but not C++, the early portion of the syllabus is designed to assist your progress up the C++ learning curve.

If you encounter difficulties with C++ programming in this course, or if you simply would like to reinforce your C++ skills, you are strongly encouraged to enroll in CSE 232: Programming Skills Workshop, either before or during CSE 332S.


Prerequisites


Times and Locations

Discussions/Lectures: Lopata 101, Tuesday and Thursday, 10:00 am to 11:30 am

Lab: Lopata 400 (Linux Lab)


Course Management System

The course syllabus, suggested readings, lecture slides, lab assignments, and other relevant content will be made available through the course content management system, to which you can log in using your Engineering e-mail address and password at "https://cms.engineering.wustl.edu/sites/cmslanding/", and then click on the CSE 332 entry you should find there to access the content for this course.

We will frequently read and respond to postings on the message board found in the course management system, and we encourage you to do the same. Please submit ALL questions, and concerns of a public nature, to the course management system's message board. Please also answer other people's questions there!

Please do not e-mail technical questions your instructors: instead, please post them 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 on the message board (i.e., quantity and quality of your posts) can count significantly toward your participation grade.

If you have trouble accessing the course management system, please let us know right away!

Textbooks and Other Resources

In addition to class meeting dates and topics, page numbers for suggested readings in the following optional textbooks are shown in the course management system's syllabus. These texts are intended as resources to supplement the lecture and lab periods:

We'll use these textbooks both as references and for suggested readings to supplement the lecture material. The syllabus in the course management system contains references to suggested readings for each lecture. Please read the suggested pages before the class meeting, and please use the texts for reference while developing and debuggging your programs.


Labs

There will be 6 lab assignments in this course. Labs will increase in length, difficulty, and value throughout the semester.

Labs are to be submitted electronically, and will be graded and returned to you electronically as well. Each lab submission requires a separate text file containing a lab report writeup. Each assigment web page will describe the procedure for submitting the lab (via make), along with the report format and content requirements. Use of this process is required.

Early labs will be performed individually, though there will be an option for team lab projects in the last two labs. You should please submit your code and a lab report for each lab by its advertised due date and time, which is shown on 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 solution, and prepare your own report. 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 option textbooks, the following texts may be useful additions to your programming library:

Other information sources:


Grading

As a rough guideline, 90-100 has historically been an A, 80-89 a B, and so on, though depending on the complete distribution the specific grade division points may vary.

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 readings and programming assignments during the semester, and to ask lots of questions in class and on the message board throughout the semester.

The final grading component is an evaluation of your participation in the class, and an evaluation of your 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 exams a bit, and
  3. encourage active participation in discussions/lectures, labs, and on the message board.

Labs 55 %
   Lab 0:  2 %
   Lab 1:  5 %
   Lab 2:  5 %
   Lab 3:  8 %
   Lab 4:  15 %
   Lab 5:  20 %
Midterm exam 15 %
Final exam 25 %
Participation   5 %


Cheating

Cheating is the misrepresentation of someone else's work as your own, or assisting someone else in cheating, and will not be tolerated in this course.

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 the professor or teaching assistants 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 verify uniqueness of submitted program solutions.