Programming Languages and Compilers

About Me

Professor Craton

Anything you want to know?

Introductions

  • Name
  • What are you hoping to learn from this class?

Syllabus

Link

Quizzes

  • Given regularly at beginning and end of class
  • Should be easy for you
  • Allow me to confirm that everyone is keeping up with course material

Course Overview

Introduction

  • 1.1 - 1.3 Why programming languages?
  • 1.4 - 1.6 Compilation vs Interpretation

Foundations

  • 2.1 - 2.2 Lexing (aka Tokenizing, Scanning)
  • 2.3 - 2.5 Parsing - ASTs, Language Hierarchy
  • 3.1 - 3.2 Binding and Lifetime
  • 3.3 - 3.6 Scope and Closures
  • 5 - Target Machine Architecture

Language Design

  • 6 - Control Flow
  • 7 - Type systems
  • 8 - Composite Types
  • 9 - Subroutines and Control Abstraction

Programming Paradigms

  • 10 - Object Oriented Programming (Python)
  • 11 - Functional Programming (JS)
  • 12 - Declarative Programming (SQL)

Course Software

  • You will need access to an x64 Debian-based Linux system for several of the assignments in this class
  • This can be installed directly on most laptops, or you can run it in a VM
  • We’ll cover VM setup in the first lab