From Apprentice to Sorcerer in one semester
This course covers object-oriented programming using C++. Knowledge of C++ at the level of CPS 100 is required, or must be picked up quickly in the first two weeks in which case knowledge of C is assumed. The use of C++ will be heavily based on classes, templates, and inheritance. Most likely we will use the g++ 2.7.x version of the STL (standard template library).
The other language we'll use extensively is python . Python is a scripting language (like Perl or Tcl), but Python supports both object-oriented programming and functional programming. The syntax of python is much clearer and cleaner than Perl, and it can be used for big projects unlike Tcl.
We'll also use, to some degree not yet determined, the object-oriented lanuage java . Java is a language for developing internet/web applications. It has received a lot of hype but it looks like both an interesting and useful language.
The course is about the design of software as well as the implementation. We'll cover techniques of object-oriented design and analysis using a modified Booch notation (Booch's company is Rational Software Corporation ) that is learnable in a week or two. We'll discuss guidelines for good design and coding using C++ and object-oriented techniques in general. Some reasonable design rules have been developed by Taligent, Inc.
The course also emphasizes the use of tools in software development and implementation, in particular (links to information about these will come soon)
RCS (revision control system)
make
emacs
Several team projects make up the bulk of the work in the course; so there is an emphasis on working in groups including some discussion of group dynamics and the roles individuals play in a software project.