Introduction
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.
Course Basics
Schedule
Class: |
Tue., Thu. 9:55 - 11:10AM, Science Center 199 |
Lab A: |
Thursday 1:05 - 2:35PM, Science Center 256 |
Lab B: |
Thursday 2:45 - 4:15PM, Science Center 256 |
Contact Information
Professor: |
Lisa Meeden |
Email: |
meeden at cs dot swarthmore.edu |
Office: |
Science Center 243 |
Office Hours: |
Tuesday 1:30-3:30pm Wednesday 1:30-3:30pm And any time my door is open |
Additional Support
Ninja Sessions: |
Monday, Tuesday 7-9PM: Sci 256 |
Ninjas: |
Daniel Chaiken, Michael Davinroy, Michelle Ma, Kyra Moed,
Haochen Wang, and Bayliss Wagner |
Course Discussion: |
Piazza (by invitation and mandatory) |
Course Goals
By the end of the course, you will have developed the
following knowledge and skills:
- Understand the basic principles of object-oriented programming (OOP)
- Learn how to implement OOP programs in C++
- Develop the skills to analyze the performance of algorithms in
terms of big-O notation as well as prove an algorithm's
correctness
- Understand the difference between an abstract interface and the
implementation of that interface
- Describe a data structure as an abstract data type (ADT) and
provide various implementations of that ADT in C++
- Develop the ability to compare and contrast
the performance of data structures and algorithms
- Learn how to apply data structures and algorithms to solve
problems of moderate complexity
- Develop scientific communication skills
Student Responsibilities
We have outlined the skills and objects this course promises to provide you.
For this promises to be upheld, you will need to commit towards the policies
outlined below. CS35 is substantially faster-paced than CS21, covering a broad
range of topics. To succeed you should:
-
Attend class
The primary introduction to course material is through class lecture.
Additionally, we often do learning exercises during class, which
give you immediate experience with the material we are covering.
While I am more than happy to help with any material in office hours, priority
will be given to students who attend and participate in lecture. Office hours
are not to make up for missed lecture.
- Come to lab prepared
Lab will introduce new
content and be an opportunity to work in teams on paired assignments.
Lab attendance is mandatory.
- Participate actively in learning process
Showing up is necessary, but not sufficient to success in the course.
To fully develop your analytical skills, you are expected to participate
in class discussion. This includes asking questions during lecture portions
and engaging your peers during short class exercises. Studies
show active involvement is the number one determinant of student success.
-
Start the lab assignments early
This is not always easy to do, but if you can get in the
habit of doing this, you will be much better off. As the labs get
longer and more difficult, starting early will give you plenty of time
to mull over the lab problems even when you aren't actively writing
your solution.
-
Practice, practice, practice
The only effective way to
learn the material and pass the tests and the final is to consistently
do the labs.
-
Seek help early and often
Because course material builds
on previous material, it is essential to your success in this class
that you keep up with the course material.
-
Attend CS35 Study Sessions
The student Ninjas hold two
evening study sessions each week. You are encouraged to participate
in these sessions. The Ninjas will help you prepare for tests, will
provide additional instruction in programming concepts, and will
provide friendly assistance on your lab assignments.