CS520: Programming Languages

Fall 2001

       
  • Instructor: Santiago Pericas-Geertsen
  • Meeting Place: MCS B31
  • Meeting Time: MWF 10:00-11:00 am
  • Office Hours: WF 11:00-12:00 pm
  • Prerequisites: (CS305 or CS332) and CS320
  • Overview:

    The course covers the mathematical and formal foundations of modern programming languages. Topics include: syntax and semantics of three paradigm languages, one functional (PCF), one object oriented and one foundational (the lambda calculus); the operational, axiomatic and denotational semantics of programming languages; program verification; topics in the typed and untyped lambda-calculus; topics in type theory (type inference, subtyping, polymorphism). Material presented in class, or assigned for independent reading, will be mostly from the textbook and occasionally from handouts.

    There is no programming in this course, but you will appreciate the value of the course in proportion to your programming experience and familiarity with different programming paradigms. If you have never programmed before, the material will come across as dry and formal, with little or no practical motivation for it. And I venture to say that the better programmer you are, the easier the course will be for you.

  • Grading:
     
    • Homework assignments, about 40% of final grade
    • Midterm exam (one hour), about 25%
    • End-of-term exam (two hours), about 35%
  • Important Dates:
     
    • Midterm: 10.24.01 10-11 am
    • Final: 12.19.01 9-11 am
  • Assignments:
     
    • Problems will be assigned every week. All problems assigned one week are due the following week. Homework problems returned after their due date will not be graded.
    •  
    • Collaboration in homework assignments is accepted, but not encouraged (In an undergraduate course, this is an absolute no-no). Always try to do the homework problems on your own first. If you get stuck and decide to collaborate with someone else in the class on a homework problem, you have to acknowledge it: Mention the name of your partner at the beginning of any joint solution you hand in. Just be aware that there is an official BU document called the "Academic Conduct Code".
    •  
    • The expected work is 3 hours of lecture per week + 9 hours of studying on your own per week (reviewing lecture notes, homework problems, additional material) -- for a total of 12 hours per week.
  • Tests:
     
    • The tests are closed book. You may, however, bring one 8.5 by 11 sheet of paper (i.e. one regular-size sheet of paper) as a crib sheet. Preparing a crib sheet can be a useful study aid, so take time in selecting material for it. You may use both sides of the paper and write as small as you like, but in any case, you are allowed only one sheet. No mechanical or electronic reproductions are allowed; the crib sheet must be hand written. You must hand in your crib sheet when you hand in your test, and you will get credit for it in your total grade for the test.
    •  
    • For each test, you are responsible for material covered in lecture, in problem sets, and in the corresponding sections in the textbook -- up to the date of that test. Although the end-of-term test will cover the entire course, it will emphasize the latter part of the course (after the mid-term test).
    •  
    • You cannot miss a test! In case of an emergency forcing you to miss a test, please bring the matter to my attention.
 
     
  • Mailing List:
     
    • To join the course mailing list, type csmail -a cs520 at the Unix prompt
    • To inspect who else is on the mailing list, type csmail -p cs520
    • To remove yourself from the mailing list, type csmail -r cs520
  • Bibliography:
     
    • "Foundations for Programming Languages", John C. Mitchell, The MIT Press, 1996. [Errata]
    •  
    • "A Theory of Objects", Martin Abadi and Luca Cardelli, Springer, 1996.
  • Resources:
     
    • Sigma : An interpreter for the Sigma Calculus with lambdas. 
  • Schedule:
     
    • Week 1: Lambda notation. Introduction to semantics. Syntax vs. Semantics. Induction.
       
    • Week 2: More on Induction. Introduction to the Language PCF.
       
    • Week 3: The Language PCF: syntax and operational semantics.
       
    • Week 4: The Language PCF: type system, axiomatic semantics, denotational semantics, extensions.
       
    • Week 5: Simply-typed Lambda Calculus: context-sensitive syntax, product and sum types and related types.
       
    • Week 6: Simply-typed Lambda Calculus: Curry-Howard isomorphism, type checking.
       
    • Week 7: Simply-typed Lambda Calculus: Henkin models. Midterm.
       
    • Week 8: Object Orientation: class-based languages, object-based languages. [Slides Ch.2] [Slides Ch.3]
       
    • Week 9: Object-based languages and the Sigma Calculus. [Slides Ch.4] [Slides Ch.6]
       
    • Week 10: Type systems for the Sigma Calculus. [Slides Ch.7/8]
       
    • Week 11: Type Inference: Unification, Principal Types, The PT Algorithm.
       
    • Week 12: Recursive Types: Extending Unification, Finite Representations, Typing Power.