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. By concentrating on data structures and algorithms, you will obtain the basic building blocks by which all large software projects are built. These topics are central to every sub-discipline in computer science, and also connect to central concepts across the sciences. 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. At the end of this course, you will have obtained the ability to successfully analyze problems in the discipline. You will also take your first steps towards developing the skills necessary to synthesize and evaluate the must fundamental questions in the field.
Lecture Section 1: | Mon., Wed., Fri. 9:30AM-10:20AM, Science Center 181 |
Lecture Section 2: | Tue., Thu. 11:20AM-12:35PM, Science Center 199 |
Lab A: | Monday 1:15PM - 2:45PM, Clothier 016 |
Lab B: | Monday 3:00PM - 4:30PM, Clothier 016 |
Lab C: | Tuesday 1:05PM - 2:35PM, Clothier 016 |
Lab D: | Tuesday 2:45PM - 4:15PM, Clothier 016 |
Instructors: | Andrew Danner (Lecture 1, Lab A, Lab B) | Martin Gagné (Lecture 2, Lab C, Lab D) |
Email: | adanner at cs dot swarthmore.edu | mgagne1 at cs dot swarthmore.edu |
Office: | Science Center 247 | Science Center 270 |
Office Hours: | Wednesday 10:30am-11:30am Thursday 10:00am-11:00am and by appointment |
Monday 3:00PM-4:00PM Wednesday 2:00PM-3:30PM Thursday 2:00PM-3:30PM and by appointment (hours not final yet) |
Lab Assignments: | weekly, due Sunday 11:59PM |
Ninjas: | Jeff Novak, Kyra Moed, Kei Imada, Colin Pillsbury |
Ninja Sessions: | Thursday 7-9PM: Sci 256 |
Saturday 2-4PM: Sci 256 |
Course Discussion: | Piazza (by invitation, mandatory enrollment) |
There is no required textbook for the course, but you may consider either of two text books as a companion reference for the course:
In addition, you will need to read A Transition Guide from Python 2.x to C++ by Michael Goldwasser and David Letscher for the first week or two.
Learning how to debug code efficiently is part of this course material. Many of the lab assignments in this course will be more involved than what you have seen in CS21, and debugging will be essential. Some references for debugging tools:
This course provides an introduction to object oriented programming as well as the C++ program language. Each could warrant their own course of study and we highly recommend you study them further. Some references of use: