CS35 - Data Structures and Algorithms
Spring 2012

Schedule | Study sessions | Grading | Quiz policy | Lab policy | Succeeding in CS35


  • There will be three review sessions for the final exam, all in the main lab (Science Center 240):
    • Sunday, 2-4pm
    • Monday, 1-3pm
    • Monday, 7-9pm
    I'm also available by appointment any time between now and Tuesday.
  • The final exam study guide has been posted below.

Provide anonymous course feedback here. Please be constructive in any comments

This syllabus is a living document; please be aware that many elements on this page will change throughout the semester, including the course schedule. It is the student's responsibility to review this page periodically for updates.

Class information

       Room: Science Center 128
       Lecture: Tuesday, Thursday 1:15-2:30pm
       Lab: F 1:00-2:30pm and 2:40-4:10pm, Science Center 240
       Required textbook: Data Structures and Algorithms in C++, 2nd edition
            by Goodrich, Tamassia, and Mount.

Instructor information

       Professor: Ameet Soni
       Office: Science Center 255
       Phone: 6288
       Office hours: Monday 10:00am - noon or by appointment, or you can stop by whenever my door is open.

Welcome to CS35. This course continues the broad introduction to computer science begun in CS21, providing a general background for further study in the field. Topics to be covered include object-oriented programming in C++, advanced data structures (such as priority queues, trees, hash tables, and graphs), advanced algorithms, as well as software design and verification.

To enroll in this course you must have completed CPSC 21 or obtain permission from the instructor. This course is designated as a natural sciences and engineering practicum.

Goals for the course

By the end of the course, you will have developed the following knowledge and skills:

Student support

Student Support Coordinator: Frances Ruiz (Office: Science Center 257, Phone: 6062)

CS35 Ninjas (student mentors): Phil Koonce, Chloe Stevens, Emily Dolson, and Kyle Erf

The CS Ninjas will assist me in our in-class lab sessions and run study sessions in the main CS lab (Science Center 240) on Monday evenings from 7 - 11 p.m.

You are encouraged to participate in these study sessions to prepare for quizzes, to discuss programming concepts, and to get friendly assistance in working on homework assignments.


To be determined, historically grades will be weighted as follows:

40%Lab assignments
5%Class participation
25%Final exam

Quiz policy

Quizzes will be given at the beginning of class on the days posted in the Announcements section of the Schedule. Please look over these dates carefully and contact the professor in advance if you cannot be in class for a quiz.

If you are not present at the start of class on the day of a quiz, but make it to class before the end, then you may take the quiz. Otherwise you will receive a zero for that quiz.

Lab policy

Unlike CS21, lab attendance in CS35 is required. New lab assignments will be introduced in our Friday lab sessions, and lab sessions will sometimes contain new course material, required practice exercises, and written quizzes.

Lab assignments are submitted electronically using the handin35 program, and are typically due by 11:59 p.m. on Wednesday nights. You may submit your assignment multiple times, but each submission overwrites the previous one and only the final submission will be graded. Late assignments will not be accepted unless you contact the professor before the deadline, and even then extensions are only provided for extreme circumstances beyond your control. Even if you do not fully complete a lab assignment you should submit what you have done to receive partial credit.

Academic accommodations

If you believe that you need accommodations for a disability, please contact Leslie Hempling in the Office of Student Disability Services, located in Parrish 130, or e-mail lhempli1 to set up an appointment to discuss your needs and the process for requesting accommodations. Leslie Hempling is responsible for reviewing and approving disability-related accommodation requests and, as appropriate, she will issue students with documented disabilities an Accommodation Authorization Letter. Since accommodations may require early planning and are not retroactive, please contact her as soon as possible. For details about the Student Disabilities Service and the accomodations process, visit http://www.swarthmore.edu/x7687.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 Accomodation Authorization letter from Leslie Hempling and you need to meet with me to work out the details of your accommodation at least one week prior to the activity.

Academic integrity

Academic honesty is required in all work you submit to be graded. With the exception of your lab partner on lab assignments, you may not submit work done with (or by) someone else, or examine or use work done by others to complete your own work. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. This includes sharing solutions after the due date of the assignment.

All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.

Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. You may discuss assignment specifications and requirements with others in the class to be sure you understand the problem. In addition, you are allowed to work with others to help learn the course material. However, with the exception of your lab partner, you may not work with others on your assignments in any capacity.

``It is the opinion of the faculty that for an intentional first offense, failure in the course is normally appropriate. Suspension for a semester or deprivation of the degree in that year may also be appropriate when warranted by the seriousness of the offense.'' - Swarthmore College Bulletin (2008-2009, Section 7.1.2)

Please see me if there are any questions about what is permissible.

How to succeed in CS35

CS35 is substantially faster-paced than CS21, covering a broad range of topics. To succeed you should:


For the reading assignments the section numbers are inclusive, so "1.1-1.1.2" means you should read all the sections from 1.1 up to and including section 1.1.2. This is a tentative schedule, it may change as we go.

1 Jan 17   Introduction to C++
Ch1: 1.1-1.1.2,
page 10(strings),
page 16(using), 1.2-1.4.1
In-lab Friday
Lab 1
Jan 19  
2 Jan 24   Object-oriented design in C++
Ch1: 1.5-1.5.2, 1.6-1.7.4
Ch2: 2.1-2.2.5
Lab 2
Jan 26 Drop/Add ends (Jan 27)
3 Jan 31 Quiz 1 study guide Complexity analysis
Ch4: (all)
Lab 3
Feb 02 Quiz 1 (Feb 03)
4 Feb 07   Lists
Ch6: 6.1-6.1.3
Ch3: 3.2-3.2.4
Ch6: 6.2-6.2.3
gdb commands
gdb guide
Lab 4
Feb 09  
5 Feb 14   Stacks and queues
Ch5: 5.1-5.2.5
Lab 5
Feb 16  
6 Feb 21   Sorting
Ch11: 11.1-11.3
Lab 6
Feb 23  
7 Feb 28 Quiz 2 study guide Trees
Ch7: 7.1-7.3.3, 7.3.6
Ch10: 10.1-10.1.2
Mar 01 Quiz 2

Mar 06

Spring break

Mar 08

8 Mar 13   Balanced search trees
Ch10: 10.2-10.2.1
Lab 7
Mar 15  
9 Mar 20   Priority queues
Ch8: 8.1-8.1.3, 8.1.5, 8.3-8.3.3, 8.3.5
Lab 8
Mar 22  
10 Mar 27   Dictionaries and hash tables
Ch9: 9.1-9.1.1, 9.2-9.2.6, 9.5-9.5.1
Lab 9
Mar 29  
11 Apr 03 Quiz 3 study guide Introduction to graphs
Ch13: 13.1-13.3.2, 13.3.5-13.5
Lab 10
Apr 05 Quiz 3 (Apr 06)
12 Apr 10   Shortest paths
Ch13: 13.6
Lab 11
Apr 12  
13 Apr 17   More graphs Final Report
Apr 19  
14 Apr 24 Final study guide Course wrap-up  
Apr 26      

May 08

Final 2:00pm–5:00pm Sci 199