CS 210: Data Structures

Kalamazoo College

Spring 2008

Syllabus

CS 210 is a continuation of Introduction to Programming (CS 110), and provides students an opportunity to further develop and refine their programming skills. In particular, the emphasis of this course is on the organization of information, the implementation of common data structures such as lists, stacks, queues, trees, and graphs, and techniques of data abstraction, including encapsulation and inheritance. We will also explore recursion and the close relationship between data structures and algorithms.

Hands-on programming is a central component of this course. There will not be a weekly laboratory session, but there will be numerous mini-labs and outside programming assignments. Assignments will focus on the design, implementation, and testing of object-oriented programs.

Goals:   At the conclusion of this course, students should understand common data structures and algorithms, and be able to apply that understanding to implementing new data abstractions and using existing library components. Students should also be stronger programmers and feel comfortable programming in Java.
Prerequisites:  
CS 105 Computing: Impact & Application (i.e., Intro. to CS) or
CS 107 (Pictures & Sound: Prog. with Multimedia) or
CS 108 (Intro. to Scientific Computing)
and CS 110 (Intro. to Programming).
Instructor:  
Required Text:  

Lewis & Chase, Java Software Structures: Designing and Using Data Structures, 2nd Edition, Addison-Wesley, 2005.
Source code and errata are available via anonymous ftp at ftp://ftp.aw.com/cseng/authors/lewischase

The AP® Computer Science Marine Biology Simulation Case Study

Recommended:   Vermeulen, et al, The Elements of Java Style, Cambridge University Press, 2000.
Class Web Site:   http://www.cs.kzoo.edu/cs210/

You can find other references in the class bibliography.

Computing Resources and Software:

Topics to be covered (and tentative course schedule):

Week 1: What are Data Structures? What are Algorithms?
Review of Java and OOP
    Language Features
    Classes, Encapsulation, ADTs
    Inheritance, Polymorphism and Dynamic Binding
    Interfaces
    JavaDocs, Specifications, Pre-/Post-Conditions
Arrays and ArrayLists
Review of linear traversal patterns
Marine Biology Simulation Case Study
Reading: Chapters 1 & 2
PP: Substring Project
Week 2: Collection Classes, List Interface, Set Interface
ArrayList
Iterators
Sequential and Binary Search
Reading: Chapter 3
PP: Very Large BoundedEnv
Week 3: Linear Lists (client view)
Linked Lists, Doubly-Linked Lists (implementation)
Reading: Chapters 4 & 5
PP: Iterator Lab
Week 4: More on Linked Lists, Circular Lists
Introduction to Queues and Stacks
Reading: Chapter 8, Chapters 6 & 7
PP: Linked List Assignment
Week 5: Queues and Stacks, continued Reading: Chapters 6 & 7
Midterm Exam
Week 6: Recursion
Sorting Algorithms
Reading: Chapters 10 & 11
PP: Car Wash Simulation, N Queens Lab
Weeks 7 - 9: Trees
Tree Traversal Algorithms
Binary Search Trees
Heaps, Priority Queues
Multi-way Search Trees
Reading: Chapters 12 - 16
PP: Binary Tree Lab, BST Lab
Weeks 9 - 10: Maps/Dictionaries
Hash Tables, Hash Functions, HashMap, Chaining
Sets, HashSet, Open Address Hashing
HashIterator
Reading: Chapters 17, 19
PP: BLAST Project
Exam Week: Final Exam

Attendance and Participation:

Regular attendance and fully engaged participation is expected of all students in this course. Your grade will be partially based on in-class projects, discussions, and occasional quizzes, so your attendance will affect your grade. Active participation in the class means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up.

Assignments and Grades:

Assignments, announcements, class notes, and other material will be made available on the course web site:
http://www.cs.kzoo.edu/cs210/
Students are responsible for checking this resource frequently.

Reading assignments and discussion questions or exercises may be assigned for each class. You are expected to come to class having completed the assignment and being prepared to discuss both the ideas from the reading and your solutions to any exercises. You should also bring questions you have from the reading to class. You are encouraged to work on the discussion questions and exercises in groups; just be sure that each group member understands each answer well enough to present it to the class.

There will be 8 - 10 programming assignments assigned throughout the quarter, which may take a week or longer to complete. The time required to write a program and debug it is difficult to predict, but time-management skills are as critical in industry as they are in college. I will make programming assignments available online enough in advance that you will have some flexibility in scheduling your work, but you are responsible for budgeting your time wisely so that you will be able to complete your projects on time. Assignments should always be turned in on time unless you clear it with me in advance.

There will be 2 exams: a midterm and a cumulative final exam.

Final grades will be based on:

Attendance, Discussion Questions, Occasional Quizzes 10%
8 - 10 Mini-Labs and Programming Assignments 50%
Two Exams 40%

Programming Guidelines:

Two documents, the CS Program Style Guide and Documentation Standards, describe the programming style and documentation standards for this course. Following these standards is an important step towards writing well-structured and reusable programs. You may use two templates that have been created to help you meet the documentation standards: the class template and main class template.

The CS Program Style Guide also provides a general description of the grading criteria used in this course.

Collaboration and the Honor System:

This course operates in accordance with the principles of the Kalamazoo College Honor System: responsibility for personal behavior, independent thought, respect for others, and environmental responsibility. In particular, academic integrity is a fundamental principle of scholarship. Representing someone else's work as your own, in any form, constitutes academic dishonesty. Unauthorized collaboration and receiving help from others outside the bounds permitted by the instructor are also violations of the College honor code. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.


Any student with a disability who needs an accommodation or other assistance in this course should make an appointment to speak with me as soon as possible.