Data Structures :: CS 201 :: Winter 2021


calendar :: lectures :: labs

Contact Information

Instructor: Aaron Bauer
Email: awb
Office: Olin 339

Course Information

Course Classroom: The Internet. This course will follow a flipped classroom model. Required video lectures and readings will be posted for each Monday/Wednesday/Friday to be completed asynchronously. Class meetings will be optional, synchronous sessions for practicing the concepts from the asynchronous material.

Course Time: 4a (MW 1:00 – 2:10pm, F 1:50 – 2:50pm), these times will be used for learning blocks, consisting of practice exercises, demos, guidance on getting started on labs, and Q&A. Attendance is recommended, but not required. You may choose to make attendance a formal part of your grade, see the course policies below.

Office Hours: I will hold weekly evening lab hours on Discord (all Central time):

You'll see me in one of the voice channels on the left, so just click it to join and say hello. I also have 1-on-1 appointment slots on Thursdays from 1:00-3:00pm: sign up for an open slot! I am also very happy to arrange meetings at other times, so just shoot me an email.

Prefect: Ellie Mamantov, mamantove Ellie will hold option review sessions

During sessions, we will review class material, work on practice problems, and try to answer any questions you have. The sessions are very informal, so you can drop in at any time. Your attendance (or lack thereof) will not be passed on to Aaron.

Ellie is always happy to set up 1-1 meetings. Just reach out with a few times you would be free and we will find a time to meet. She will be sending out reminders about sessions through Moodle, but you are welcome to reach out to her on email or discord.

Course Staff: Tessa Newman-Heggie, newmant2 and Anna Neiman-Golden, neimana
Lab assistant hours on Discord
Instructions for using Discord

Course Text: Duane A. Bailey, Java Structures, √7 edition, available in pdf here (book web page)
There may also be assigned readings from Open Data Structures (Pat Morin, link), java4python (link) and the online version of Algorithms, 4th edition (Sedgewick and Wayne, link)

Announcements will be made via Moodle, so watch for those emails.

Programming Environment: We will be using the Java programming language. You are free to use whatever code editor you prefer, though all the lab assignments will be configured to work with Visual Studio Code. The first lab assignment (Lab 0) will walk you through getting Java and VS Code set up on your own computer.

Course Links

Course Description

From the catalog:
Think back to your favorite assignment from Introduction to Computer Science. Did you ever get the feeling that "there has to be a better/smarter way to do this problem"? The Data Structures course is all about how to store information intelligently and access it efficiently. How can Google take your query, compare it to billions of web pages, and return the answer in less than one second? How can one store information so as to balance the competing needs for fast data retrieval and fast data modification? To help us answer questions like these, we will analyze and implement stacks, queues, trees, linked lists, graphs, and hash tables.
This course will focus on choosing the right data structure for the task and understanding the tradeoffs involved. We will use Java as our programming language. No previous Java programming experience is necessary, though the equivalent of one prior programming course in Python or another language is expected. By the end of this course, you should be able to:

Course Policies

Grading breakdown:

Percentage Letter
≥ 93 A
≥ 90 ≥ A-
≥ 87 ≥ B+
≥ 83 ≥ B
≥ 80 ≥ B-
≥ 77 ≥ C+
≥ 73 ≥ C
≥ 70 ≥ C-
≥ 67 ≥ D+
≥ 60 ≥ D
< 60 F

In the first week of the course, you will commit to one of two grading breakdowns:

Changing grading option: If during the term your circumstances change and attending the learning blocks becomes difficult or impossible, you are permitted to switch from Option A to Option B. To make the switch, simply send me an email stating that you wish to do so. A one-way switch from A to B is the only such change allowed.

Course grade derivation: Course grades are computed by the sum of the points earned divided by the maximum total point. Course grade percentages are converted to letters as shown in the accompanying table. The minimum percentage required to achieve a given letter grade may be adjusted downward (only to students' benefit), but never upward. If your percentage grade satisfies the constraint in the left column, then your letter grade will satisfy the constraint in the right column of the same row. Each student's grade is determined independently without consideration of other students' grades.

Late Policy: Deadlines will be given with each assignment. These deadlines are strict. There will be no credit for late work. For the entire term, you have four late days. You are advised to use them conservatively. On partner labs you may only use late days if all members of the group have them available, and all members of the group will be charged for each late day used. They must be used in 24-hour (integer) chunks. One or more late days can be activated on an assignment by emailing me before the assignment is due. There is no penalty whatsoever associated with using a late day. This policy may not be the same as in your other classes. You are responsible for understanding it if you choose to submit late work.


A note on inclusivity:

please treat your classmates with kindness and respect, both inside the classroom and out. Classrooms can be vulnerable environments; asking questions and expanding our understanding of new concepts requires us to reveal over and over again that we don't fully know something. It's okay to not know everything immediately! It's not okay to make people feel bad about what they don't know. This can happen even in subtle ways - see this page for a few ideas on how to help create a friendly learning environment. Our individual differences enrich and enhance our understanding of one another and of the world around us. This class welcomes the perspectives of all ethnicities, genders, religions, ages, sexual orientations, disabilities, socioeconomic backgrounds, regions, and nationalities.


Academic Honesty and Collaboration: (adapted from Academic Integrity at MIT)

Writing code is similar to academic writing in that when you use or adapt code developed by someone else as part of your project, you must cite your source. However, instead of quoting or paraphrasing a source, you include an inline comment in the code. These comments not only ensure you are giving proper credit, but help with code understanding and debugging. For these comments, the URL and the date of retrieval are generally sufficient. Add more details if it will help the reader get a clearer understanding of the source.

Labs in this class are intended to be primarily individual efforts or an equal collaboration between you and your partner (on labs that explicitly state they may be done with a partner). You are encouraged to discuss approaches with other students but your code and your write-up must be your own.

You may not use materials produced as course work by other students, whether in this term or previous terms, nor may you provide work for other students to use.

It's good to help other students. But as a general rule, during the time that you are helping another student, your own solution should not be visible, either to you or to them. Make a habit of closing your laptop while you're helping. You should never be in possession of a (paper or electronic) copy of a classmate's code before the due date for the assignment. Another way to articulate this: when getting help, that consultation should be in English and not in code.

It's fine to use material from external sources like StackOverflow, but only with proper attribution, and only if the assignment allows it. In particular, if the assignment says "implement X," then you must create your own X, not reuse one from an external source.

It's also fine to use any code I provide, without need for attribution.

Example 1

Example 2 Example 3 Example 4


Academic Accommodations:

Carleton College is committed to providing equitable access to learning opportunities for all students. The Disability Services office (Henry House, 107 Union Street) is the campus office that collaborates with students who have disabilities to provide and/or arrange reasonable accommodations. If you have, or think you may have, a disability (e.g., mental health, attentional, learning, autism spectrum disorders, chronic health, traumatic brain injury and concussions, vision, hearing, mobility, or speech impairments), please contact disability@carleton.edu or call Jan Foley, Student Accessibility Specialist (x4464) or Chris Dallager, Director of Disability Services (x5250) to arrange a confidential discussion regarding equitable access and reasonable accommodations.