CS209 Data Structures and Mathematical Foundations
Spring 2024
Skidmore College
Syllabus

Instructor:
  Dr. Michael Eckmann
  Associate Professor
  Computer Science Dept.
  email: meckmann@skidmore.edu
Instructor webpage: http://meckmann.domains.skidmore.edu/
Office hours:
Mondays 1:20 p.m. - 2:20 p.m.
Tuesdays 1:00 p.m. - 2:00 p.m.
Wednesdays 1:50 p.m. - 2:50 p.m.


Course webpage: http://meckmann.domains.skidmore.edu/2024Spring/cs209/

=====================================================

Class Meetings

LECTURE  
M W F  
09:05 A.M. - 10:00 A.M.  
CIS 311
LAB  
Thursday  
12:40 P.M. - 02:30 P.M.  OR 2:40 P.M. - 04:30 P.M.
CIS237

=====================================================

Course Readings

Readings as handouts/links.

=====================================================

Course Overview

An introduction to data structures and the mathematical foundations of algorithms. Properly organizing the data within a software application is critical to the efficiency of the application’s execution as well as the ease with which the application is developed. This course will introduce the fundamental data structures used in computer science, including linked lists, stacks, queues, priority queues, search trees, hash tables and graphs. In addition, the course will introduce foundational discrete mathematical concepts used in the design and analysis of algorithms, including mathematical induction, asymptotic analysis and recurrence relations.
=====================================================

Course Goals and Objectives

1. To understand, be able to use and be able to write computer programs
   utilizing the various data structures that we'll cover.

2. To understand, be able to use and be able to write computer programs
   utilizing the various algorithms that we'll cover.

3. To be able to analyze algorithms that solve the same
   problem. Then be able to determine which is more efficient and why.

4. To become more proficient computer programmers. Learn and practice
   good techniques for testing and debugging.

=====================================================

Attendance

Attendance is mandatory. I will take physical attendance as well as
"attentiveness" attendance.

Any exams given cannot be made up. Those students who are absent when an
exam is given are given a zero for that exam. This policy is strict.

=====================================================

Assignments

The course will have approximately 5 assignments. The
submission procedure will be given when it comes time for you to submit
programs.

One policy that you must follow is: Give proper attribution to any code
you get out of a book or off the web or any code that you yourself did
not write. That is, if you use code (even a small amount) taken from
another source (the text book or lecture notes or elsewhere), you *must*
cite the source in a comment in your program. If you do not, it may be
considered plagiarism. The program source code will be read. Source code
documentation and organization should make your program easy to read,
and convey your understanding of the techniques your program
demonstrates. Poor documentation and programming style will result in a
lower score. (Note: This policy is borrowed from G. Drew Kessler's
(Lehigh University) program policy. See, I gave proper acknowledgment. ;-)

In addition to programming assignments, there will be conceptual
homework assignments.

Assignments and class handouts will be available on the World Wide Web at
URL http://meckmann.domains.skidmore.edu/2024Spring/cs209/

Please type all assignments.

Late assignments will be accepted, but with penalty.

=====================================================

Exams

The course will have two exams during the semester in addition to a final exam.

You are required to take the exams at the scheduled place and time. Any
exams given cannot be made up. Those students who are absent when an exam
is given are given a zero for that exam. However, if there is a
compelling reason for you to need to miss an exam, you MUST contact the
instructor in advance. This policy is strict.

=====================================================

Grading Policy

A grade is first calculated by the following scheme:
17% Exam 1
23% Exam 2
35% Final Exam
17% Programming Projects and other homework
08% Labs

However, your final grade will be influenced either positively or
negatively by how I, the instructor, evaluate you on the following:
a) class participation
b) good attendance (not just physical)
c) increase of performance throughout the semester,
d) quality/effort of your program/homework submissions (aside from just
   correctness)
e) lateness of your program/homework submissions


Class participation includes answering questions in class, asking
questions in class, visiting me during office hours, or by appointment
and asking questions through email. Class participation is based on my
assessment of the student's voluntary contribution, plus their responses
to questions I ask them.

If assignments are habitually submitted late or one is more than a couple
of days late, then this can negatively effect your overall course grade.

Each program/homework/exam may be graded on a curve (with assignments not
turned in not affecting the curve). Programs and homework assignments will
have point values that reflect their relative weights.

In general each curve will have a mean between B- (2.7) and B (3.0),
depending on my assessment of the overall performance.

=====================================================

Academic Integrity

I list here the policies by which the students of this class are
expected to abide.
1. Improper Collaboration Policy.
2. Skidmore Honor Code and Academic Integrity.
3. The Ethics of Scholarship.

Failure to abide by these policies results in a negative learning
environment and you should expect to be held accountable.

=====================================================

Students with Disabilities
Please bring me your semester memo of accommodations as soon as you
obtain it. If you think that you need accommodations but do not yet have
them, set up a meeting with the Coordinator for Students with
Disabilities in the Office of Student Academic Services in Starbuck
Center.

=====================================================

Title IX Statement
Skidmore College considers sexual and gender-based misconduct to be one
of the most serious violations of the values and standards of the
College. Unwelcome sexual contact of any form is a violation of students'
personal integrity and their right to a safe environment and therefore
violates Skidmore’s values. Sexual and gender-based misconduct is also
prohibited by federal regulations. Skidmore College faculty are committed
to supporting our students and upholding gender equity laws as outlined
by Title IX. If a student chooses to confide in a member of Skidmore's
faculty or staff regarding an issue of sexual or gender-based misconduct,
that faculty or staff member is required to tell Skidmore’s Title IX
Deputy Coordinator. The Title IX Deputy Coordinator will assist the
student in connecting with all possible resources for support and
reporting both on and off campus. Identities and details will be shared
only with those who need to know to support the student and to address
the situation through the college's processes. If the student wishes to
confide in a confidential resource, The Counseling Center Staff, Health
Services, and Victim Advocates are all options available.
More information can be found at https://www.skidmore.edu/sgbm/ or by
contacting the Title IX Deputy Coordinator.

=====================================================

Topics

Python review

Intro to Algorithm Analysis
Big O, Big Theta, etc.
Mathematical Induction

Linked Lists
Operations: add a node, insert a node, delete a node, etc.

Trees
General trees
Binary trees
Traversals

Binary Search trees
various operations on them

Recursion, Recurrence Relations

Divide and Conquer
Merge Sort

Stacks
Queues

Priority Queues
Deques
Hash functions and tables