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, games, text
manipulation, and data analysis.
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: September 4 - September 7
Lab #1 -- Wednesday, September 5:
- There is no lab this week.
Lec #1 -- Thursday/Friday, September 6/7:
- Lecture Topics:
- Administrivia
- Big ideas in CS111; divide/conquer/glue, abstraction,
modularity, language
- Assignments:
- CS111 registration survey (Due: Sunday, September 9, 11:00
p.m.)
- Reading: Chapters 1 and 2 of the cs111 text.
Week 2: September 10 - 14
Lec #2 -- Monday, September 10:
- Quiz 1
- Lecture Topics: Introduction to Java and Object-Oriented
Programming
- About Java
- Introduction to Buggles and BuggleWorld contracts
- Assignments:
Tuesday, September 11:
- Assignments due:
- Assignments handed out:
- Problem Set #1: Writing Java code (Due: Tuesday, September
18). Available on the assignments
page.
Lab #2 -- Wednesday, September 12:
- Introduction to Macintosh, FirstClass, Fetch, Nike
- Introduction to Code Warrior
- Writing simple Java Code: Buggles
Lec #3 -- Thursday/Friday, September 13/14:
- Lecture Topics: Java Syntax
- expressions
- statements
- primitive data types
- variables
- comments
- Assignments:
Week 3: September 17 - 21
Lec #4 -- Monday, September 17:
- Quiz 2
- Lecture Topics: Methods I
- writing methods
- the Java Execution Model (JEM)
- inheritance
- black box abstraction
- Assignments:
Tuesday, September 18:
- Assignments due:
- Problem Set #1: Writing simple Java code
- Assignments handed out:
- Problem Set #2: Methods with parameters (Due Tuesday,
September 25)
Lab #3 -- Wednesday, September 19:
- Writing methods
- The Java Execution Model
- Debugging
- Style
Lec #5 -- Thursday/Friday, September 20/21:
- Lecture Topics: Methods II
- parameters
- scope
- JEM with parameters
- Assignments:
Week 4: September 25 - 28
Lec #6 -- Monday September 25:
- Quiz 3
- Lecture Topics: Methods III
- methods that return values
- PictureWorld
- Invocation Trees
- Assignments:
Tuesday, September 26:
- Assignments due:
- Problem Set #2: Writing methods I
- Assignments handed out:
- Problem Set #3: Writing methods II (Due Tuesday, October
2)
Lab #4 -- Wednesday, September 27:
- PictureWorld
- Divide/Conquer/Glue
- Invocation Trees
Lec #7 -- Thursday/Friday, September 28/29:
- Lecture Topics: Methods IV
- PictureWorld examples
- Divide/Conquer/Glue
- Assignments:
Week 5: October 1 - 5
Lec #8 -- Monday, October 1:
- Quiz 4
- Lecture Topics: Conditionals I
- boolean expressions
- conditionals
- Assignments:
Tuesday, October 2:
- Assignments due:
- Problem Set #3: Writing methods II
- Assignments handed out:
- Problem Set #4: Conditionals (Due Tuesday, October 16)
Lab #5 -- Wednesday, October 3:
- Catch up and review for exam.
Lec #9 -- Thursday/Friday, October 4/5:
- EXAM # 1 -- In class. Covers material through Lecture
#8, Problem Set 3, Lab 4 and Quiz 3.
Week 6: October 8 - 12
Monday/Tuesday, October 8/9:
Lab #6 -- Wednesday, October 10:
Lec #10 -- Thursday/Friday, October 11/12:
- Lecture Topics: Conditionals II
- Buggle examples
- flow diagrams
- pseudoloops
- overriding
- Assignments:
Week 7: October 15 - 19
Lec #11 -- Monday, October 15:
- Quiz 5
- Lecture Topics: Recursion I
- recursive buggle methods
- the Java execution model revisited
- Assignments:
Tuesday, October 16:
- Assignments due:
- Problem Set #4: Conditionals
- Assignments handed out:
- Problem Set #5: Writing recursive methods I (Due Tuesday,
October 23)
Lab #7 -- Wednesday, October 17:
Lec #12 -- Thursday/Friday, October 18/19:
- Lecture Topics: Recursion II.
- TurtleWorld
- Recursive turtle methods
- Assignments:
Week 8: October 22 - 26
Lec #13 -- Monday, October 22:
- Quiz 6
- Lecture Topics: Recursion III.
- Recursive methods that return values
- Assignments:
Tuesday, October 23:
- Assignments due:
- Problem Set #5: Writing recursive methods I
- Assignments handed out:
- Problem Set #6: Writing recursive methods II (Due Tuesday,
October 30)
Wednesday, October 24:
- Fall Colloquium - no lab!
Lec #14 -- Thursday/Friday, October 25/26:
- Lecture Topics: Lists I
- linked lists
- IntList contract
- box-and-pointer diagrams
- simple list recursion
- class methods
- Assignments:
Week 9: October 29 - November 2
Lec #15 -- Monday, October 29:
- Quiz 7
- Lecture Topics: Lists II
- more Intlist recursion
- introduction to lists of objects
- introduction to primitive data wrappers and casts
- Assignments:
Tuesday, October 30:
- Assignments due:
- Problem Set #6: Writing recursive methods II
- Assignments handed out:
- Problem Set #7: Lists (Due Tuesday, November 6)
Lab #8 -- Wednesday, October 31:
- Recursive methods that return values
- Lists
Lec #16 -- Thursday/Friday, November 1/2:
- Lecture Topics: Lists III
- object lists (the List contract)
- more on casts
- introduction to strings
- Assignments:
Week 10: November 5 - 8
Lec #17 -- Monday, November 5:
- Quiz 8
- Lecture Topics: Iteration I
- tail recursion
- while loops
- Assignments:
Tuesday, November 6:
- Assignments due:
- Assignments handed out:
- Problem Set #8: Iteration (Due Tuesday, November
13)
Lab #9-- Wednesday, November 7:
Lec #18 -- Thursday/Friday, November 8/9:
- Lecture Topics: Iteration II
- More while and for loops
- Nested for loops
- Looping and lists
- comments
- Assignments:
Week 11: November 12 - 16
Lec #19 -- Monday, November 12:
- Quiz 9
- Lecture Topics: Linear Collections I
- array syntax and semantics
- introduction to iterating over arrays
- Assignments:
Tuesday, November 13:
- Assignments due:
- Problem Set #8: Iteration
- Assignments handed out:
Lab #10 -- Wednesday, November 14:
- Catch up and review for exam.
Lec #20 -- Thursday/Friday, November 15/16:
- EXAM # 2 -- In class. Covers material through Lecture
19, Lab 10, Problem Set 8 and Quiz 9.
Week 12: November 19 - 23
Lec #21-- Monday, November 19:
- Quiz 10
- Lecture Topics: Linear Collections II
- more iterating over arrays
- vector contract
- comments
- Assignments:
- Reading: Chapters 8 and 10.
Tuesday, November 20:
- Assignments due:
- Assignments handed out:
- Problem Set #9: Arrays and Vectors (Due Tuesday, November
27)
Lab #11 -- Wednesday, November 21:
Thursday/Friday, November 22/23:
- Thanksgiving Break - No Class!
Week 13: November 26 - 30
Lec #22 -- Monday, November 26:
- No quiz.
- Lecture Topics: Objects I
- building your own objects
- instance variables
- constructor methods
- object diagrams
- Assignments:
Tuesday, November 27:
- Assignments due:
- Problem Set #9: Arrays and Vectors
- Assignments handed out:
- Problem Set #10: Objects (Due Tuesday, December 4)
Lab #12 -- Wednesday, November 28:
- Building your own objects
- Data Abstraction
- Java Graphics
Lec #23 -- Thursday/Friday, November 29/30:
- Lecture Topics: Objects II
- building your own objects
- data abstraction
- Assignments:
- Reading: Chapters 8, 10 and 11.
Week 14: December 3 - 7
Lec #24 -- Monday, December 3:
- Quiz 11
- Lecture Topics: Objects III
- Java graphics
- Object examples: TurtleWorld
- Inheritance
- Assignments:
- Reading: To be announced.
Tuesday, December 4:
- Assignments due:
- Assignments handed out:
Lab #13 -- Wednesday, December 5:
- Java programs from scratch.
Lec #25 -- Thursday/Friday, December 6/7:
- Lecture Topics: To be announced.
- Assignments:
- Reading: To be announced.
Week 14: December 10
Lec #26 -- Monday, December 10:
- Quiz 12
- Lecture Topics: To Be Announced
- Assignments:
End of Classes
Final Exam--Scheduled During Regular Exam Period