Announcements
- Fri May 10th 1-4pm, Jean and Jeff will be in the lab to answer questions.
- Final exam is Sat May 11 at 2pm, Sci Center 101
Class Info
Section 2: TR 9:55–11:10, Sci Cntr 240
Section 1: TR 11:20–12:35, Sci Cntr 240
Professor: Jean Griffin
email: griffin at cs.swarthmore.edu
Office: Science Center 249
Phone: 610-690-5700
Office hours: Monday 1:00-2:30, Look for me in Science Center 249 (or 240)
Other Sections:
Richard Wicentowski (MWF 10:30–11:20am)
Jeff Knerr (MWF 11:30–12:20pm)
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.