Learning Modules

This content of this course is categorized into Learning Modules. Here are the different Learning Modules in which you will gain proficiency.


Haskell and Functional Programming

Why this is important: Functional programming is one of the major paradigms of programming languages, and one of the oldest. Functional programs tend to be easier to debug, to reason about mathematically, and to ``get right'' the first time. They are becoming increasingly common in industry, and most modern languages now include major concepts from the functional programming paradigm.

Relevant to this course, functional programming languages happen to be well-suited for implementing programming languages.

Learning Modules

We give numbers to the learning modules to facilitate grading and reporting. They roughly correspond to the order in which you will see them in class, but we don’t guarantee that. They’re kind of like the order numbers you get at Portillo’s.


Interpreters

Why this is important: This is a programming language class. You should expect to learn how to implement a programming language, right?

Learning Modules


Mathematical Foundations

Why this is important: In order to reason about programs and programming languages well, we need certain mathematical structures with which to model them. Mastery of this will enable you to read documentation, know the abilities and limits of programming languages, prove properties (such as correctness) about your programs, and document your languages so other people can understand and implement them.

Learning Modules


Grammars and Parsing

Why this is important: The semantics tell you how a language works when it’s in the computer; grammars and parsing explain how to get the text you type to become the data structure the computer can manipulate.

Learning Modules

We will also cover Combinator Parsing here, but it is an extra topic.


Pragmatics

Why this is important: In this section we talk about different design decisions you could make that affect the kind of language you will have.

Learning Modules