|
Course Basics
Lecture:
|
Tuesday, Thursday 1:15PM-2:30PM, Science Center 199
|
Lab A: |
Monday 8:50AM - 10:20AM, Science Center 240 |
Lab B: |
Monday 1:15PM - 2:45PM, Science Center 240 |
Lab C: |
Monday 3:00PM - 4:30PM, Science Center 240 |
Instructors: |
Joshua Brody (lecture, Lab B, Lab C) |
Andrew Danner (Lab A) |
Email: |
brody at cs dot swarthmore.edu |
adanner at cs dot swarthmore.edu |
Office: |
Science Center 260 |
Science Center 247 |
Office Hours: |
Thursday 10AM-12PM, Friday 10AM-12PM, and by appointment |
Thursday 2:30PM-4:15PM, and by appointment |
Lab Assignments: |
weekly, due Sunday 11:59PM |
Ninjas: |
Emily Cai, Wistan Chou, Caleb Ho, Jonah Taylor-McGregor |
Ninja Sessions: |
Thursday 7-9PM |
|
Saturday 2-4PM |
Course Discussion: |
Piazza (by invitation, mandatory enrollment) |
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 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.
Course Textbook
You may rely on either of two text books for the course:
I will post readings from both books; you only need to choose one
though. I plan on using the first book when I design lectures, but I
will not necessarily follow the style of C++ coding from the book.
This book is useful for coming at material from a different view point
than lecture (some students find this confusing, others find it
useful), and there are also several problems at the end of each
chapter for studying. The second book is a freely available textbook
online exploring data structures and algorithms in C++. Both are
reliable references but is your choice which you prefer to use.
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.
Debugging references
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:
Additional references
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 I highly recommend you study them further. Some references of use:
|