CS35: Data Structures and Algorithms








Aug 31

Github Setup

Intro to C++, Data Structures, & Algorithms
  • Ch. 1-6 of Python 2.x to C++
  • Schaffer 1
Lab 1 (C++ Intro)

Sep 01


Sep 03



Sep 07


Arrays, Objects, and Memory
  • Ch. 7, 8, 12 of Python 2.x to C++
Lab 2 (Testing)

Sep 08


Sep 10


Drop/add ends (Sep 11)


Sep 14

  Complexity Analysis
  • Schaffer 3
Lab 3 (Enigma)

Sep 15


Sep 17



Sep 21

  • Schaffer 4.1
Lab 4 (Complexity)

Sep 22


Sep 24



Sep 28

First Quiz (Practice)

Stacks and Queues
  • Schaffer 4.2, 4.3
Lab 5 (Spell Checker)

Sep 29


Oct 01

Final Exam Date Announced



Oct 05

  • Schaffer 7.1, 7.2, 7.4, 7.5
Lab 6 (Maze Solver)

Oct 06


Oct 08



Oct 12

Fall Break

Oct 13

Oct 15


Oct 19

  Binary Trees
  • Schaffer 5.1—5.4

Oct 20


Oct 22



Oct 26

  Balanced Binary Trees
  • Schaffer 13.2
Lab 7 (BST)

Oct 27


Oct 29



Nov 02

Second Quiz (Practice)

Priority Queues
  • Schaffer 5.5, 7.6

Nov 03


Nov 05


CR/NC/W Deadline (Nov 06)


Nov 09

  Hash Tables
  • Schaffer 9.4
Lab 9 (Priority Queue)

Nov 10


Nov 12



Nov 16

  • Schaffer 11-11.3
Lab 10 (Hash Table)
due Nov 24

Nov 17


Nov 19



Nov 23

Third Quiz (Practice)


Nov 24


Nov 26



Nov 30

  • Schaffer 11.4-11.5
Lab 11 (Graphs)
due Dec 8

Dec 01


Dec 03



Dec 07

No Lab (Friday Schedule)


Dec 08


Dec 12

Final Exam (9am-12pm, SC199)



There is a discussion group on Piazza for this course. Use it to ask questions about clarifications on the lectures and labs, and do answer questions from your classmates if you know the answer! Keep in mind that the discussion group has the same academic integrity policy as the course, so you shouldn’t, for example, share code from your solution in a public Piazza question. You can share examples from lecture, lab, or the book to ask questions, but never copy your own code into a public question. If you aren’t sure if your question is OK to post publicly, it's fine to send it as a private message and the course staff can promote it to be publicly visible (and answerable). In fact, a private message to the Piazza board is the best place to ask a course or lab content question.

Late Work

Late lab and written assignments will not normally be accepted. There are a few reasons for this: Sometimes, an assignment and its solution will be discussed in the lecture immediately after it is due, so it’s infeasible to grade late work fairly. In addition, many assignments build on one another, so it’s best to avoid a policy that lets you slip behind. Special exceptions can be made if you contact me well in advance of the deadline (having a lot of work in other classes does not qualify for a special exception). Even if you do not fully complete an assignment, you should submit what you have done to receive partial credit.

Some labs may take a considerable amount of time, so you are strongly encouraged to begin working on assignments well before the due date.

Academic Accommodations

If you believe that you need accommodations for a disability, please contact Leslie Hempling in the Office of Student Disability Services (Parrish 113) or e-mail lhempli1 to set up an appointment to discuss your needs. As appropriate, she will issue students with documented disabilities a formal Accommodation Letter. Since accommodations require early planning and are not retroactive, please contact her as soon as possible. For details about the Student Disabilities Service and the accommodations process, visit http://www.swarthmore.edu/student-life/academic-advising-and-support/student-disability-services.xml. You are also welcome to contact me privately to discuss your academic needs. However, all disability-related accommodations must be arranged through Leslie Hempling in the Office Of Student Disability Services. To receive an accommodation for a course activity, you must have an Accommodation Authorization letter from Leslie Hempling and you need to meet with me to work out the details of your accommodation at least two weeks prior to any activity requiring accommodations.

Academic Integrity

This course is governed by the college’s policies on academic honesty and computing, which you can find at http://www.swarthmore.edu/student-handbook/academic-policies. I will pursue disciplinary action in cases of misconduct.

As a general rule, you should not look at, or provide advice on, code or prose that doesn’t belong to you or your lab partner.


Your grade will be calculated from:

There is no midterm exam.


Participation includes:

Lab Assignments

Lab assignments are typically handed out at the beginning of the lab period on Monday, and due at 11:59pm the following Sunday. We’ll let you know in advance about deviations from this pattern. Assignments will be handed in via Github, which you will get practice and instruction on using over the first few labs. Several labs will be done in pairs, with the partner policy discussed on a per-assignment basis. The distribution of the assignment will make it clear which assignments are solo and which are in pairs. Some lab assignments may involve a significant written component instead of or in addition to the programs you write.


Quizzes will be announced well in advance, and will take place in either lecture or lab on the scheduled date. Notify the professor at least a week in advance if you cannot attend on the day of a quiz – if you don't give this much warning and don't show up, you get a zero on the quiz. Quizzes will come with a study guide.