CSCI 290 Object Oriented Software Design
Time/Place
This section of the course (Fall 2007) meets Tuesdays and Thursdays from 9:30AM-10:45AM in RH225.
General Description
In this course you will continue learning how to design and write computer software, in particular, object-oriented software in C++. I view this course as a bridge between the elementary programming courses and the more sophisticated techniques that make up Software Engineering (which many of you will take in the Spring). The structure of the course is somewhat unusual in that I will keep lecturing to a minimum, and the class will spend a substantial amount of time designing and writing (as a team) a single "large-scale" piece of software from the objected-oriented point of view. New syntax and new concepts will be introduced as they arise "organically"" during the development process.
Here is the course schedule where I will place announcements of exams, homework assignments, and other date-sensitive material.
The course prerequisite is a passing grade in CSCI 180 (Data Structures).
Textbook Information
There is no required textbook for this course, but I strongly recommend that you, as future software engineers, invest in a good "reference-style" book on C++. The best choice is the standard The C++ Programming Language by Bjarne Stroustrup (who invented C++) as well as the C++ Annotated Reference Manual (sometimes referred to as the "ARM"). The ARM is by now pretty out-of-date but is still a lot of fun for those who enjoy getting at the nuts and bolts of a C++. For more leisurely reading by the pool, I recommend Stroustrup's The Design and Evolution of C++. The other officially recommended text for the course is the "Design Patterns" book by Gamma et al, and you will be asked to read excerpts from it as the corresponding concepts arise in class.
While I believe that the majority of techniques required to be a great software engineer cut across programming languages and paradigms, I also believe that one should know a particular language inside and out (for instance, by writing a compiler). C++ is an excellent choice for lots of reasons, and this is why we teach it in our introductory courses.
Homework and Exams
The class will be divided into teams each responsible for a portion of the semester project, and will be assigned homework based on periodic "milestones" to be determined as the project proceeds. I will do my best to keep all of these milestones organized on the course schedule page which you should consult often.
There will be an in-class midterm exam given Tuesday, October 16th which accounts for 20% of your final grade. The final exam is scheduled for Tuesday, December 18th from 8:00-9:50AM; it is comprehensive and is worth 40% of your final grade. Participation on the in-class development project and related homework assignments for 40%, thus attendance at every class meeting is mandatory and essential if you want to keep up. Make-up exams will not be given. The College of Arts and Sciences has a policy concerning academic honesty with which you should be familiar.