SYLLABUS
Course Web Site: https://www.cs.kzoo.edu/cs210/
About COMP 210
COMP 210 Data Structures is a continuation of COMP 150 Object-Oriented Programming. In this course, students will further develop and refine their programming skills, including reading and understanding existing code and designing and implementing new projects. Students will study and use classic data structures (e.g., lists, stacks, queues, maps, trees, and graphs) and object-oriented data abstraction techniques such as interfaces and inheritance. Students will also become familiar with 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 in-class and outside programming assignments. Some assignments will focus on reading, understanding, and analyzing code, while others will focus on the design, implementation, and testing of programs.
Instructor |
|
---|---|
Required Text | Lewis & Chase, Java Software Structures:
Designing and Using Data Structures, 4th
Edition, Pearson, 2014.![]() You can find links to additional resources in the Supplemental Material tab. |
Prerequisite | COMP 150 (Object-Oriented Programming). |
Goals | At the conclusion of this course, you should understand common data structures and algorithms, and be able to apply that understanding to implementing new data abstractions and using existing library components. You should also be stronger programmers and feel comfortable reading and implementing programs in Java. In addition, you will know how to measure an algorithm’s efficiency in terms of running time and space requirements, and be able to select appropriate algorithms and data structures to solve a given problem. |
Computing Resources and Software
To be able to successfully complete this course, you will be required to have the following tools:
- Programming Language: Java
- Development Environment: In class you
may use BlueJ or Visual Studio Code (VS Code). Both of
these development environments are available for free and
run on Macs, Windows, and Linux
machines. You can use the following links to download and
install BlueJ or
VS Code.
- Optionally, you may download and install any other platform that allows you to program in Java, provided that you know how to use it and feel comfortable with it (such as Eclipse, IntelliJ, and so on).
- Other: Miscellaneous resources will be provided to you through MS Teams or Kit in the form of handouts or links to electronic tools in the web, which will help you visualize, practice, and/or have fun while learning the concepts.
Topics to be Covered (and tentative course schedule)
The following are the topics we will be learning about and discussing during COMP 210 (and a tentative schedule for when each of them will be covered).
Week 1 |
Introduction to Data Structures:
|
---|---|
Week 2 |
Sequential and Binary Search Algorithms Time Complexity Interfaces and ADTs Reading Class Documentation Collection Classes List ADT, ArrayList |
Week 3 |
Queue ADT Queues as Arrays Queues as LinkedLists Iterators Stack ADT |
Week 4 | Object-Oriented Design Strong cohesion, Loose coupling Interfaces, Abstract Classes, Inheritance, Dynamic Binding IS-A and HAS-A Relationships Inheritance, Composition, Delegation |
Week 5 | Analyzing Recursion Recursion vs. Iteration Recursive functions, Recursive Data Structures |
Week 6 | Sorting and Sorting Algorithms Recursion and Sorting Analyzing Sorting Algorithms |
Weeks 7 and 8 | Tree ADT Tree Traversal Algorithms Binary Tree ADT Binary Search Trees |
Weeks 9 | Heaps and Priority Queues Set ADT Map/Dictionary ADT Hashing and Hash Tables |
Weeks 10 | Graphs ADT Graph Algorithms |
Attendance and Participation:
This class will mix traditional lecture with more active learning activities, such as discussion, hands-on exercises, and group activities. Active and consistent attendance, engagement, and collaboration is expected of all students, is the best way you can boost your learning, and will affect your grade. Active participation means being on time, being prepared, listening to others, contributing ideas of your own, and asking questions as they come up. There are direct correlations between staying engaged and how much you learn and can apply later.
If you are ill or pose a health risk to other people, you should wear a mask or not come to class. You should keep up as well as your condition will allow by watching class videos, working on assignments, and communicating with your instructor and TAs in the Collaboration Center.
To create an inclusive and supportive learning environment in which everyone can participate fully, we will follow these Community Guidelines adapted from the Center for Research on Learning and Teaching (CRLT) at the University of Michigan and the guidelines for creating a culture of respect and support outlined in Respect in the Community: Creating a Culture of Support. (See the section below on Collaboration and the Honor System.)
Assignments and Class Evaluation
Assignments, announcements, class notes, and other material will be made available on the Detailed Schedule of the course web site: http://www.cs.kzoo.edu/cs210/. Students are responsible for checking this resource daily.
Reading assignments, videos, and discussion questions or exercises should be completed before class. You are encouraged to discuss both the ideas from the reading and your solutions to any exercises with classmates, both inside and outside of class.
Reflective journal entries: Throughout the term you will asked to submit reflections on your learning experience. These assignments and their due dates will appear on the Detailed Schedule.
There will be numerous in-class activities and longer programming projects that will need to be completed outside of class. The time required to write and debug a program is difficult to predict, but time-management skills are critical in both college and industry. I will assign programming projects far 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 assignments on time. Assignments should always be turned in on time unless you clear it with me in advance.
Quizzes and Tests: There will be several quizzes or tests to assess your understanding of basic concepts. These will be announced in advance.
Final grades will be based on:
Attendance, Preparedness, and Participation | 5% | |
In-class Activities | 25% | |
Programming Projects | 25% | |
Quizzes and Tests | 25% | |
Reflective Responses | 20% |
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 system. You are responsible for working within the permitted bounds, and acknowledging any help from others or contributions from other sources.
Discussion questions: You should feel free to work with others on the discussion questions. As you work with others, keep in mind that the goal is not just getting a solution to the problem, but learning how to solve the problem yourself.
Programming assignments: You may discuss the requirements and strategies of a programming assignment with others in the class, but you should not look at code belonging to anyone else or make your code available to anyone other than yourself unless you are working as a team with the permission of your instructor. Some assignments will allow you to use AI, while others should be done on your own so that you learn specific concepts and techniques; the assignment should make this clear, but if you are in any doubt, ask your instructor. If you have code-specific questions you should address them to a course TA or computer science faculty member only. You should acknowledge in your program documentation any help you receive, including help from AI.
Reflections, quizzes, and tests should be entirely your own work.
Penalties for a first violation of the Honor System in this course may include receiving no credit for an assignment, a lowered course grade, or failure of the course. Depending on the severity of the incident, a report may be sent to the Dean's Office, which may result in additional consequences, including suspension from the College. Any subsequent violation will result in immediate failure of the course.