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. For now, it may be taken either before or after CSCI 052. However, starting next semester, CSCI 052 will be a prerequisite for CS 062.

Academic Accommodations

If you are seeking academic accommodations, you must contact your home college’s disability coordinator to establish accommodations. You should plan to meet with your coordinator to discuss appropriate accommodations and may be asked to provide documentation necessary to verify disabilities. The disability coordinators for the Claremont Colleges are: Jan Collins-Eaglin (Pomona), Julia Easley (CMC), Jill Hawthorne (Pitzer), Sonia De la Torre Iniguez (Scripps) and Heidi Bird (HMC).

Use of electronics in the classroom

Laptops, tablets, and cell phones may not be used during lecture without advance permission of the instructor. Several studies (and our personal experience) has shown that these devices are a distraction and interfere with learning. Other studies have shown that taking notes by hand is more effective for learning than taking notes on a computer. We strongly recommend that you print out the lecture notes before class (they should be posted by 8:30 a.m. each class day) and annotate them by hand.

Pomona College prohibits video or voice recording of any lecture or discussion, except in cases that the office of the Dean of Students has granted a student permission according to the College’s Disability Accommodations Policy, or when permission is granted by the instructor. Please see one of the instructors if you wish to record lectures or lab sessions.