CS 111
Fall 2017

Schedule

week

lecture dates

topics, exams, due dates, and other special dates

0

A/B: 9/6, 9/8
C: 9/5, 9/7

  • Course overview and introduction
  • Computational problem-solving with Picobot
  • No labs this week

1

A/B: 9/11, 9/13, 9/15
C: 9/12, 9/14

  • Getting started in Python
  • Data types and expressions
  • Strings and lists
  • A first look at functions
  • Making decisions (conditional execution)
  • Problem Set 0: part I due on 9/14
  • Problem Set 0, part II due on 9/17

2

A/B: 9/18, 9/20, 9/22
C: 9/19, 9/21

  • Functions (cont.)
  • Local and global variables; the runtime stack
  • Recursion
  • 9/18: last day to add a class
  • Problem Set 1, part I due on 9/21
  • Problem Set 1, part II due on 9/24

3

A/B: 9/25, 9/27, 9/29
C: 9/26, 9/28

  • Higher-order functions and list comprehensions
  • Recursive design
  • Lists of lists; encryption and decryption
  • Problem Set 2, part I due on 9/28
  • Problem Set 2, part II due on 10/1

4

A/B: 10/2, 10/4, 10/6
C: 10/3, 10/5

  • Algorithm design; encryption and decryption
  • Representing information
  • Problem Set 3, part I due on 10/5
  • Problem Set 3, part II due on 10/8

5

A/B: 10/10, 10/11, 10/13
C: 10/12

  • Digital logic and circuit design
  • Machine organization
  • A/B: No lecture on 10/9 (Columbus Day)
  • A/B: Lecture on 10/10 (Mon. schedule)
  • C: No lecture on 10/10 (Mon. schedule)
  • No labs this week
  • 10/10: last day to drop without a ‘W’
  • Problem Set 4 (all) due on 10/12

6

A/B: 10/16, 10/18 10/20
C: 10/17, 10/19

  • Assembly language
  • Midterm 1 on 10/18 from 6:30-7:30 p.m.
  • Problem Set 5 (all) due on 10/22

7

A/B: 10/23, 10/25, 10/27
C: 10/24, 10/26

  • Assembly language (cont.)
  • Loops and imperative programming
  • Cumulative computations
  • Problem Set 6, part I due on 10/26
  • Problem Set 6, part II due on 10/29

8

A/B: 10/30, 11/1, 11/3
C: 10/31, 11/2

  • Object-oriented programming: using objects
  • Nested loops
  • Design using loops
  • References; mutable vs. immutable data
  • Problem Set 7, part I due on 11/2
  • Problem Set 7, part II due on 11/5

9

A/B: 11/6, 11/8, 11/10
C: 11/7, 11/9

  • 2-D lists
  • Object-oriented programming (cont.)
  • File processing
  • Classes: creating your own types of objects
  • 11/10: last day to drop with a ‘W’
  • Problem Set 8, part I due on 11/9
  • Problem Set 8, part II due on 11/12

10

A/B: 11/13, 11/15, 11/17
C: 11/14, 11/16

  • Classes: creating your own types of objects (cont)
  • Dictionaries
  • Inheritance
  • Midterm 2 on 11/15 from 6:30-7:30 p.m.
  • Problem Set 9 (all) due on 11/19

11

A/B: 11/20
C: 11/21

  • Games and AI
  • A/B: No lectures on 11/22, 11/24 (Fall recess)
  • C: No lecture on 11/23 (Fall recess)
  • No labs this week

12

A/B: 11/27, 11/29, 12/1
C: 11/28, 11/30

  • Games and AI (cont.)
  • Overview of the final project
  • Finite-state machines
  • Problem Set 10, part I due on 11/30
  • Problem Set 10, part II due on 12/3

13

A/B: 12/4, 12/6, 12/8
C: 12/5, 12/7

  • Finite-state machines (cont.)
  • Turing machines
  • Problem “hardness”; uncomputability
  • Problem Set 11 (all) due on 12/7

14

A/B: 12/11
C: 12/12

  • Wrap-up
  • Final project due on 12/11

15

  • Final exam: Wed, 12/20, 3-5 pm