CS21 — Intro. to Computer Science

Announcements | Schedule | Grading | Study Sessions | Succeeding | Style | Integrity | Links
Introduction to Computer Science using Python



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 CS35. If you have no prior computer science or programming experience, this course is designed for you.

Goals for the Course

By the end of the course, we hope that you will have developed the following skills:

Class info

Room: Science Center 240
Time: TR 9:55am–11:10am
Text: Python Programming: an Introduction to Computer Science by John Zelle

Instructional staff

Professor: Andrew Danner
Office: Science Center 253
Phone: (610) 328-8665
Office hours: by appointment

Student Support: Betsy Horner
Office: Science Center 255
Email: bhorner1
Phone: 957-6062

Student Mentors:Celeste Abou Negm (D), Jake Baskin (K),
Maria Kelly (K), Ashley Oudenne (N), and Joel Tolliver (D)

Other Sections: Tia Newhall (MWF 9:30-10:20) and Jeff Knerr (MWF 11:30-12:20)

Study sessions

Several student mentors will assist me in class and run study sessions in the main CS lab (Science Center 240) on the following evenings:

Day Time Location
Sunday 7-9pm Sci Center 240
Wednesday 7-9pm Sci Center 240

You are invited – and encouraged – to participate in these study sessions to prepare for quizzes, to discuss programming concepts, and to get friendly assistance in working on homework assignments. Our CS mentoring team is dedicated to helping students, who have no prior knowledge of computer science, learn to program in Python while keeping their senses of humor intact. As an added bonus, free food will be provided at the sessions.

Weekly Lab Office Hours

CS21 faculty will staff part of our office hours in the robot lab (252 Science Center). Any CS21 student is welcome to attend any session.
Time Professor Location
Monday 3:30-4:30 Newhall Science Center 252
Monday 4:30-5:30 Danner Science Center 252
Friday 2:00-3:00 Knerr Science Center 252


1 Sep 02 Using Unix: 8pm Sci240
Using Unix: 7pm Sci240 (Sep 03)
Introduction to Python and Unix
Chapt. 1-2
Lab 0
Lab 1
Sep 04  
2 Sep 09 Practice Quiz1 PDF | txt Numbers and Strings
Chapt. 3-4 (Skip 4.6)
Lab 2
Sep 11 ASCII table
Drop/add ends (Sep 12)
3 Sep 16   Booleans
Chapt. 7
Lab 3
Sep 18  
4 Sep 23 Practice Quiz2 PDF | txt Graphics, objects
Chapt. 5
Lab 4
Sep 25  
5 Sep 30 Finals Schedule Posted (Oct 01) Functions, objects
Chapt. 6
Lab 5
Oct 02  
6 Oct 07 Practice Quiz3 PDF | txt Loops, Top Down Design
Chapt. 8, 9
Lab 6
Oct 09  

Oct 14

Fall Break

Oct 16

7 Oct 21   Top Down Design, Loops
Chapt. 8, 9
Lab 7
Oct 23  
8 Oct 28 Practice Quiz4 PDF | txt Searching, Analysis of Algorithms
Chapt. 13.1
Lab 8
Oct 30  
9 Nov 04   Recursion, Sorting
Chapt. 13.2-13.3
Lab 9
Nov 06  
10 Nov 11 Practice Quiz5 PDF | txt More Recursion, More Sorting
Chapt. 11.6
Lab 10
Nov 13  
11 Nov 18   Defining new classes
Chapt. 10
Lab 11
Nov 20  
12 Nov 25   Object Oriented Design
Chapt. 12
Lab 12

Nov 27

Thanksgiving Break

13 Dec 02 Practice Quiz6 PDF | txt Linked lists
Dec 04  
14 Dec 09   Wrapup  

Dec 19

Final Exam 2pm-5pm


Grades will be weighted as follows:
40%Homework assignments
5%Class Participation
25%Final Exam

Homework policy

Programming assignments will typically be assigned in class at the beginning of the week and will be due before midnight the following Tuesday night. You are strongly encouraged to start early and to attend the study sessions for extra practice.

You will submit you assignments electronically using the handin21 program. You may submit your assignment multiple times, but each submission overwrites the previous one and only the final submission will be graded. Late assignments will not be accepted except in extreme situations and only if you contact me before the deadline. Even if you do not fully complete an assignment, you may submit what you have done to receive partial credit.

How to Succeed in CS21

Programming Style

Programming is not a dry mechanical process, but a form of art. Well written code has an aesthetic appeal while poor form can make other programmers and instructors cringe. Programming assignments will be graded based on style and correctness. Good programming practices usually include many of the following principles:

Also, look over the Python Code Style Guide for more details and some example of good style.

Academic Integrity

Academic honesty is required in all work you submit to be graded. You may not submit work done with (or by) someone else. You may not examine or use work done by others to complete your own work. You may discuss assignment specifications and requirements with others in the class to be sure you understand the problem. In addition, you are allowed to work with others to help learn the course material. However, with the exception of the student mentors and your partner on group assignments, you may not work with others on your assignments.

All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an partner. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.

"It is the opinion of the faculty that for an intentional first offense, failure in the course is normally appropriate. Suspension for a semester or deprivation of the degree in that year may also be appropriate when warranted by the seriousness of the offense." - Swarthmore College Bulletin (2008-2009, Section 7.1.2)

Please see me if there are any questions about what is permissible.

Links that are related to the course may be posted here. If you have suggestions for links, let me know.

Python style guide From Prof. Tia Newhall
Using Unix Improved
Basic Unix Commands
Python Documentation
Textbook site
How To Think Like a Computer Scientist: Learning with Python