Introduction to concept based education in programming
Claus Gittinger on Lambda Calculus, Higher-order functions and functional programming. Examples from List, Smalltalk and others. The concept of OO is developed starting with lambdas and closures. Lambdas are shown as the basic building blocks for the implemenation of OO languages.
More basic concepts of programming like lazy evaluation, call continuation etc.
Basics of building compilers. AST, Scanning and parsing. some language theory. How to bootstrap a compiler.
Compiler Instrumentation using the Smalltalk/X environment. Goal is to instrument the compiler for calling statistics.
Seaside: a new way to build web applications using call continuation as a core principle (functions returning several times)
Constraint Programming. Basics of logic programming. Possibly with a guest.
Concurrency: declarative, shared state and message passing compared. Erlang?
Just in Time Compilation - How does it work? Optimizations?
Self - the basics of a prototype language. Slots and more
Common language runtime - how does it work?
LISP Music System - data equals programs. How far does this concept reach?
Unstructured Information Management Architecture - take a look at the prolog based data area which is used to forward results to other modules.
Bridging Languages - how to attach interpreters or bridge calls between different languages.
Backtracking - how does this core mechanism from logic programming work? Where can it be used/simulated?
Apache Commons: closures, higher-order functions simulated in Java
Network Architectures - using compilers and code generation in network machinery (take a look at the book from George Varghese)
Building Interpreters - a practical approach
Teatime - an active replicated distributed object protocol for large scale interactive worlds.
Nondeterministic computing - after last years war of the cores this seemed to fit (;-)