Algorithms
and
Data
Structures

Spring 2021
course
site
-->

syllabus

info

A survey of the most common patterns of storing digital information and the recipes to search, process, and access that information. Topics include data structures such as arrays, linked lists, stacks, queues, hash tables, and trees and algorithms such as brute force, divide and conquer, and recursion. Students will learn to compare the efficiency of these recipes and storage techniques, as well as how and when to use them. This intermediate level course will use a combination of the Python and C languages, reviewing and explaining specific features as needed and also practicing programming in those languages.

A computer (MacOS, Windows, or Linux) onto which Python and related modules and tools may be installed is required.

We'll use a variety of online sources rather than a single textbook; see the resources page.

learning outcomes

Students will

schedule

This is a preliminary schedule which will likely change as we go along.

 Feb         18       getting started
        22   25       analysis, O(), plotting
 Mar     1    4       data structures 101 : linked lists, stacks, que
         8              ... abstract vs implement, priority queue/heap
        15   18         ... also in C ; implement hash table (?)
        22   25       sorting
        29    1     ... midterm project
 Apr          8       recursion & binary search ("divide & conquer)
        12   15       graph search : depth, breadth
        19   22       graph algorithms : djisktrs etc
        26   29       game search & "combinatorial" in skienna ; "brute force"
 May     3    6       start final projects
        10   13       To be decided
        17   20
        24

format

The course will consist of

workload

As a 4 credit course, you should expect to spend roughly 12 hours of time per week on this course, including class time.

expectations and academic integrity

A note on attribution, code, and the culture of programming...

The "culture" surrounding programming is one that encourages sharing and collaboration. Open-source software, online communities such as StackOverflow, GitHub/Gist, and the fast-paced nature of the technology world have all led to a vast collection of places where programmers can quickly and easily get help in solving common and not-so-common problems. This is a fantastic and vital part of being a 'programmer', and I encourage you to use and contribute to these communities.

This being said, there are a few important guidelines that MUST be followed in order to strike a balance between collaboration and academic integrity:

Here's an example of quoting your sources : a lot of the preceding language in this syllabus is from Andrew Cencini's Fall 2019 edition of this course. ("Hi Andrew!")

grading

The overall course grade will be the average of

The homework grade is based on the number of assignments completed and submitted on time.

Project grades will be based on

If circumstances outside of your control - illness, technology issues, your dog ate your homework - get in the way, please do let me know, and we will try to work things out.

questions

Questions about any of this? Ask Jim.

college policies

accommodations

Bennington College provides reasonable accommodations to students with documented disabilities when such accommodations are requested and necessary to ensure equal access to College programs and facilities. If you believe you are entitled to an accommodation speak with Katy Evans, the Academic Services and Accommodations Advisor, about any disability-related needs. If approved, you will receive a memo detailing your specific accommodations; it is your responsibility to provide me with the memo and discuss the implementation of accommodations. Note that I will not be aware of your needs if you do not share this memo with me. Accommodations are not retroactive, so the sooner we meet to discuss your needs, the better. Also, students experiencing mental and/or physical health challenges that are significantly impacting their academic work are encouraged to speak with their faculty advisor and member of Academic Services (academicservices@bennington.edu or 440-4400) about the impact and to connect with resources through health and psychological services (440-4426 or 440-4451).

basic needs

At Bennington College, we understand that basic needs (food, housing, and wellness) have a direct impact on academic performance, mental-emotional-physical health, professional development, and holistic success of our students. If you have a personal circumstance or need that will affect your learning or performance in this course, please let me or your faculty advisor know so that we can direct you to available resources to help support you during the term.

inclusion

Bennington College is committed to fostering the intellectual growth of all students, and to creating a learning environment where human cultural diversity is valued and respected. To that end, in this course all students can expect a respectful, welcoming and inclusive environment. I hope that all students in this course will openly share their unique perspectives and, just as importantly, respect the perspectives, comments, and contributions made by every other student and guest that participates in this course during the term. If you feel that at any time that this goal is not being met, please don’t hesitate to see me, or speak with a college administrator (e.g., from The Office of Diversity & Inclusion, Student Life, or Academic Services) to share your concern.

https://cs.bennington.college /courses /spring2021 /algorithms /syllabus
last modified Thu February 18 2021 3:30 pm