What is Computer Science?

Computer Science and the Liberal Arts

The Apollo Guidance Computer

Recursive Definitions and hippopotomonstrosesquipedaliophobia

Computer Science and the Liberal Arts

The Apollo Guidance Computer

Recursive Definitions and hippopotomonstrosesquipedaliophobia

What is Language?

Components of Language

Being a Jeffersonian Student

Grace Hopper and the first Computer Programming Languages

Components of Language

Being a Jeffersonian Student

Grace Hopper and the first Computer Programming Languages

**Class 3: Rules of Evaluation** [Notes]

Backus-Naur Form

Exponential Growth (Genome Sequencing)

Scheme Grammar and Evaluation Rules

Exponential Growth (Genome Sequencing)

Scheme Grammar and Evaluation Rules

**Class 4: Making Procedures** [Notes]

Lambda

Making and Applying Procedures

SVO/SOV/OVS Languages

Making and Applying Procedures

SVO/SOV/OVS Languages

**Class 5: Procedure Practice** [Notes]

If Expressions

Why we can’t define if ourselves

Practice defining procedures

Why we can’t define if ourselves

Practice defining procedures

**Class 6: Programming with Data** [Notes]

Procedure practice: `middle`, `find-fixedpoint`

History of Scheme

Introducing Pairs

History of Scheme

Introducing Pairs

**Class 7: Programming with Lists** [Quiz 1 (PDF)]

Making `cons`, `car`, and `cdr`

Threesomes, Quadruples, and More!

Lists

Gold Star Grading Scale

Threesomes, Quadruples, and More!

Lists

Gold Star Grading Scale

**Class 8: Programming with Lists** [Notes]

Reviewing Lists

Defining`is-list?`

Quiz Results and Comments

Recursive List Procedures

Defining

Quiz Results and Comments

Recursive List Procedures

**Class 9: Consistent Hashing** [Slides] [Notes]

Danny Lewin, 14 May 1970 - 11 September 2001

Internet Caching

Lookup Tables

Hash Tables

Consistent Hashing

Internet Caching

Lookup Tables

Hash Tables

Consistent Hashing

**Class 10: Abstracting List Procedures** [Notes]

Abstracting List Procedures

Edit Distance

Edit Distance

**Class 11: Deeper List Procedures** [Slides] [Notes]

The Story so Far: Recursive Definitions, Universality, Abstraction

Problem Set 3: L-System Fractals

**Class 12: Computing Machines** [Slides] [Quiz 2 (PDF)]

Constitution Day!

Jefferson's Decimal Measurement System

Computing with Electricity

Transistors and Logic

Jefferson's Decimal Measurement System

Computing with Electricity

Transistors and Logic

**Class 13: Digital Logic** [Slides] [Notes]

Shockley-can Valley

Describing Functions with Truth Tables

Turing Truth Tables into Logic

Making`and3` and `or`

Quiz 2 and Course Suggestions

Describing Functions with Truth Tables

Turing Truth Tables into Logic

Making

Quiz 2 and Course Suggestions

**Class 14: Turing's Model** [Slides] [Notes]

Modeling Computers

Finite State Machines

Turing Machines

Finite State Machines

Turing Machines

**Class 15: Where are the Bagels?** [Notes]

Practice with Digital Logic

Defining`for` and `while`

Defining

**Class 16: Making Loops** [Slides] [Notes]

Designing Turing Machines

Making Loops

Making Loops

**Class 17: Golden Sneezewort** [Slides] [Notes]

Generalizing Loops

Fibonacci

Measuring Cost

Golden Ratio

Fibonacci

Measuring Cost

Golden Ratio

**Class 18: Measuring Cost** [Slides] [Notes])

Measuring Cost

Asymptotic Operators:*O*, Ω, &Theta

Asymptotic Operators:

**Class 19: Analyzing Algorithms** [Slides] [Notes]

XOR Machines

Proof by Construction

Algorithm Analysis

Turing Machine for**<** (unary input)

Proof by Construction

Algorithm Analysis

Turing Machine for

**Class 20: Running Time** [Slides]

Steve Jobs, 1955-2011

Turing Machine for**<** (binary input)

Breaking Lorenz

Turing Machine for

Breaking Lorenz

**Class 21: Changing State** [Slides] [Notes]

Asymptotic Operators Practice

State

`set!`

Mutable pairs

State

Mutable pairs

**Class 22: Stateful Evaluation Rules** [Slides] [Notes]

Name, Places, Frames, and Environments

Stateful Evaluation Rules

Exam 1

Tandem Repeats

Stateful Evaluation Rules

Exam 1

Tandem Repeats

**Class 23: Programming with State and Genetic Algorithms** (guest lecture by Westley Weimer) (Slides [PDF])

Functional vs. Imperative Programming

Stateful Application Rule

`mlist-append!`

Genetic Algorithms

Stateful Application Rule

Genetic Algorithms

