A topic list for the second midterm exam is available
The Final Exam will take place Thursday, May 10th from 10:15 AM
- 12:15 PM in the usual classroom (GH 123). It will be open book
and open notes.
The second midterm exam will take place in class on Tuesday, May 1st. It will be open book and open notes.
||Match all <div
class="..."> tags in an HTML file
||Remove HTML tags from an HTML
||Demonstrate Ruby objects/classes
presentation on regular languages by Andrew McCallum, University of
Massachusetts. Slides 22-26 are a good overview of regular
languages, regular expressions, and deterministic finite
automata. Note that in some slides the pipe character ("|") is
used instead of plus ("+") to describe addition (a.k.a. "disjunction").
Lecture notes on context-free
languages and grammars.
Lecture notes on pushdown automata
and Turing machines.
Lecture notes on decidability and
the Halting Problem; intro to Lambda calculus.
Lecture notes on currying and
recursion in Lambda calculus.
Lecture notes on field layout and
virtual methods in object-oriented languages.
Lecture notes on generic abstraction.
Ruby and basic Scheme
Scheme functions and recursion
Why's (Poignant) Guide to
Programming Ruby, First
Mastering Regular Expressions, 3rd Ed. (click on "Read Online")
(nice implementation of Scheme for various platforms)
schemers.org (lots of
information and links about Scheme)
How To Design Programs
(web-based introductory Scheme programming textbook)
readscheme.org - Functional
x86 Calling Conventions (gcc uses the "cdecl" calling convention)
X86 Assembly/GAS Syntax (good tutorial on x86 assembly using the GNU assembler)
IA-32 Architecture Manuals (see the instruction set references;
note that they use Intel syntax rather than AT&T syntax)
|Assignment 1: Regular expressions and DFAs
||Tuesday, January 30th by 11:59 PM
|Assignment 2: Context-free languages
||Thursday, February 8th by 11:59
|Assignment 3: Turing machines, Lambda calculus, values and
||Thursday, February 22nd by 11:59
|Assignment 4: Variables and Storage, Binding and Scope
||Thursday, March 22nd by 11:59 PM
|Assignment 5: Procedural/Data Abstraction, Generics,
||Monday, April 16th by 11:59 PM
|Assignment 6: Text Processing with Ruby
||Tuesday, April 24th by 11:59 PM
|Assignment 7: Scheme Programming
||Thursday, May 3rd by 11:59 PM
|Extra Credit Assignment: Haskell
||Friday, April 27th by 11:59 PM