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)

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: time and date TBD.
    Please wait until your instructor informs you of the date. The initial date posted by the Registrar will not be correct.
    Make sure that you are available for the entire exam period – up to and including Thursday evening, Dec. 21!