Required Text: "Big C++" by Budd & Horstmann, 2nd Edn., ISBN 978-0-470-38328-5. It should be in the book store. Used and cheap copies should be OK, but do not buy older editions.
Reference Works: My WWW site has many useful pages. This CS202 site has a search and many "Frequently Asked Questions" for you to use. My website has a detailed late draft specification [ ../c++std/ ] of the C++ language. C++ books in the library are in the QA76.73.C153 section. A former CS202 student recommends "Conquering C++ pointers" by Robert J. Traister, ISBN 0-12-697420-9. Fowler's "UML Distilled" (3rd Edn.) is an excellent reference in practice. If you haven't used Linux much then Daniel J Barrett, "Linux pocket Guide," O'Reilly Feb 2004 $9.95 ISBN 0-596-00628-4 is an inexpensive and useful reference. Also go to the Computer Science Club's Linux sessions. For more try "Linux in a Nutshell" and "Learning the VI Editor" both from O'Reilly & Associates, Inc.
Quizzes will be closed-book and supervised. No wireless communication! You should prepare a 11.5in><8in sheet of notes to use in each test. You may use a calculator, but not a computer. A computer is any device that lets you compile and run C++ programs or browse the web. The quizzes and final will require you to (1) read, interpret, correct, and complete pieces of C++ programs, and (2) write correct C++ code.
It will go over material covered in quizzes, labs, projects, lecture/discussions, assigned work, and notes. The same rules apply as for Quizzes above.
You can resubmit the first project only, and only if it scored less than an A. To resubmit hand it in with the second project.
It is better to give me anything on time than give me a perfect project late. Indeed I will reward perfect work handed in in the class before the deadline with a 5 point bonus.
You can and should do the work on our systems. Either do them in a lab or via SSH ( [ ssh.html ] ). The labs are open whenever there is no class scheduled in them.
Start Early and compile often! Aim to complete each project before the deadline because things go wrong. First think out a solution and roughly sketch it on paper. Start coding the program with a comment that has your name plus the number of the exercise. Add a short description of what the program demonstrates or does. Add the necessary "#include"s and an empty "main" function and make it compile. Add a set of tests of the classes and functions you need -- and compile it and watch it fail. Then add missing stuff or fix broken parts until all the tests pass. Then tidy up (refactor).
If a project demands several files then each file must identify who you are, the name of the file, and what its purpose is.
Work must be on time ! High quality work that is delivered early (the previous session) will earn a bonus. Partial credit is given for incomplete work including programs with documented errors. You won't lose points for missing features or bugs, if you document them in the code. (2) The code must explain what it does and how it does it. (3) All copied code must be documented in comments.
What to hand in: I want to read your code and know that it will run. Print it out, staple it and hand it in! No cover sheets, folders, etc. No test runs. Each file should have a comment with your name and a description of the project as a comment at the top. It should have more comments explaining anything complicated or buggy. Projects with classes need an UML diagram. This can be drawn by hand on the listing if the result is readable and good UML.
The schedule lists some chapters. Pick one programming exercise from the end of one of these chapters. All earn the same score. However, I expect a simple project to be done better than a more complex one.
(1) KISS: Do the simplest thing that could possibly work.
(2) Iterate and Evolve: If in doubt, take any small step in a useful direction. If stuck, do something different, and come back later. If you are stuck in code, draw a picture. If stuck drawing, do some code. Take a break: go shopping, eat something, get some exercise, come to my office, etc.. Read & Think: WWW, the book, the Pfau library, the Internet, ... . Find a tutor in the learning center. Talk to a student who is doing a different project.
(3) Unexpected bugs? Bring printouts of code to my office. Take it to any lab assistant or any CSE teacher. We like hunting bugs.
(4) Spare time? Refactor the code -- reorganize and retest, one simple safe step at a time, so that it is easier to understand. Use the DRY="Don't Repeat Yourself" rule to make code better.
(5) Stop at the deadline. Hand in what you've got.
(6) Answer questions in the quiz on your project.
To encourage being ahead of the deadline -- I will give a A+ to A projects that arrive the class before the deadline. This is worth 15 points! The extra 5 points are project bonus points and can make up for points lost in course work before the final.
. . . . . . . . . ( end of section Project Work(40pts, 8%, 10 points max per project)) <<Contents | End>>