An introduction to the fundamental data structures of computer science: strings, lists, stacks, queues, trees, BSTs, graphs, sets and their accompanying algorithms. Principles of algorithmic analysis and object reasoning and design will be introduced using mathematical techniques for the notions of both complexity and correctness. More practical issues, such as memory management and hashing, will also be covered. The programming language used to illustrate and implement these concepts will be able to support functional, imperative and object-oriented approaches.
Prerequisite: CS 105 or BMC CS 110 or 113 with a grade of 2.0 or better.
Labs make up a major and important portion of the work for this course. For due dates, please see the calendar below. While some are given below in advance, modifications may be made throughout the semester (including changing, cutting, or adding other labs), so any work done in advance is at your own risk. Labs will be officially distributed one or two weeks before their due date.
Labwork should be done on the computers in the computer science teaching lab (KINSC H110) either in person or by logging in remotely. We will help you learn how to login and access the lab during your first lab session. You may also find the following documents useful:
A directory full of information on accessing the lab (accessible when logged into a haverford.edu account)
Here are some coding guidelines that you should be sure to follow:
Lab 0: Java basics
Lab 1: Data structure design
Lab 2: ArrayLists
Lab 3: Linked Lists
Lab 4: Stacks and Queues
Lab 5: Binary Trees
Lab 6: Heaps
Lab 7: Complexity, Hash Tables, Sorting
Final Project: Quadtrees and Image Filters
All course times, lab due dates, and office hours are listed on the calendar below as well as on the syllabus above. In addition to the listed office hours, lab monitors are available for help in KINSC H110 every Sunday - Thursday from 7-11pm. Students are also welcome to attend TA office hours for Bryn Mawr's similar 206 course.