Learning Modules

Learning Modules

Learning Modules #

This course is broken into a series of Learning Modules.

Here are the different Learning Modules in which you will gain proficiency.

Haskell and Functional Programming Zone #

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 becomming increasingly common in industry, and most modern languages now include major concepts from the functional programming paradigm.

Relevant to this course, functional progamming languages happen to be very 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 #