CS117 (Introduction to Computer Science)
Spring 2006, Carleton College
Basic information:
- Instructor: David
Liben-Nowell (dlibenno)
- Lecture: 1a (MW 8:30a–9:40a, F 8:30–9:30a),
CMC 319 CMC 210.
- Office Hours: M 2:00–3:00p, T 2:30p–4:00p,
F 12:00–1:00p.
Always feel free to email for an appointment if the scheduled times
aren't good for you.
- Prefectorizer: Paul Sanderson-Cimino (sandersp). Prefecting
sessions: Thursdays and Sundays, 9:00p–11:00p, CMC 306.
- Grader: Ben Sowell (sowellb).
- Catalogue description: This course introduces the fundamentals
of computer science through problem solving. Students will learn the
Java programming language by writing programs to solve interesting
problems, such as processing images. The design and implementation of
more extensive projects will introduce students to computer science
through such topics such as data representation, graphics, recursion,
and object-oriented design. No previous programming experience is
necessary.
Announcements:
- You may find the Java
documentation handy.
- 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 Carleton Sentinel is the mailing list of the CS community here
at Carleton. We'll use it to send occasional updates on things that
might be of interest. Sign up here!
Overly Ambitious Estimated Approximate Rough Tentative Schedule
(subject to change):
- Week #1: intro to computer science and computers. Chapter 1.
- Week #2: basic Java, data types, classes, objects. Chapters 1-3.
- Week #3: writing classes, conditionals. Chapters 4-5.
- Week #4: loops and arrays. Chapters 5 and 7.
- Week #5: object-oriented design. Chapter 6. Midterm exam!
- Week #6: inheritance. Chapter 8. Midterm break!
- Week #7: file input/output, searching, complexity. Chapters 10 and 9.
- Week #8: sorting, recursion. Chapters 9 and 11.
- Week #9: more recursion, linked lists. Chapters 11 and 12.
- Week #10: more linked lists. Chapter 12. Midterm exam!
Course Materials:
Week 0 (Big Bang through 26 March 2006):
There is a
form for office-hours scheduling
available. Please fill it out by Wednesday, 22 March 2006, and I'll
schedule office hours on Thursday or Friday. (Be sure to include your
email address!)
Office hours are now scheduled: M 2:00–3:00p, T
2:30p–4:00p, and F 12:00–1:00p.
Week 1 (27 March through 2 April 2006):
Class is cancelled on Friday for the
campus-wide
Katrina
event. There will be a make-up lab assigned over the weekend, due
late on Sunday night.
The survey distributed in class on Monday is due
at the beginning of class on Wednesday. If you would like to opt out
of being assigned a partner for pair-programming assignments, please
send me email by 7:00p Monday night.
Complete
Lab 1, on Linux and the CMC
computing labs, before class on Wednesday. (It's an individual
assignment.)
Code from classes is available in
/Accounts/courses/cs117/dlibenno/ on the mathcs
machines.
As of 29 March 2006, class will meet in CMC
210.
Partnerships for the first block of
assignments were sent out by email in the afternoon of Wednesday, 29
March 2006.
Lab 2, on
some simple Java, is due on Sunday, 2 April 2006, at 11:59p. It's a
pair assignment, which means that the two of you should both be
present and actively working on the assignment for the entire time.
Try to split up the typing about 50/50.
- 27 March 2006 (M): Intro to computer science and CS117.
Reading for Wednesday: §1.1–1.5.
- 29 March 2006 (W): Simple Java, and how computers work.
Reading for Monday: §1.6, §2.1, §2.2, and §2.6.
Week 2 (3 April 2006 through 9 April 2006):
Lab 3, on using
classes and drawing pretty pictures, started in class on Monday, 3
April 2006, is due on
Tuesday, 4 April 2006 Thursday,
6 April 2006, at 11:59p.
Paul's prefecting sessions will be held every
week on Thursdays and Sundays from 9:00p to 11:00p in CMC 306.
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.
Bug fix! Some of your classmates
uncovered a subtle problem related to one of the, er, simplications
through omission that I've perpetrated on you thus far in the course.
To make things work properly, I've made a very minor change to
Canvas.java. You should redownload Canvas.java for Lab 3. (The
updated version was posted on Wednesday, 5 April 2006, at 4:28p. The
new version is version 1.7.1—look at the top of Canvas.java.)
The only change is that the method that was called
wait() in the old version is now called pause(), so
if you haven't used wait(), nothing about your code should
change. If you did use wait(), just change the name to
pause() and you'll be all set. As always, please get in
touch if you have any questions!
Please complete a
peer evaluation for Labs 2 and 3 by
Sunday, 9 April 2006, at 5:00p.
- 3 April 2006 (M): classes and objects; Lab 3 begun. Reading for Wednesday:
§2.3, §2.4, §3.1, §3.2.
- 5 April 2006 (W): variables, aliasing, and personal finance.
Reading for Friday: §3.3–3.6.
- 7 April 2006 (F): methods. Reading for Monday: §4.1,
§4.3.
Week 3 (10 April 2006 through 16 April 2006):
Problem Set 1, on making change, assigned in
class on Friday, 7 April 2006, is due on Tuesday, 11 April 2006, at
11:59p.
Your book may have an error regarding how to
create Scanner objects in Java.
This
webpage describes the error and the correction. There are a
handful of copies of the book left in the bookstore; if you want to
exchange your buggy book for a newer version (first come, first
served), you can drop by there and ask. (There should be an erratum
sheet just inside the front cover if your copy of the book has this
error.)
As the first exam gets closer, some people
have been asking for some extra exercises to help practice with course
material. Here are a few that I particularly recommend: Programming
Projects 2.6 and 2.7 (p. 109), all the Chapter 3 Self-Review Questions
(p. 152), and Programming Project 3.1 (p. 153). I'll try to post more
recommended exercises as we go.
I will be shuffling partnerships on
Wednesday/Thursday of this week. If you would like to opt out of
having a partnership, or opt in to having one, 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 Wednesday,
12 April 2006, at 5:00p, if you'd like to change your partnership
status from the first cycle.
Problem Set 2, on reversing the curse, was
distributed in class on Wednesday, 12 April 2006, and is due by
Thursday, 13 April 2006, at 11:59p. It's an individual
assignment. If you lost the hard copy of the assignment, there's a
pdf saved in /Accounts/courses/cs117/dlibenno/ps2/. You can
view it by typing "acroread ps2.pdf" in that directory.
Please complete a
peer evaluation for Problem Set 1 by
Friday, 14 April 2006, at 5:00p.
Partnerships for the second block of
assignments were sent out by email in the afternoon of Thursday, 13
April 2006.
Complete
Lab 4, on
writing classes, by Sunday, 16 April 2006, at 11:59p. (It's a pair
assignment, to be done in your new group. If you missed class on
Friday, you should complete the lab on your own.)
- 10 April 2006 (M): methods, scope, and static methods. Reading for
Wednesday: §4.2, §4.4, handout on conditions,
§5.2.
- 12 April 2006 (W): auctions, constructors, privacy. Reading for
Friday: review anything confusing.
- 14 April 2006 (F): conditionals, Lab
4. Reading for Monday: §5.5.
Week 4 (17 April 2006 through 23 April 2006):
Prefecting schedule change for this week:
there will be a session Tuesday night at 9:30p instead of the normal
Thursday session. Instead of the session on Sunday 23 April, there
will be an additional session next Tuesday.
Some more good practice problems to try:
Exercise 4.1 and Programming Projects 4.4, 4.5, and 4.6
(pp. 195–196); Programming Projects 5.1, 5.2, 5.7, 5.13
(pp. 279–281).
PS3, distributed in class on 19 April 2006, is
due on Sunday, 23 April 2006, at 11:59p.
Here is documentation for the
EzText class. You can find the code for the assignment, as
well as a pdf version of the assignment, in
/Accounts/courses/cs117/dlibenno/ps3/.
Update (21 April 2006, 12:33p): I've made a minor change to
EzText.java to prevent any problems associated with empty words, which
might cause problems with some of your methods for PS3. (Some empty
words occur in the Shakespearean EzText.) You should recopy
EzText.java from the aforementioned directory.
- 17 April 2006 (M): loops. Reading for Wednesday: §5.7,
§5.8 (except iterators); §7.1, §7.2. Ponder producing
the first 1000 primes.
- 19 April 2006 (W): more loops; prime numbers. Reading for Friday:
§7.1–7.4, and (optional) Wikipedia Sieve of
Eratosthenes.
- 21 April 2006 (F): arrays, do loops, and pretty printing. Reading
for Monday: §7.6.
Week 5 (24 April 2006 through 30 April 2006):
Prefecting schedule for this week: instead of
the session on Sunday 23 April, there will be a session Tuesday night
at 9:30p.
Review session: there will be a review
session for the midterm in CMC 210 starting at 8:15p on Monday night.
We'll stay until either of the following happens: the clock strikes
9:30p or you run out questions to ask. So bring a list of things that
are puzzling!
The first midterm exam is scheduled for
Wednesday of this week.
- 24 April 2006 (M): loops, arrays, word-length histograms, and letter
frequencies.
- 26 April 2006 (W): midterm exam.
- 28 April 2006 (F): 2D/3D arrays, EzImage.
Week 6 (1 May 2006 through 7 May 2006):
Midterm break is on Monday—enjoy!
The usual Sunday prefecting session has been
rescheduled for Tuesday (so it's not during midterm break).
PS4, assigned in class on 28 April 2006, is due
in two parts on Thursday, 4 May 2006, and Sunday, 7 May 2006.
Here is documentation for the
EzImage class. You can find the code for the assignment, as
well as a pdf version of the assignment, in
/Accounts/courses/cs117/dlibenno/ps4/.
- 3 May 2006 (W): EzImage in color (3D arrays). Reading for
Friday: §6.1–6.4.
- 5 May 2006 (F): feedback, this, static, and Netflix design.
Reading for Monday: §6.7–6.9 and (optional) Netflix throttling
settlement.
Week 7 (8 May 2006 through 14 May 2006):
Please complete a
peer evaluation for your second
partnership by Tuesday, 9 May 2006, at 5:00p.
I will be shuffling partnerships on
Wednesday/Thursday of this week. Please email me by Wednesday, 10
May 2006, at 5:00p, if you'd like to change your partnership status
from the second cycle.
Problem Set 5, on dithering and blurring, was
distributed in class on Monday, 8 May 2006, and is due by Thursday, 11
May 2006, at 11:59p. It's an
individual assignment.
Here is documentation for the
EzImage class.
UPDATE! You are only required to submit only one of
blur() and
dither(), plus a paragraph description of
how you would attack the other method. If you submit completed
versions of both, you'll get appropriate extra credit.
Partnerships for the third block of
assignments were sent out by email in the evening of Thursday, 12 May
2006.
Lab 5, on binary
search, is due on Mother's Day (Sunday, 14 May 2006), at 11:59p. It's
to be done in your newly assigned partnership.
- 8 May 2006 (M): overloading, static (again), Netflix
implementation. Reading for Wednesday: §8.1–8.5.
- 10 May 2006 (W): Netflix wrapup, inheritance, ‐ (hyphen),
– (en dash), — (em dash), and − (minus sign).
Reading for Friday: §9.5.
- 12 May 2006 (F): inheritance wrapup, sequential search, binary
search.
Week 8 (15 May 2006 through 21 May 2006):
Problem Set 6, on scratch removal and median
filtering, was distributed in class on Monday, 15 May 2006, and is due
by Sunday, 21 May 2006, at 11:59p.
The final project was distributed on Monday,
15 May 2006. Contact me if you'd like to discuss your game plan (so
to speak).
- 15 May 2006 (M): more on binary search, brainstorming on sorting
(applet
#1, applet #2). Reading for Wednesday: §9.4.
- 17 May 2006 (W): selection, insertion, and bubble sorts.
Reading
for Friday: Figure 1.10, §2.3, §2.5; §5.1 ("equality
operators"), §5.3 ("comparing objects"), §6.7 ("parameters
revisited").
- 19 May 2006 (F): primitives. Reading for Monday: §11.1–11.3.
Week 9 (22 May 2006 through 28 May 2006):
Lab 6, on the
differences between
int and
Integer, was assigned in
class on Monday, 22 May 2006. It's due on Tuesday, 23 May 2006, at
11:59p.
PS 7, on recursion, was assigned in class on
Wednesday, 24 May 2006 (sneak preview in selected cities on Monday, 22
May 2006). It's due on Sunday, 28 May 2006, at 11:59p. It's short!
Get it out of the way early.
- 22 May 2006 (M): autoboxing/unboxing, recursion, int/Integer.
Reading for Wednesday: §3.8.
- 24 May 2006 (W): palindromes, binary search, merge sort.
- 26 May 2006 (F): merge sort code and analysis. Reading
for Monday: §12.1–12.2. Skim §7.7 and
§10.1–10.4 if you like.
Week 10 (29 May 2006 through 31 May 2006):
Review session: there will be a review
session for the midterm in CMC 210 starting at 7:00p on Monday night.
We'll stay until either of the following happens: the clock strikes
8:30p or you run out questions to ask. So bring a list of things that
are puzzling!
The second midterm exam is Wednesday. I'll
show up at 8:00a so that you can start early if you want to avoid
feeling crunched for time. The exam is designed to be completed in a
normal class period; you are under no obligation to show up early if
you prefer not to wake up early.
Please complete a
peer evaluation for your last
partner by Tuesday, 30 May 2006, at 5:00p.
Some more good practice problems from the
book: Self-Review Questions 6.6–6.8, Exercises 6.1–6.5,
6.10, 6.11, and Programming Project 6.5; Self-Review Questions
7.1–7.9, Exercises 7.3–7.5, and Programming Projects
7.1–7.3; Self-Review Questions 8.1–8.6, Programming
Projects 8.1 and 8.2; Programming Project 9.1, code binary search,
sequential search, insertion sort, selection sort, bubble sort, and
merge sort from scratch; Self-Review Questions 11.1–11.5,
Exercises 11.2 and 11.3, Programming Project 11.2; Exercises 12.1 and
12.3, Programming Projects 12.3 and 12.4. (There are some questions
from Chapters 2 through 5 listed in Week 3 and Week 4 above.)
- 29 May 2006 (M): linked lists.
- 31 May 2006 (W): midterm exam. (I'll be around at 8:00a.)
Finals Period (1 June 2006 through 5 June
2006):
I'll be around the CMC Thursday afternoon
(ballpark 1:00p to 3:00p).
Final projects are due on the last
day of finals, Monday, 5 June 2006, at 5:00p. But I'm going to be
totally swamped with getting grades done for the senior-grade
deadline, so to give myself a little extra time, I'll treat you to
dinner during our finals slot on Sunday, 4 June 2006, if you've handed
in your project by then.