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.

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.

Equally important is the ability to analyze programs for correctness using big-"O" notation. This will help us evaluate the trade-offs in different choices of algorithms and data structures.

We 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 or the Computer Science advanced placement exam. 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 us 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.