2016 November 16,

CS 111: Intro to Computer Science

Carleton College, Fall 2016

Prof. Joshua R. Davis, , CMC 135, x4095


This is a first course in computer science. There are several themes:

By the end of the course, you may have a greater appreciation for, and understanding of, our increasingly technological world.

Most of our assignments take the form of computer programs written in the Python programming language. However, learning Python is not the point of this course, any more than learning English is the point of a history course conducted in English. We use a programming language, just so that we can talk to the computer and use it to illustrate concepts for us.

Our class meets in CMC 319 during period 2A (MW 9:50-11:00, F 9:40-10:40). The course materials are:

Here are our exams from this term.

Here are some exams from earlier terms. You might attempt them while studying for our exams this term. However, the course topics are sometimes treated in a different order, and I do not promise our exams will look like these.

My office hours are Mon 8:30-9:40 (1A), Tue 11:00-12:00, and Fri 12:00-1:00 (3A). You can also schedule an appointment with me. You can also schedule appointments with our prefect, Simon Orlovsky.


Final grades (A, B, C, etc.) are assigned according to an approximate curving process. By this I mean that there are no predetermined percentages (90%, 80%, 70%, etc.) required for specific grades. The following elements contribute to the final grade.

You are expected to spend at least 10 hours per week on this course outside class. Some students need to spend more than 10 hours. If you find yourself spending more than 15 hours, then talk to me.

Working with Others

For some assignments the students are expected to work in pairs. Your pair hands in a single copy of the assignment with both names on it. You are encouraged to talk with other pairs — to bounce ideas off them — but the work that you submit must be the work of your own pair. The two members of a pair must contribute roughly equally.

Other assignments are individualized. Even on these assignments, you are encouraged to talk with other students. In the end, however, you write or type your own solution, in your own words.

You may not copy someone else's work or allow them to copy yours — in person, over the Internet, etc. Presenting someone else's work as your own is an act of academic dishonesty. If Carleton College finds that you have not upheld its Academic Integrity standards in this course, then you will receive an F for this course.

Standards for Work

Writing is not just for English majors. Written and oral communication skills are essential to every academic discipline, and these skills are highly prized by employers. In this course, your work is evaluated both for correctness and for polish. Ensure that your Python code is efficient, well-organized, and easy to read. Proofread your English writing, and revise as necessary.

When handing in multiple pages of paper, staple them into a single packet, in the correct order. Packets that are not stapled are unacceptable. I will not accept packets that are not stapled. Staple your packet. Your packet? Staple it. Is there a stapler in the classroom? Often not, so staple ahead of time. Is a paper clip okay? No.

Computer files should be submitted in plain text (.txt), PDF (.pdf), or Python (.py) formats only, unless otherwise specified. In particular, Microsoft Word documents are unacceptable. Fortunately, you can "print" any document to PDF easily. Ask for help if you need it.

Special Accommodations

During the term, you have one free pass to hand in an assignment late. Instead of handing in the assignment, send me e-mail, by the due date, declaring that you are using your late pass and proposing a new due date. If the due date is extended by only one class meeting, then no explanation is necessary; if you need longer, then convince me. When you submit your late work, mark it "Late Pass Used" prominently at the top. Once you have used your late pass, no late assignments are accepted, except in extreme circumstances that are truly beyond your control.

If some medical condition affects your participation in class or your taking of exams, let me know in the first week of class. You may need to make official arrangements with the Disability Services for Students.


This schedule is tentative; topics may be reordered, and exams may be moved slightly, based on the progress of the course.

M 09/1201introduction, Python basicsIntroduction1-22Getting Started with Python
W 09/1402Python loops, conditionalsBasicsChapter 1Getting Started with Python
F 09/1603Python lists, functionsExercisesGetting Started with Python
M 09/1904artificial intelligencehasWon.py
W 09/2105artificial intelligenceTic Tac Toe
F 09/2306artificial intelligence
M 09/2607cryptography83-102
W 09/2808cryptographyCiphers117-128, 271-278
F 09/3009cryptography
M 10/0310binary, organizationBinaryBinary Numerals
W 10/0511binaryBinary Numerals
F 10/0712higher-order functionsHigher-Order185-204higherOrder.py
M 10/1013exam
W 10/1214image processing205-234imageProcessing.py, barackObama.jpg
F 10/1415analysis of algorithmsImage Processing
M 10/17midterm break
W 10/1916analysis of algorithms
F 10/2117analysis of algorithmsAnalysissorting.py
M 10/2418recursion305-317recursion.py
W 10/2619recursionRecursion
F 10/2820objects329-343Objects
M 10/3121objects344-366
W 11/0222objectsObjects367-392
F 11/0423objectsProject393-422
M 11/0724project work
W 11/0925exam
F 11/1126project work
M 11/1427lower-level programminglowerLevel.c, string.c
W 11/1628project work
M 11/21project due 5:00 PM