Class Info
Section 2: MWF 11:30–12:20, Sci Cntr 240
Professor: Jeff Knerr
email: knerr at cs.swarthmore.edu
Office: Science Center 238A (door at the back of the lab)
Phone: X5758
Office hours: You can stop by whenever my door is open.
Other Sections:
Andy Danner (MWF 9:30–10:20am)
Jason Waterman (TT 9:55–11:10am)
Welcome to CS21. This course will introduce fundamental ideas in computer
science while also teaching you how to write computer programs. We will
study algorithms for solving problems and implement solutions in the
Python programming language. Python is an
interpreted language that is known for its ease of use. We also introduce
object-oriented programming and data structures. A deeper coverage of these
topics will be presented in
CS35.
This course is appropriate for all students who want to learn how to write
computer programs and think like computer scientists. It is the usual first
course for computer science majors and minors. Students with advanced placement
credit or extensive programming experience should place out of this course and
instead begin with
CS33 (or CS31)
or
CS35.
Required Textbook:
Python Programming: an Introduction to Computer Science, First Edition by John Zelle
ISBN: 978-1-887902-99-1
(a copy is on reserve at Cornell Library)
Goals for the course:
By the end of the course, we hope that you will have developed the
following skills:
- Given a program, be able to simulate on paper how a computer would
execute the program, and show the results that would be produced.
- Given a problem, be able to design a clear, concise, and
correct pseudo-code algorithm to solve it.
- Given a pseudo-code algorithm, be able to successfully implement it in
Python.
- Be able to use top-down design to sub-divide a large problem into
reasonably-sized modular sub-problems.
- Given several algorithms for solving the same problem, be able
to analyze which algorithm would be more efficient in terms of running
time.
- Develop debugging and unit testing skills. Consistently use
these skills while implementing programs.
- Learn to work as part of a team to solve problems starting from
design and continuing through to implementation.