SYLLABUS
COMP 210 is a continuation of Introduction to Programming (COMP 150, formerly 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, 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 programming in Java. In addition, you will know how to measure an algorithm’s efficiency in terms of running time and space and be knowledgeable enough to choose the best algorithms and data structure to solve a given problem.
About COMP 210
Prerequisites | COMP 150 (Intro. to Programming). |
---|---|
Instructor |
Dr. Tasnim Gharaibeh Olds/Upton 203F, (269) 337-7526 Dr. Tasnim (preferred) | Dr. Gharaibeh she, her, hers Students Hours:
|
Email Rules |
Subject COMP210: Your Subject. Example COMP210: About project 2 |
Required Text | Lewis & Chase, Java Software Structures:
Designing and Using Data Structures, 4th
Edition, Pearson, 2014. |
Microsoft Team Site | You can download the app and install it in your system here: MS Teams |
Masking Policy | Students in this class must observe College policy regarding masks and social distancing when meeting together in person, whether in class or in small group meetings, in order to protect the health of your group, the class, and the College community as a whole. If the college’s masking requirement becomes optional, please continue wearing one if you feel more comfortable doing so, if you have symptoms of any respiratory illness, if you have tested positive for COVID-19 and are symptom-free, or if you have been exposed to COVID-19 and are awaiting test results. Your professor intends to do the same. |
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 we
will use the BlueJ development environment, which is open
source software that runs on Macs, Windows, and Linux
machines. You can use the following link to download and
install BlueJ.
- Optionally, you can 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 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
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: What are
Data Structures? What are Algorithms? What
are ADTs? Time Complexity Primitive Data Types (PDTs) Arrays and ArrayLists |
---|---|
Week 2 | Collection Classes Stack ADT Linked Structures Iterators |
Week 3 | Queue ADT Queues as Arrays Queues as LinkedLists |
Week 4 | Sequential and Binary Search List ADT Ordered, Unordered, and Indexed Lists Lists as: Arrays and LinkedLists |
Weeks 5 | Analyzing Recursion Recursion vs. Iteration Time Complexity for Recursion |
Weeks 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 |
Assignments and Class Evaluation
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. You are encouraged to discuss both the ideas from the reading and your solutions to any exercises using MS Teams or email.
There will be approximately 6 mini-labs and approximately 4 programming projects 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 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 projects on time. Assignments must always be turned in on time unless you clear it with me in advance.
There will be one midterm and NO final this quarter.
Final Grade
Final grade will be based on:
- Participation: attendance, discussion questions (DQ), in-class activities 10%
- Mini-Labs: 6 to 7 in-class programming exercises 35%
- Programming Assignments: 4 or 5 take home projects 35%
- Exams and Quizzes: solo, group, open book, and take home modalities 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. 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.
Exams and quizzes should be entirely your own work, unless specified.
Late submission policy: Assignment due dates have two important functions: to help you plan your time and keep you on track to successfully complete the course, and to make grading more manageable. Late assignments will accrue late penalties or might not be accepted at all. To encourage timeliness, assignments that are one day late will lose 2%; two - three days late will incur a 5% loss. After three days, the loss will jump significantly to 25% or more. In unusual circumstances an extension may be granted, but only if you speak to your instructor in advance.
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.