In this course, you will transition from a focus on basic programming skills to applying those skills to solve problems. You will do this by learning to think of software development as a rigorous process, in which the actual programming is one of the smallest parts. You will be introduced to higher-level problem solving approaches, such as recursion and generic programming, and larger-scale organization and algorithms, like object orientation, lists, stacks, queues, searching, and sorting. You will gain familiarity with software development techniques, such as the importance of thinking about specifications, design, and testing before coding and the utility of incremental development in an exploratory environment. You will also develop an understanding of the mathematical nature of software development by examining the relationship algorithms, programs, and the underlying theory, including logic, sets, functions, number bases.
March 30, 2009: Our web site is now substantially complete let me know if you find anything missing or incomplete.
April 1, 2009: I've updated program 1 to include information about extra credit points and a pointer to a skeleton of what your main program will be, with hints. No foolin'.
April 2, 2009: We now have example documentation online. See the link from the left menu.
April 6, 2009: I've updated the schedule to include "X.5" written homeworks: brief responses to readings in the Ermann book for use in class discussions.
May 11, 2009: I've added links to information about Javadoc. See the example near the bottom of Sun's page; you could generate all of your documentation using Javadoc, if you like.