[Bowdoin Computer Science]

CSci 101 Syllabus

Mon, Wed 11:30 - 12:55 and Tue 2:30 - 3:55 in Searles 126/128

Tech News.
Date Topic Notes, Readings Articles/News
Jan 23 Introduction and overview.
What is (not) Computer Science?
What is an algorithm?
L1.ppt | pdf
[optional: GS:Ch. 1]
Jan 24 Introduction to algorithms and Java programming.
Pseudocode elements.
Basic instructions.
Conditional instructions.
L2.ppt |L2.pdf
[optional: GS:Ch. 2]
Jan 25, 26 Programming basics: The infamous Hello world! program. Basic types and operations: input, output, variables, assignment and arithmetic expressions, if-then-else.
Jave starter package: JavaStarter
Examples: Hello.java
JavaBasics.ppt |JavaBasics.pdf
The assignment statement.pdf
The if statement.pdf
Tech News
Jan 31 Lab 1 (Java basics: basic instructions and conditionals) Stanford on iTunes
Febr 1, 6 Loops.
Programming style.
Examples: Looping.java
Class work: Max3.java | Sum.java | SumEven.java | SumSquares.java | ReadPositive.java | ReadPositiveCount.java
Loops.ppt | pdf
Programming guide.pdf
Reading: 17 Bits of Style.pdf (M. G. Litvin)
Febr 7
More loop problems
Class work: Loops.java | GameStats.java

The while statement.pdf
Febr 8 Lab 2 (Java basics: loops)
Febr 13, 14 Arrays in Java.
Examples: ReadArray.java
Problems: Array problems
Class work: Search array part(a) | part(b) | part(c)

Java reference tips.pdf
Febr 15 Lab 3 (Java basics: arrays)
Febr 20, 21 Strings.
Problems: My IMDB: MovieSearchStarter.java
Class work: MyImdb.java
Febr 22 Nested loops.
Examples: Stars.java
Problems: Problems
Class work: NestedMultiply.java
Febr 27, 28 Lab 4 (Java: nested loops and strings) Avi Rubin on e-voting
March 1st EXAM 1 Java basics (all material so far)
March 6, 7 Algorithm efficiency
Lecture notes: pdf | ppt.
Searching: Sequential search. Binary search.
Class work: BinSearch.java | BinSearchTest.java | SeqSearchTest.java
Need for fast algorithms
March 8 Lab 5 (Java)
March 10-26 SPRING BREAK
March 27, 28 Efficiency. Sorting.
Methods in Java. Examples: FunQuest.java | Feet2Inches.java
Why the Net should stay neutral
March 29 Lab 6 (Java)
April 3, 4 Methods (in Java).
Array basic methods: ArrayFun.java
Printing patterns exercise.
Poetry Poet.java
For loops
April 5 Lab 7 (Java: Methods)
April 10, 11, 12 Recursion (in Java).
Examples, classwork: Whee.java | LimitedWhee.java
RecSum.java | Fact.java | RecPower.java
Recursive graphics: Sierpinski triangle
April 12 Lab 8 (Java: Recursion)
April 17 Lab 8, Exam review.
April 18 Classes and objects in Java.
Examples: Account.java | AccountTest.java
April 19 EXAM 2 Java programming (all material after exam 1)
April 24, 25, 26, May 1 Computer Organization:
Binary numbers and conversions.
Boolean logic, logic gates, logic circuits.
Von Neumann architecture. A simple computer model and machine code. The fetch-decode-execute cycle.
May 2 Lab 9 (Computer organization)
May 3, 8, 9 Theory of complexity:
Turing machines. Halting problem. Church-Turing thesis. Computability, complexity classes. Lab 10
May 10 Service learning: Student presentations. Guidelines: service | social
May TBD Final review
May 18 at 9am FINAL EXAM Computer Organization, Turing machines.

Students are expected to follow the Bowdoin Computer Use Policy and the Academic Honor Code.