Wellesley College, Summer 2003

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:

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.


This is tentative day-to-day syllabus, subject to change


Week 1. Monday, June 16.

Lec #1: Introduction

Lecture Topics:
  • Administrivia
  • Big ideas in CS111: computational recipes, divide/conquer/glue, abstraction, modularity, models
  • Introduction to BuggleWorld
Reading:
Assignments handed out:
  • Problem set 1: Simple Buggle code (Due Wedn., 6/18 before lecture)

Lab #1

  • Introduction to Macintosh, FirstClass, Fetch, Puma
  • Introduction to Code Warrior
  • Introduction to BuggleWorld
  • Java applets, run() method
  • Introduction to debugging

              Tuesday, June 17.

Lec #2: Java Syntax and Semantics

Lecture Topics:
  • Java syntax and semantics: statements, expressions, variables
  • The Java Execution Model (JEM): A first look
  • Contracts
Reading:
Assignments due:
  • None
Assignments handed out:
  • None

              Wednesday, June 18.

Lec #3: Methods I

Lecture Topics:
  • More on Contracts
  • Inheritance
  • Writing void methods (without and with parameters)
  • Handling method invocations in JEM
  • Invocation trees
  • Introduction to TurtleWorld
Reading:
Assignments due:
  • Problem set 1.
Assignments handed out:
  • Problem set 2: Writing Java methods: Buggles, Turtles (Due Fri., 6/20 before lecture)

Lab #2

  • Writing methods
  • Debugging
  • Style

              Thursday, June 19.

Lec #4: Methods II

Lecture Topics:
  • Using methods to solve problems: divide/conquer/glue examples
  • More on methods: scope, class (static) methods, fruitful methods (methods that return values)
  • Strings
  • Debugging
Assignments due:
  • None
Assignments handed out:
  • None

              Friday, June 20

Lec #5: Methods III

Lecture Topics:
  • PictureWorld
  • More problem solving
  • More invocation trees
Assignments due:
  • Problem set 2.
Assignments handed out:
  • Problem set 3: Fruitful Methods, PictureWorld (Due Tue., 6/24 before lecture)

Lab #3

  • Writing fruitful methods
  • PictureWorld
  • Divide/Conquer/Glue

Week 2. Monday, June 23.

Lec #6: Conditionals

Lecture Topics:
  • Boolean expressions
  • Control flow diagrams
  • Conditional statements
  • Pseudoloops (TickBuggle tick() method)
  • Writing boolean methods
Reading:
Assignments due:
  • None
Assignments handed out:
  • Problem set 4: Conditionals (Due Wedn., 6/25 before lecture)

Lab #4:

  • Conditionals.

              Tuesday, June 24

Lec #7: Recursion I

Lecture Topics: Reading:
Assignments due:
  • Problem set 3
Assignments handed out:
  • None

              Wednesday, June 25
Morning lab, afternoon lecture

Lab starts at 10am, ends at noon

Lab #5:

  • Recursion
  • Recursive JEM
Assignments due:
  • Problem set 4 due before morning lab
Assignments handed out:
  • Problem set 5: Writing recursive methods I (Due Fri., 6/27 before lecture)
Lecture starts at 1:30pm

Lec #8: Recursion II

Lecture Topics:
  • Recursive methods that return values
  • functions (static methods)
  • recursive functions
  • classic recursion examples

              Thursday, June 26
Lab (2.5 hours)

Lab starts at 10am, ends at 12:30pm

Lab #6:

  • Recursive methods that return values
Assignments due:
  • None
Assignments handed out:
  • None

              Friday, June 27
Morning lecture, afternoon exam

Lec #9: Lists I

Lecture Topics:
  • linked lists
  • IntList contract
  • StringList contract
  • box-and-pointer diagrams
  • simple list recursion
Assignments due:
  • Problem set 5
Assignments handed out:
  • Problem set 6: writing recursive methods II (Due Tue., 7/1, before lecture)
Midterm starts at 2pm.
Covers material up to (including) Lecture 7 and Lab 5

Week 3. Monday, June 30.

Lec #10: Lists II

Lecture Topics:
  • more Intlist recursion
  • lists of lists
  • lists of objects
  • primitive data wrappers and casts
Assignments due:
  • None
Assignments handed out:
  • Problem set 7: Lists (Due Thurs., 7/3, before lecture)

Lab #7:

  • Lists
  • Java applications
  • Static methods

              Tuesday, July 1

Lec #11: Iteration

Lecture Topics:
  • tail recursion
  • while loops
  • for loops
  • Nested for loops
  • Looping and lists
Assignments due:
  • Problem set 6
Assignments handed out:
  • None

              Wednesday, July 2
Morning lab, afternoon lecture

Lab starts at 10am, ends at noon

Lab #8:

  • Iteration
Assignments due:
  • None
Assignments handed out:
  • Problem set 8: Iteration, Java graphics (Due Tue., 7/8 before lecture)
Lecture starts at 1:30pm

Lec #12: Java graphics, objects

Lecture Topics:
  • Java Graphics methods
  • building your own objects
  • instance variables
  • constructor methods

              Thursday, July 3
Lab (2.5 hours)

Lab starts at 10am, ends at 12:30pm

Lab #9:

  • Java graphics
The lab is essential for Problem Set 8, you MUST attend.
Assignments due:
  • Problem set 7 due before morning lab
Assignments handed out:
  • None

Friday, July 4: Holiday, NO CLASS

Week 4. Monday, July 7

Lec #13: Animation World

Lecture Topics:
  • AnimationWorld Contract
  • AnimationWorld Examples
Assignments due:
  • None
Assignments handed out:
  • Problem set 9: Animation, Data Abstraction, Arrays (Due Thurs. 7/10 at 5 pm)

Lab #10:

  • Animation World

              Tuesday, July 8

Lec #14: Arrays

Lecture Topics:
  • Java arrays
Assignments due:
  • Problem set 8
Assignments handed out:
  • None

              Wednesday, July 9

Lec #15: Data abstraction

Lecture Topics:
  • More on classes and objects
  • Data abstraction
  • Example: Turtle World revealed
Assignments due:
  • None
Assignments handed out:
  • None

Lab #11:

  • Arrays
  • Data Abstraction

              Thursday, July 10

Lec #16: Review

Lecture Topics:
  • CS111 Jeopardy
  • Exam Review
Assignments due:
  • Problem set 9 due at 5 pm
Assignments handed out:
  • None

              Friday, July 11
Final exam

Final exam is 3 hours long. You may take it at any time between 10am and 4pm in room 257.
Extra credit problems (if any) due at 6pm.

Have a great summer!