Recent Changes - Search:
ECG Home

GitHub

People

Publications

Calendar

Projects

Fall 2017

Older Courses

Spring 2017

Fall 2016

Spring 2016

Fall 2015

Spring 2015

Fall 2014

Spring 2014

Fall 2013

Spring 2013

Fall 2012

Spring 2012

Fall 2011

Spring 2011

Fall 2010

Spring 2010

Fall 2009

Spring 2009

Fall 2008

Spring 2008

Fall 2007

HOWTOs

edit SideBar

Syllabus

Here is a chronological presentation of the course material.

  • Week 1. Introduction to functional programming and Haskell.
  • Week 2. Building an interpreter and operational semantics.
  • Week 3. Real language #1: Ruby.
  • Week 4. Real language #2: Io.
  • Week 5. Building an Interpreter: An object system.
  • Week 6. Real language #3: Prolog.
  • Week 7. Real language #4: Erlang.
  • Week 8. Building an interpreter: A functional programming language and denotational semantics.
  • Week 9. Real language #5: Scala.
  • Week 10. Building an interpreter for the lambda calculus.
  • Week 11. Real language #6: Clojure.
  • Week 12. Deeper into real language #7: Haskell.
  • Week 13. Deeper into the lambda calculus.

A conceptual view

Here is an orthogonal take on the material.

Language Design Choices

  • Different Languages Are Different
  • Compiled vs. Interpreted
  • Type System: Dynamic vs. Static, Save vs. Unsafe, Weak vs. Strong
  • Procedural, OO, or Functional
  • Pointers and Garbage Collection
  • Concatenative, Logical, and Array Languages
  • Concurrency and Parallelism

The Seven Languages

  • Ruby - Dynamic, OO
  • Io - Dynamic, Prototype-Based OO
  • Prolog - Logic Language
  • Erlang - Dynamic, Functional, Message-Passing Concurrecy
  • Scala - Static, Multi-Paradigm
  • Clojure - Dynamic, LISP, STM Concurrency
  • Haskell - Static Pure Functional
Edit - History - Print - Recent Changes - Search
Page last modified on January 23, 2013, at 02:34 PM