CSC 111
Intro to Computer Science through Programming
(Fall 2017)

Joseph O'Rourke

Last Updated: 

Syllabus Link

As the title indicates, this course introduces the field of Computer Science through programming.

We use Python, a general-purpose high-level programming language which is known for being readable (due to its simple syntax) and at the same time powerful. Python is especially useful for Web applications (DropBox and Reddit are written in Python), graphics, games, and scientific computing (the Matlab/Mathematica open-source alternative Sage was originally written in Python). Python is free and runs on all platforms (it comes with MacOS; it can be easily installed under Windows).

There are no prerequisites for this course. I will not assume any prior exposure to programming.

My goals for student learning are three-fold:

  1. To become a good, basic programmer, familiar with the concepts of modular design, program documentation, testing/debugging, object-oriented programming.
  2. To learn the basics of how computers work: memory, the CPU (central processing unit), machine language, files, etc.
  3. To understand how programming fits within computer science more broadly, through its variety of applications.

Class Times & Locations:

Enrollment Limits: 120. I expect everyone interested will be able to register.

Lab Instructor: David Marshall <>. Head Learning Assistant: Emma Stephenson <>. Other TAs in labs.

Office Hours: FordHall 256, Mon & Tues afternoons: Office Hours, or by appointment

TA Hours: See this link.

Textbook: (Required) Python Programming: An Introduction to Computer Science 2nd Edition [Paperback], by John M. Zelle, 2004, ISBN-13:860-1200643879. Amazon link. Please note: There is an earlier edition that uses Python2. You want the 2nd edition, which uses Python3. Smith's Greycourt Bookshop has used books from previous semesters (as well as new copies of the book). There is now a 3rd edition, which differs so little from the 2nd, that I recommend you purchase the less-expensive (or used) 2nd edition. But if you have the 3rd edition, that is fine.

Download Python3 & IDLE: Latest versions: MacOS or Windows: 3.6.2.

Labs & Assignments & Quizzes: All Notes, Labs, and Assignments are linked from the Syllabus web page. The Quiz links will take you to Moodle. All students registered for the class are enrolled in the Moodle course.

Piazza: Piazza link, and for account activation. We will use Piazza for discussions.

Grading: There will be weekly quizzes and (nearly) weekly assigments. There are weekly labs. There will be an in-class midterm and self-scheduled final, both paper-and-pencil exams (no coding).

Type Details
Attendance, working code submitted
(paper&pencil, open-book)
(paper&pencil, open-book)
In-class, office hours, Piazza

Grading Numerology: How I use letter grades and numerical grades. See this link.

Late Assignment Policy: Because of the large enrollment, I have to be strict here. But I will drop your single lowest assignment grade. See details at this link: Late Policy.

Collaboration/Pair Programming: