The course consists of the following elements:
- Lessons: There will be a total of 30 hours of lessons.
- Reading: We will be covering most of the Thinking in C++, text.
- Assignments: Weekly assignments will be based upon material covered in the week's lectures and will include a substantial design project for the last five weeks of the term.
We will try to keep the workload at about fifteen to twenty hours per week outside of the lectures. If we do not manage to do this, please let me know either in person or by email, jkp@u.washington.edu and explain which parts of the course are causing you spend too much time.
Software development often takes a lot more time than we expect. Frustration can be high as we develop things and learn the new tools; make sure to ask for help rather than spend countless hours making no progress.
Remember the old saying, We had better get the coding done quickly because we have a lot of debugging to do. This is an approach we see all too often even with professional programmers. We strongly encourage you to take the time as you start each design to think it through at the architectural level first then develop, test, and integrate the individual pieces. You will find you will have very little debugging to do.
We will discuss the weekly assignments the week after they are due and will make solutions available on the course web in a timely fashion.
Due Dates...
Weekly Assignments:
Will be due on the dates listed on course web page and on the assignments page of this web page.
Final Project
Will be due dates listed on course web page and on the assignments page of this web page.
Grading...
Course:
To receive credit towards the Certificate Program, you must complete at least 8 assignments and perform at the B level on the homework, project, and final exam.
60% Weekly Assignments
40% Final Project
Weekly Assignments:
Please read the portion of the class web page that discusses the class policy on collaboration.
A completed assignment comprises a .zip file containing the following
- 1. An clearly annotated electronic copy of your source code listing, all code must be readable and clearly written
- All major procedures and functions must be clearly and meaningfully annotated. Such annotation should include,
- Public Interface
- Brief description
- Side effects
- Invariants
- 2. A set of test cases used to test the program,
- All test cases must be annotated. Such annotation should include,
- Public interface
- Brief description
- What is tested
- What are the expected results - pass or fail is not a valid result.
- 3. An annotated printout of the results of applying your test cases. Once again, pass or fail is not a valid result.
Stroustrup, The C++ Programming Language - latest edition, will be used as the standard for syntax and style.
Point distribution,
For most of the assignments, the point breakdown will be one third each
Working Design that Meets Specifications
Annotation
Test CasesFor superior work or clever innovation
X Variable Bonus - Innovation
Homework will be accepted up to one week after the due date when arrangements have been made in advance and there is a compelling reason for the delay. After that it will not be marked.
Innovation
This is hard to measure, but includes such things as a clever or unusual algorithm, very simple (this does not mean cryptic) solution to a complex problem, generality of solution including reuse of functionality, creative approach to a design, exceeding specifications.
Project:
The project will be the equivalent of 3-4 weeks of homework and will be based upon a practical problem either of the students choice or an assigned project.
Please Note:...In order to pass this class, your final project must meet all of the following requirements
- The project must be written in C++ and implemented as an object oriented design - not just object type variables wrapped in a procedural program.
- A completed project must include the specification, test cases, annotated source code, annotated results from applying your test cases to your design, and the presentation. If your program and test cases are not properly annotated, it will not be marked.
- Although lines of code and number of classes is a poor metric of program complexity and quality, as a very rough estimate, the project complexity should be on the order of 300 to 500 lines of code and comprise 10 to 12 meaningful classes. Note, simply creating dozens of classes does not constitute a good object centered design.
- The project should incorporate most of the topics and procedures covered during the quarter including the use of good software design practices, templates, and inheritance.