**Class 24: Imperative Programming** [Slides] [Notes] [Code]

Aliasing

**Class 25: Reversing Reverse** [Slides]

Reverse Engineering

`list-reverse`

Analyzing running time and space

`mlist-reverse!`

Analyzing running time and space

**Class 26: Objectifying Objects** [Slides] [Notes]

Encapsulation

Making a better counter

Object-oriented programming

Real databases

Making a better counter

Object-oriented programming

Real databases

**Class 27: Pythonic Objects** [Slides]

John McCarthy

Why learn Python?

Learning new languages

Objects in Python

Why learn Python?

Learning new languages

Objects in Python

**Class 28: Entropy** [Slides] [Notes]

Liberal Arts Checkup

Python Tuples and Lists

Reversing in Python

Entropy

Python Tuples and Lists

Reversing in Python

Entropy

**Class 29: Trick-or-Treat Protocols** [Slides] [Notes]

Protocols, Algorithms, and Procedures

Public-key Cryptography (RSA)

P=NP?

Inheritance

Public-key Cryptography (RSA)

P=NP?

Inheritance

**Class 30: Sex, Religion, and Politics** [Slides]

Problems and Procedures

P=NP Recap

Endless Golden Ages

Golden Catastrophes

Optimism

P=NP Recap

Endless Golden Ages

Golden Catastrophes

Optimism

**Class 31: Dictionaries** [Slides] [Notes] [Code]

Python Dictionaries

Plagarism Detection

(Pre-)History of Object-Oriented Programming

Plagarism Detection

(Pre-)History of Object-Oriented Programming

**Class 32: Interpreters** [Slides] [Notes]

Meta-Linguistic Programming

Interpreters

History of Object-Oriented Programming

Implementing Application

Interpreters

History of Object-Oriented Programming

Implementing Application

**Class 33: Diving Deep** (guest lecture by Ivan Alagenchev) [Slides] [Notes]

**Class 34: Unprovability** [Slides] [Notes]

Problem Set 8

Axiomatic Systems

Proving 1+1=2

Russell's Paradox

Axiomatic Systems

Proving 1+1=2

Russell's Paradox

**Class 35: Self-Reference** [Slides]

The true story of Epimenides

Gödel's Proof

Introducing Computability

Gödel's Proof

Introducing Computability

**Class 36: Halting Problem** [Slides] [Notes]

Halting Problem

Proving Non-Computability

Universal Turing Machines

Proving Non-Computability

Universal Turing Machines

**Class 37: Computability in Theory and Practice** [Slides]

Computability Practice

Universal Languages

Lambda Calculus

Ali G Problem

Universal Languages

Lambda Calculus

Ali G Problem

**Class 38: The Internet** [Slides] [Notes]

Type Checking

Networking

Latency and Bandwidth

The Internet

Networking

Latency and Bandwidth

The Internet

**Class 39: ...and the World Wide Web** [Slides]

The World Wide Web

Dynamic Web Applications

Search Engines

MapReduce

Course Summary

Dynamic Web Applications

Search Engines

MapReduce

Course Summary

**Class 40: Research** (Notes: [PDF])

Jonathan Burket, *GuardRails: A (Nearly) Painless Solution to Web Application Security* [PPTX] [GuardRails Website]

Virginia Smith, *Big Data, Bees, and Buildings* [Prezi Presentation]

You must be logged in to post a comment.

It may just be me, but Fridays seem to be a bad day to submit the Problem Sets. I get most of my work done on Sunday and throughout the week I am very busy.

Also ElevenLearning.com is fine, it would be better with a “Find” Feature

Yes, it would be useful to have a search in book, which doesn’t seem to exist. Note with google you can do searches across the PDFs by using

site:computingbook.orgin your search. For example,site:computingbook.org Ada.

I agree with Michael. Problem sets would be much easier to manage if they were due after the weekend rather than before.

Most of the remaining problem sets are scheduled to be due on non-Fridays (except PS5 which is scheduled for Oct 21), so hopefully that will help. (I should note, though, that there is more that a week for every problem set, so if you find it easier to schedule your work over a weekend you can always start early even for a problem set due on a Friday!)

Is there a place on this website or elsewhere for us to check our grades and progress in the class?

Not yet, but I’ll make the grades available for you to check sometime after Exam 1.

Awesome. Thank you.

Will we be able to view our PS and Quiz grades as well?

Will we be able to view our PS and quiz grades as well?

Yes, you’ll be able to see all your grades.

Where/When will you be posting them?

Soon?

I sense from the questions, you are wanting this because you don’t know your grades on some of the assignments. This isn’t the point of me posting the grades. It is only so you can verify that I have grades recorded correctly. I won’t post grades for assignments that haven’t yet been collected, since I don’t want students to substitute carefully reading our comments on your assignments/exams, for seeing just the posted score.

So, the grades will be posted before the end of the semester (but probably a bit before that), but only grades for assignments that have already been collected.