Course summary

CS 242 explores the concepts, design decisions, and tradeoffs underlying the programming languages of today and tomorrow. Specifically, this class focuses on three themes:

  1. Scripting languages: Understanding the expressive power afforded by dynamic typing, reflection, metaprogramming, and runtime extensibility. When your language assumes nothing about your program, how far can you go?

  2. Functional languages: Examining the effects of complex static type systems and functional programming idioms on structuring programs and proving statements about them. When your language knows a lot about your program, what do you gain?

  3. Systems languages: Exploring how language constructs can help programmers manage their hardware with both safety and performance. What are the costs of the abstractions afforded by higher level languages?

Course info


Will Crichton

Course assistants




Topics Readings
Week 1: September 24
Lecture 1.1 (Mon): TBD
Lecture 1.2 (Wed): TBD
Week 2: October 1
Lecture 2.1 (Mon): TBD
Lecture 2.2 (Wed): TBD
Week 3: October 8
Lecture 3.1 (Mon): TBD
Lecture 3.2 (Wed): TBD
Week 4: October 15
Lecture 4.1 (Mon): TBD
Lecture 4.2 (Wed): TBD
Week 5: October 22
Lecture 5.1 (Mon): TBD
Lecture 5.2 (Wed): TBD
Week 6: October 29
Lecture 6.1 (Mon): TBD
Lecture 6.2 (Wed): TBD
Week 7: November 5
Lecture 7.1 (Mon): TBD
Lecture 7.2 (Wed): TBD
Week 8: November 12
Lecture 8.1 (Mon): TBD
Lecture 8.2 (Wed): TBD
Week 9: November 19
No class for Thanksgiving!
Week 10: November 26
Lecture 10.1 (Mon): TBD
Lecture 10.2 (Wed): TBD
Week 11: December 3
Lecture 11.1 (Mon): TBD
Lecture 11.2 (Wed): TBD
Week 12: December 10
Final details TBD