CS111 (Introduction to Computer Science)
Spring 2008, Carleton College
Basic information:
- Instructor: David
Liben-Nowell
- Lecture: 4a (MW 12:30--1:40p, F 1:10--2:10p), CMC 210.
- Office Hours: see my homepage.
Always feel free to email for an appointment if the scheduled times
aren't good for you.
- Prefecting sessions: Thursdays 8:00–9:00p in CMC 210,
Sundays 8:00–9:00p in CMC 210.
- Official catalogue description:
This course will introduce you to computer programming and the design
of algorithms. By writing programs to solve problems in areas such as
image processing, text processing, and simple games, you will learn
about recursive and iterative algorithms, complexity analysis,
graphics, data representation, software engineering, and
object-oriented design. No previous programming experience is
necessary.
Course Materials:
Week 0:
There is an
anonymous feedback form
available for any comments that you have about the course. If you
have any suggestions or comments on the class (style, content,
workload, etc.), please feel free to use this form to let me know.
The CS department has an email newsletter, the
Carleton Sentinel, that we use for occasional updates on things
that might be of interest. Sign up
here!
There is a
form for
office-hours scheduling available. Please fill it out by the Thursday
before the first day of classes and I'll schedule office hours soon
thereafter. (Be sure to include your email address!)
Week 1: course overview; intro to CS
Part I of PS1, on some general logistical stuff
and some familiarization with the tools we'll use in the course, is
due on Wednesday. Be sure the bring back the background survey on
Wednesday. You should complete
this lab to
introduce you to the Linux and the CS computing environment by
Wednesday, too.
Read
this description of pair
programming and its benefits, and
this description of how to deal with
partners who aren't pulling their weight. Always remember that you
have my permission to split up with your assigned partner if the team
isn't working out.
Prefecting sessions have been scheduled.
They'll be on Thursdays and Sundays, both 8:00–9:00p in CMC
210.
Part I of PS2, on some simple Python and
figuring out who you can date, is due on Sunday, 6 April 2008.
Week 2: expressions and computation
Part II of PS2, on making change, is due on
Tuesday, 8 April 2008. (There was a typo that said Thursday, 8 April
2008, on the handout—sorry!)
PS3, on writing out numbers, is due on
Thursday, 8 April 2008 Sunday, 13 April 2008.
- 7 April 2008 (M): how computers work, data and data types, and
why 0.64 - 0.635 - 0.05 is not zero.
Reading: §2.6, 3.6, 4.1–4.3,
4.4.4, 7.1–7.2.
- 9 April 2008 (W): Joe Tennis on the semantic web, recap of things
you already know, control structures (if, while, for).
Reading: §3.3, 4.6, 7.3, 8.1–8.2.
- 11 April 2008 (F): strings, slices, Lake
Chargoggagoggmanchauggagoggchaubunagungamaugg, and some fun with words.
Reading: review §4.3, 4.6,
7.1–7.3, 8.1–8.2; read 8.3–8.4.
Week 3: functions, loops, lists
Part I of PS4, on LiveJournal, is due on
Wednesday, 16 April 2008.
Part II of PS4 is due on Thursday, 17 April
2008.
If you're looking for python documentation,
you can take a look at
docs.python.org.
- 14 April 2008 (M): variables as names, how for loops work, and a
few more games with words.
Reading: §8.5–8.7.
- 16 April 2008 (W): a little on debugging code, and how functions
work.
Reading: §6.1–6.4, 6.5.1.
- 18 April 2008 (F): more on functions; pretty printing.
Reading: §3.2, 4.4, 4.5, 7.4.
Week 4: loops, lists, functions
I will be shuffling partnerships early next
week. If you would like to opt out of having a partner, please let me
know. Also, if you're neutral about having a partner, please
let me know that as well. Having a few people who don't care either
way is helpful in dealing with odd numbers. Please email me by
Sunday, 20 April 2008, if you are either opting out or neutral; if I
haven't heard from you, I'll assume that you want a partner.
Part I of PS5, on Scrabble, is due on Sunday,
20 April 2008.
Part II of PS5 is due on Monday, 21 April
2008.
The first midterm will be held on Wednesday,
23 April 2008. Any material that we've discussed in the class is fair
game, which means anything in class through Monday, 21 April; problem
sets 1–5, and Chapters 1–4 and 6–8 (except for a few
isolated sections). I've gotten a request to pull together some
exercises from the book that would be good practice for the exam.
Here are some that I've identified. Certainly don't feel like you
have to do all of them, but these are good ones to try.
Chapter | Discussion | Programming Exercises |
2 | 4 | 8,9 |
3 | 1,4 | 3,4,5,11,15 |
4 | 1,2,3(a-d) | 3,5,10,15 |
6 | 1,3,4,5 | 1,4,7,12 |
7 | 2 | 1,5,9,13 |
8 | 3 | 2,8,9,11 |
The utterly optional part III of PS5 is due on
Thursday, 24 April 2008.
The documentation for the graphics class is
here.
Week 5: classes and objects
PS6, on some practice with graphics, faces, and
objects, is due on Monday, 28 April 2008.
Part I of PS7, on cities, classes, and
objects, is due on Sunday, 4 May 2008.
My office hours on Wednesday, 30 April, are
rescheduled. They will be held 3:30–5:00p.
- 28 April 2008 (M): objects and classes.
Reading: §10.1–10.5.
- 30 April 2008 (W): objects and classes: circles, eyeballs, and baseball.
- 2 May 2008 (F): objects and classes: baseball and auctions.
Week 6: midterm break; more on loops and object-oriented design
Part II of PS7 is due on Tuesday, 6 May 2008.
Part I of PS8, on image processing, is due on
Friday, 9 May 2008, before class.
The documentation for
images.py
can be found
here.
If you're working on your home computer,
you'll also need to install the Python Imaging Library (PIL), which
images.py uses. Follow
these
instructions for installing PIL under Windows XP or Mac OS X. We
already have PIL installed on the department Linux machines.
- 5 May 2008 (M): midterm break!
- 7 May 2008 (W): auctions, lists of lists, and an introduction to
image processing.
Reading: §11.1–11.5.
- 9 May 2008 (F): more on nested loops and image processing.
Week 7: midterm #2, applications of CS to recommender systems
Instead of my usual office hours on Tuesday, 13 May 2008, I'll have
office hours from 3:00p to 4:00p on Monday, 12 May 2008, and from
9:45a to 10:45a on Tuesday, 13 May 2008.
The second midterm will be held on Wednesday,
14 May 2008. Any material that we've discussed in the class, that
you've read, or that has been on the assignments is fair game, though
you can expect a heavier emphasis on more recent material. I will try
to pull together some practice problems over the weekend.
Part II of PS8 is due on Monday, 12 May 2008,
before class.
Peer evaluations for
the second block of partnerships are due by Friday, 16 May 2008.
Week 8: recursion, seaching and complexity, and sorting
Part I of PS9, on some more image processing, is
due on Wednesday, 21 May 2008, before class.
Part II of PS9 is due on Friday, 23 May 2008,
before class.
- 19 May 2008 (M): recommender systems, palindromes, and recursion.
- 21 May 2008 (W): recursion ("Nine Billion Names"),
search, and computational complexity.
Reading: §13.1–13.2
- 23 May 2008 (F): linear search and binary search.
Week 9: sorting, recursion
Part I of PS10, on recursion, is due on
Wednesday, 28 May 2008, before class.
Part II of PS10, on fractals, is due on
Friday, 30 May 2008 Monday, 2 June 2008, before
class.
Because of Ron Rivest's visit to Carleton this
week, both my office hours and Elizabeth's prefect sessions will be
shuffled around. Keep an eye on your email for updates, and, as
always, feel free to contact me if you have questions or if you want
to make an appointment. Please include times that you are free if
you're requesting an appointment.
- 26 May 2008 (M): binary search recap and sorting lists.
Reading: §13.3.
- 28 May 2008 (W): more on sorting (animation #1), analysis of running time, more on recursion.
- 30 May 2008 (F): Ron Rivest: cryptography and secret sharing.
Week 10: assorted applications and wrapup; midterm #3
- 2 June 2008 (M): sorting wrapup (animation
#2), course review, course evaluations, and social networks.
- 4 June 2008 (W): midterm #3!
Finals Period:
Final projects are due on the last day of
finals, 9 June 2008.