COMS E6998-2
Advanced Topics in Programming
    Languages and Compilers
Lecture 1: September 6, 2011
4:10-6:00pm

Lecture Outline

  1. Introductions
  2. Course overview
  3. Prerequisites
  4. Course project
  5. Language desiderata
  6. Language design principles
  7. Kinds of languages
  8. Major application areas
  9. Untyped lambda calculus
  10. References

1. Introductions



2. Course Overview



3. Prerequisites



4. Course Project



5. Language Desiderata



6. Language Design Principles



7. Kinds of Languages



8. Major Application Areas



9. Introduction to Lambda Calculus



10. Grammar for Lambda Calculus



11. Function Abstraction



12. Function Application



13. Free and Bound Variables



14. Renaming Bound Variables by Alpha Reduction



15. Evaluation of Function Applications by Beta Reduction



16. Substitutions



17. Normal Forms



18. Evaluation Strategies



19. Arithmetic



19. Lambda Calculus is Turing-complete.



20. Church Integers

22. Arithmetic



23. Logic



24. References




aho@cs.columbia.edu