CSC 062
Data Structures and Advanced Programming

This course couples work on program design, analysis, and verification with an introduction to the study of data structures that are important in the construction of sophisticated computer programs. Because we will be interested in studying more modern techniques for designing and implementing efficient computer programs, we will primarily be using the object-oriented programming language, Java, though later in the course you will learn to develop programs in C++ as well. We will see that the object-oriented style of programming is extremely useful in designing large, complex programs and supporting reusable software.

One goal of this course is to make you comfortable with using UNIX. To that end we will be using UNIX tools like emacs under Mac OS X on Macintoshes available in the Computer Science Macintosh Laboratory in Edmunds 2189, and compiling and executing Java programs using the javac and java commands. Students should use these machines when possible. It will also be possible to install these tools on your own computer. Later in the semester we will use the free Eclipse IDE in order to take advantage of some tools they provide and their debugger.

Students will be expected to write several programs, ranging from very short programs to more elaborate systems. Since one of our goals in this course is to teach you how to write large, reliable programs composed from reusable pieces, we will be emphasizing the development of clear, modular programs that are easy to read, debug, verify, analyze, and modify.

I assume that all students enrolled are comfortable writing small to medium-sized programs (< 10 pages of code with several interacting classes) in Java. The knowledge assumed is generally equivalent to that of CSCI 051 as offered at either Pomona or CMC. If you have any doubts as to whether your programming experience is sufficient for this course or if you have never programmed in Java, please see me as soon as possible.

By the end of this course you should have a good understanding of the object-oriented design, coding, and debugging of programs in Java and C++, and have a good understanding of how one might analyze programs for correctness and efficiency. In particular, you will understand the trade-offs involved in selections of different data structures and algorithms to solve computational problems.

This course is a prerequisite for most upper level Computer Science courses. It may be taken either before or after CSCI 052.

To simplify printing of the information about CSC 062 found on these pages, a single page on which all the information about CSC 062 is grouped together is also available.