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 a collection of 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, please see us as soon as possible. If you have never programmed in Java then you are unlikely to succeed in this course. Check with the instructors for proper placement.

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.

Academic accommodations

If you have a certified academic accommodation, please contact me early in the term so that we can make sure that any accommodations are handled appropriately.