CS111 Syllabus
Course Overview
cs111 is an introduction to the problem solving foundations of
computer science. Computer science is the study of imperative ("how
to") knowledge, which is at the heart of any problem solving
activity. Imperative knowledge is expressed via algorithms, which are
descriptions of computational processes that can be encoded as
programs written in a programming language. Programs communicate
imperative knowledge between people; they can also be executed by
computers.
In this course, you will learn "big ideas" about solving problems,
developing algorithms, and organizing programs. These ideas
include:
- problem solving strategies: divide-and-conquer, recursion,
iteration;
- abstraction: capturing common patterns and hiding
information;
- modularity: expressing programs as the composition of
mix-and-match parts;
- programming language components: primitives, means of
combination, means of abstraction.
You will get hands-on experience with these ideas by reading,
modifying, debugging, designing, writing, and testing programs.
Example programs will involve graphics, user interfaces, and text
manipulation.
This semester we will be using the Java programming language as
our main tool for exploring the above ideas. Although you will learn
a significant amount about Java along the way, the focus of the
course will be on the big ideas, not on the details of Java
programming.
Week 1: January 28 - February 1
Lec #1 -- Monday, January 28:
- No quiz.
- Lecture Topics:
- Big ideas in CS111; divide/conquer/glue, abstraction,
modularity
- Our first Java program
- Administrivia
- Assignments:
- CS111 registration survey (Due: Monday, January 28, 11:00
p.m.)
- Reading: To be announced.
Tuesday, January 29:
- Assignments due:
- Assignments handed out:
Lab #1 -- Wednesday, January 30:
- Introduction to Macintosh, FirstClass, Fetch, Nike
- Introduction to Code Warrior, textfiles
- Our first Java program
- main()
- system.out.println()
- strings
- debugging
Lec #2 -- Thursday/Friday, January 31/February 1
- Lecture Topics:
- string examples
- simple vocabulary
- introduction to object oriented programming
- expressions
- statements
- variables
- comments
- Assignments:
- CS111 registration survey (Due: Sunday, September 9, 11:00
p.m.)
- Reading: To be announced.
Week 2: February 4 - 8
Lec #3 -- Monday, February 4:
- Quiz 1
- Lecture Topics:
- run()
- Introduction to Buggles and BuggleWorld contracts
- state of objects
- instance methods
- class methods
- Assignments:
- Reading: To be announced.
Tuesday, February 5:
- Assignments due:
- Assignments handed out:
- Problem Set #1: Writing Java code (Due: Tuesday, February
12). Available on the assignments
page.
Lab #2 -- Wednesday, February 6:
- run()
- Writing simple Java Code: Buggles
- comments
- debugging
Lec #4 -- Thursday/Friday, February 7/8:
- Lecture Topics: Methods I
- writing methods
- the Java Execution Model (JEM)
- inheritance
- black box abstraction
- Assignments:
- Reading: To be announced.
Week 3: February 11 - 15
Lec #5 -- Monday, February 11:
- Quiz 2
- Lecture Topics: Methods II
- parameters
- scope
- JEM with parameters
- Assignments:
- Reading: To be announced.
Tuesday, February 12:
- Assignments due:
- Problem Set #1: Writing simple Java code
- Assignments handed out:
- Problem Set #2: Methods with parameters (Due Tuesday,
February 19)
Lab #3 -- Wednesday, February 13:
- Writing methods
- The Java Execution Model
- Debugging
- Style
Lec #6 -- Thursday/Friday, February 14/15:
- Lecture Topics: Methods III
- methods that return values
- PictureWorld
- Invocation Trees
- Assignments:
- Reading: To be announced.
Week 4: February 18 - 22
Monday, February 18:
- Presidents' Day -- NO CLASS!
Lec #7 -- Tuesday, February 19:
- Quiz 3
- Lecture Topics: Methods IV
- PictureWorld examples
- Divide/Conquer/Glue examples
- Assignments due:
- Problem Set #2: Methods with parameters
- Assignments handed out:
- Problem Set #3: Writing methods II (Due Tuesday, February
26)
Lab #4 -- Wednesday, February 20:
- PictureWorld
- Divide/Conquer/Glue
- Invocation Trees
Lec #8 -- Thursday/Friday, February 21/22:
- Lecture Topics: Conditionals I
- boolean expressions
- conditionals
- Assignments:
- Reading: To be announced.
Week 5: February 25 - March 1
Lec #9 -- Monday, February 25:
- Quiz 4
- Lecture Topics: Conditionals II
- Buggle examples
- flow diagrams
- pseudoloops
- overriding
- Assignments:
- Reading: To be announced.
Tuesday, February 26:
- Assignments due:
- Problem Set #3: Writing methods II
- Assignments handed out:
- Problem Set #4: Conditionals (Due Tuesday, March 5)
Lab #5 -- Wednesday, February 27:
- Conditionals
- Review for exam
Lec #10 -- Thursday/Friday, February 28/March 1:
- EXAM # 1 -- In class. Covers material through Lecture
#7, Problem Set 3, Lab 5 and Quiz 4.
Week 6: March 4 - 8
Lec #11 -- Monday, March 4:
- Quiz 5
- Lecture Topics: Recursion I
- recursive buggle methods
- the Java execution model revisited
- Assignments:
- Reading: To be announced.
Tuesday, March 5:
- Assignments due:
- Problem Set #4: Conditionals
- Assignments handed out:
- Problem Set #5: Writing recursive methods I (Due Tuesday,
March 12)
Lab #6 -- Wednesday, March 6:
Lec #12 -- Thursday/Friday, March 7/8:
- Lecture Topics: Recursion II.
- TurtleWorld
- Recursive turtle methods
- Assignments:
- Reading: To be announced.
Week 7: March 11 - 15
Lec #13 -- Monday, March 11:
- Quiz 6
- Lecture Topics: Recursion III.
- Recursive methods that return values
- Assignments:
- Reading: To be announced.
Tuesday, March 12:
- Assignments due:
- Problem Set #5: Writing recursive methods I
- Assignments handed out:
- Problem Set #6: Writing recursive methods II (Due Tuesday,
March 26)
Lab #7 -- Wednesday, March 13:
- Recursive methods that return values
Lec #14 -- Thursday/Friday, March 14/15:
- Lecture Topics: Recursion IV.
- functions (static methods)
- recursive functions
- classic recursion examples
- Assignments:
- Reading: To be announced.
Week 8: March 18 - 22
Week 9: March 25 - 29
Lec #15 -- Monday, March 25:
- Quiz 6
- Lecture Topics: Lists I
- linked lists
- IntList contract
- box-and-pointer diagrams
- simple list recursion
- Assignments:
- Reading: To be announced.
Tuesday, March 26:
- Assignments due:
- Problem Set #6: Writing recursive methods II
- Assignments handed out:
- Problem Set #7: Lists (Due Tuesday, April 2)
Lab #8 -- Wednesday, March 27:
Lec #16 -- Thursday/Friday, March 28/29:
- Lecture Topics: Lists II
- more Intlist recursion
- introduction to lists of objects
- introduction to primitive data wrappers and casts
- Assignments:
- Reading: To be announced.
Week 10: April 1 - 5
Lec #17 -- Monday, April 1:
- Quiz 7
- Lecture Topics: Iteration I
- tail recursion
- while loops
- Assignments:
- Reading: To be announced.
Tuesday, April 2:
- Assignments due:
- Assignments handed out:
- EXAM #2 -- Take home. Covers material
through Lecture #16, Problem Set #7, Lab 8 and Quiz 7. (Due
Tuesday, April 9)
Lab #9 -- Wednesday, April 3:
Lec #18 -- Thursday/Friday, April 4/5:
- Lecture Topics: Iteration II
- More while and for loops
- Nested for loops
- Looping and lists
- Assignments:
- Reading: To be announced.
Week 11: April 8 - 12
Lec #19 -- Monday, April 8:
- No quiz
- Lecture Topics: Linear Collections I
- array syntax and semantics
- introduction to iterating over arrays
- Assignments:
- Reading: To be announced.
Tuesday, April 9:
- Assignments due:
- Assignments handed out:
- Problem Set #8: Iteration (Due Tuesday, April
16)
Lab #10-- Wednesday, April 10:
Lec #20 -- Thursday/Friday, April 11/12:
- Lecture Topics: Linear Collections II
- more iterating over arrays
- vector contract
- Assignments:
- Reading: To be announced.
Week 12: April 15 - 19
Monday, April 15:
- Patriots' Day -- NO CLASS!
Tuesday, April 16:
- Assignments due:
- Problem Set #8: Iteration
- Assignments handed out:
- Problem Set #9: Arrays and Vectors (Due Tuesday, April
23)
Lab #11 -- Wednesday, April 17:
Lec #21 -- Thursday/Friday, April 18/19:
- Lecture Topics: Objects I
- building your own objects
- instance variables
- constructor methods
- Assignments:
- Reading: To be announced.
Week 13: April 22 - 26
Lec #22-- Monday, April 22:
- Quiz 8
- Lecture Topics: Objects II
- Java graphics
- Object examples: TurtleWorld
- Assignments:
- Reading: To be announced.
Tuesday, April 23:
- Assignments due:
- Problem Set #9: Arrays and Vectors
- Assignments handed out:
- Problem Set #10: Objects (Due Tuesday, May 7)
Lab #12 -- Wednesday, April 24:
- Building your own objects
- Java graphics
Lec #23 -- Thursday/Friday, April 25/26:
- Lecture Topics: Objects III
- data abstraction
- object diagrams
- inheritance
- Assignments:
- Reading: To be announced.
Week 14: April 29 - May 3
Lec #24 -- Monday, April 29:
- Quiz 9
- Lecture Topics: Objects IV
- Assignments:
- Reading: To be announced.
Tuesday, April 30:
- Assignments due:
- Assignments handed out:
Wednesday, May 1:
- Ruhlman Conference -- NO CLASS!
Lec #25 -- Thursday/Friday, May 2/3:
- Lecture Topics: Lists III
- Assignments:
- Reading: To be announced.
Week 15: May 6 - May 10
Lec #26 -- Monday, May 6:
- Quiz 10
- Lecture Topics: CS111 Jeopardy
- Assignments:
Tuesday, May 7:
- Assignments due:
- Problem Set #10: Objects and Graphics
- Assignments handed out:
Lab #13 -- Wednesday, May 8:
- Last day of class.
- Review for exam.
End of Classes
Final Exam--Scheduled During Regular Exam Period