Syllabus Assignments
Gettysburg College

CS 216
Data Structures

Spring 2024

Instructor: Ivaylo Ilinkin
Email: iilinkin @ gettysburg . edu    
Office: Glatfelter 208
Hours: MTuW 3:30-5pm
Th 3-4 & 5-6pm

Textbook

Dasgupta, Papadimitriou, and Vazirani, Algorithms.

On-line Information

All relevant information for the course is available at:

http://www.cs.gettysburg.edu/~ilinkin/courses/Spring-2024/cs216/

Check this page at least twice a day, since this will be the only source of last-minute pertinent information.

General Description

CS 216 introduces the fundamental data structures in computer science and the algorithms that operate on these data structures. The course will study different data structure implementations and will examine the tradeoffs in efficiency with respect to the basic operations of searching, insertion, and deletion. The course will also study classical computer science algorithms and analyze their complexity. This study builds on material from CS 112 and CS 201. In turn, many of the upper-level courses build on the material from CS 216.

Prerequisites

The course assumes successful completion of CS 112 (a grade of C- or better). Consequently, abstract reasoning and ability to decompose large problems into small manageable pieces, along with significant programming experience are expected in CS 216.

Course Goals

Upon completing this course you should be able to:
  1. explain the differences between the fundamental data structures

  2. determine what data structures to use in a particular problem domain

  3. provide efficient implementation for data structures and algorithms

  4. analyze the complexity of algorithms using Big-O notation

  5. use recursion as a problem solving technique

Curricular Goals

CS 216 fulfills the Quantitative, Inductive, and Deductive Reasoning aspect of the Multiple Inquires curricular goal.

Course Outline

The course will cover the following topics (not necessarily in this order):
  1. Stacks and Queues
  2. Heaps
  3. Hash Tables
  4. Linked Lists
  5. Binary Trees
  6. Balanced Trees
  7. Graphs
  8. Graph Traversal Algorithms
  9. Shortest-Path Algorithms
  10. Minimum Spanning Tree Algorithms
  11. Big-O Notation and Algorithms Analysis
Topics 1-6 will be covered via handouts, lecture notes, or your own course notes. Topics 7-11 correspond roughly to Chapters 3, 4, and 5 in ALG (if time permits, we may cover sections from other chapters).

Workload

The general guideline is to be prepared to spend at least 2-3 hours outside of the classroom for each lecture hour. You should expect to spend significant amount of preparation for this course working on a computer to try out example programs and to develop the programming assignments.

You are encouraged to form study groups with colleagues from the class. The goal of these groups is to clarify and solidify your understanding of the material, and to provide for richer and more engaging learning experience. However, you are expected to turn in your own code that represents the results of your own effort. See the policy outlined in the "Scholastic Conduct" and "Assignments" sections of the syllabus, or talk to the instructor, if you are unsure about the expected level of collaboration.

Attendance

Attendance is expected for each class period. Two late arrivals will count as one absence. If you are late, make sure to notify the instructor after class.

Note that excessive absence will lead to a formal request to withdraw from the course. For more information see:

Gettysburg College Attendance Policy

Assignments and Exams

There will be several programming assignments during the semester. Each programming assignment will be evaluated based on a number of criteria including design, correctness, documentation, and testing. Note that a correctly working program may not receive full credit, if it does not demonstrate good design or has poor documentation.

In general, you are free to discuss the assignments with others and brainstorm high-level ideas but you must work out the details of the solution on your own and write your own code. You may consult on-line resources, as long as they contain only expository material. Resources that contain solutions to the assigned (or very similar) problems, pseudocode, or code written in a programming language may not be consulted. If group work is allowed, this will be mentioned explicitly in the guidelines of the particular assignment.

Here is a set of guidelines of practices that are not allowed while working on the assignments and exams. This is not an exhaustive list -- talk to the instructor if you are unsure about the allowed level of collaboration:

Here are the relevant dates and how much each portion of your work will contribute to your final grade:

Programming
Assignments
Feb 1, Feb 8, Feb 15, Feb 22, Mar 7, Mar 21
Mar 28, Apr 4, Apr 18, Apr 25, May 2
43%
Exam 1 evening of Wed, Feb 28, at 7:00-8:30pm 17%
Exam 2 evening of Wed, Apr 10, at 7:00-8:30pm 17%
Final Exam TBD (combine sections) 22%
Colloquium attend at least 1 1%

The exams will be closed-book, closed-notes, closed-neighbor, closed-calculator. The work you turn in on the exams must represent solely the results of your own individual effort.

Note the dates of the exams carefully --- make-up exams will be given only under extreme circumstances provided that arrangements are made at least a week in advance.

Late Assignments

Late assignments will incur a 1% penalty for each late hour (or fraction thereof) for a maximum of 10%. Assignments that are more than 1 day late will not be accepted. This is intended to give some flexibility and is meant to be used when all but a small portion of the assignment has not been completed. Note that there is no course staff on duty on Friday and it will not be possible to get help: ideally most of the major difficulties will have been discussed by Thursday.

Note that each assignment is approximately 4% of the final grade and incomplete work will likely receive some partial credit, so an individual assignment does not have significant negative impact.

Fourth Hour

This course meets the Fourth Hour requirement through the formal requirement that the weekly programming assignments have proper documentation (in Javadoc style) and extensive unit test coverage (in JUnit framework). The grade for each assignment will include a component on documentation and testing.

Grading

Grading for this course is based on the scale below. For borderline cases attendance, participation, and apparent trend of improvement during the semester may be taken into consideration.
[93, 100]A
[90, 93)A-
[87, 90)B+
[83, 87)B
[80, 83)B-
[77, 80)C+
[73, 77)C
[70, 73)C-
[67, 70)D+
[63, 67)D
[60, 63)D-
[0, 60)F
Your final grade will be at most one letter grade higher than the lower of your overall exam and overall homework score. For example, if your overall exam score is D+, your final grade will be at most C+.

You are expected to receive the equivalent of at least a C- on the final exam in order to pass the class.

Each homework that is not turned in will have the additional effect of lowering your final grade by one grade bracket.

Incompletes

Incompletes (or make-up exams) will be considered only when a serious family or personal emergency arises and all but a small portion of the work has been completed. (Incompletes will not be given for reasons such as a heavy course load.) Arrangements for the incomplete, including obtaining all required documentation, should be made as soon as possible.

Note that excessive absence will lead to a formal request to withdraw from the course.

Special Accommodation

Students needing special accommodation are encouraged to contact the Academic Advising Office as soon as possible so that all required documentation can be processed and all necessary arrangements can be made on time. For more information on the services available at Gettysburg College see:

Gettysburg College Special Accommodation

Scholastic Conduct

Students at Gettysburg College are governed by the Honor Code. Failure to abide by the scholastic conduct expected on assignments or exams is a violation of the Honor Code tradition at Gettysburg College. It is your responsibility to read carefully the "Assignments" section of the syllabus which outlines the policy on assignments and exams. If you need help and are unsure about the expected level of collaboration, see the instructor for clarification and help with the assigned material.

For further general information on the Honor Code tradition at Gettysburg College see:

Gettysburg College Honor Code