CS117 (Introduction to Computer Science)
Winter 2006, Carleton College
- Instructor: David
Liben-Nowell ("David"; not "Dave")
- Lecture: 3a (MW 11:10a–12:20p, F 12:00–1:00p), CMC 210.
- Office Hours: Tuesday 10–11a; Wednesday 1–2:30p;
Always feel free to email for an appointment if the scheduled times
aren't good for you.
- Prefector: Paul Sanderson-Cimino (sandersp). Prefecting sessions:
Tuesdays and Thursdays, 9–11pm, CMC 304/306.
- Grader: Mark Dyson (dysonm).
- 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
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
- Week #3: writing classes, conditionals. Chapters 4 and 5.
- Week #4: loops and arrays. Chapters 5 and 7.
- Week #5: object-oriented design. Chapter 6. Midterm
- Week #6: inheritance. Chapter 8. Midterm break!
- Week #7: file input and 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!
Classes, Assignments, and Reading:
- 4 January 2006 (W): overview of CS/CS117. For Friday: read
§1.1–1.5, hand in PS0 (survey), complete Lab 1 (Intro to Linux and the CS labs).
- 6 January 2006 (F): very simple Java, how computers work, and the
word "prefector". For Monday: read §1.6, §2.1–2.6,
and some information on pair
- 9 January 2006 (M): object-oriented programming and Lab 2 (Intro to Java). Due by 11:59p on
Tuesday, 10 January 2006. For Wednesday: reread §1.6,
- 11 January 2006 (W): objects, data, methods, and Lab 3 (using classes). Due by
11:59p on Thursday, 12 January 2006. For Friday: read
- 13 January 2006 (F): classes and objects. For Monday: read
§4.1–4.4 and work on PS1.
- 23 January 2006 (M): conditionals (Grade.java). For Wednesday: read
§5.5, §5.8, and §7.1–7.2.
- 25 January 2006 (W): loops (Input.java). For Friday: read
§7.1–7.6 and submit a peer
evaluation for PS2. Don't forget PS2 for Thursday!
- 27 January 2006 (F): loops and arrays. PS3
distributed. For Monday: PS2 peer eval, PS3 question -1, and review
- 30 January 2006 (M): more on loops and arrays (TicTacToe.java). For Wednesday: review
Chapters 1–5, 7.
- 1 February 2006 (W): image processing (and arrays).
- 3 February 2006 (F): Exam #1.
- 6 February 2006 (M): midterm break!
- 8 February 2006 (W): midterm post mortem: lab5. For Friday: read
§6.1–6.4. Don't forget PS3!
- 10 February 2006 (F): designing a bigger program: Netflix. For Monday: read §6.7–6.9
- 13 February 2006 (M): thinking about style, algorithms, and implementations : lab6. For Wednesday: start reading Chapter 8 (we'll cover most of that material on Friday).
- 15 February 2006 (W): Netflix implementation (Subscriber.java, Movie.java, Netflix.java, Tester.java). For Friday: read
- 17 February 2006 (F): inheritance. For Monday: Read §9.5,
§9.4; finish PS4(II).
- 20 February 2006 (M): searching. For Wednesday: reread §9.4,
write binary search (submit via hsp in a directory called
binarysearch; see announcements for details).
- 22 February 2006 (W): insertion sort, selection sort (ArrayUtils.java). For Friday: start
to read Chapter 11.
- 24 February 2006 (F): sorting (applet
for insertion/selection sort). For Monday: read
- 27 February 2006 (M): recursion (factorials, fibonacci numbers,
mergesort). For Wednesday: review Chapter 11. Don't forget PS5!
- 1 March 2006 (W): recursion (mergesort, palindromes: Recursion.java). For Friday: read §10.1–10.6.
- 3 March 2006 (F): file i/o, exceptions. For Monday: read
- 15 March 2006 (W), 5:00p: final project due!
Code and Useful Links: