-
            CS 75
            Principles of Compiler Design
            Swathmore College
             
             
             
            - Modelled after the influential paper on
            incremental approach to compiler design, this course teaches how to build a compiler in OCaml -
            Course on Github
            -
            Notes
            -
            CS 91
            Introduction to Programming Languages
            Swathmore College
             
             
            - Uses the Pyret programming
            language &
            PAPL book to understand
            the fundamentals of programming languages. -
            Labs
            - CIS 194
            Introduction to Haskell Penn Engineering
             
             
            - Explore the joys of functional programming, using Haskell as a
            vehicle. The aim of the course will be to allow you to use Haskell
            to easily and conveniently write practical programs. -
            Previous
            semester also available, with more exercises -
            CIS 198
            Rust Programming UPenn
             
             
            - This course covers what makes Rust so unique and applies it to
            practical systems programming problems. Topics covered include
            traits and generics; memory safety (move semantics, borrowing, and
            lifetimes); Rust’s rich macro system; closures; and concurrency. -
            Assignments -
            Clojure
            Functional Programming with Clojure
            University of Helsinki
             
            - The course is an introduction to functional programming with a
            dynamically typed language Clojure. We start with an introduction to
            Clojure; its syntax and development environment. Clojure has a good
            selection of data structures and we cover most of them. We also go
            through the basics of recursion and higher-order functions. The
            course material is in English. -
            Github Page
            -
            CMSC 430
            Introduction to Compilers
            Univ of Maryland
             
             
            - The goal of CMSC 430 is to arm students with the ability to
            design, implement, and extend a programming language. Throughout the
            course, students will design and implement several related
            languages, and will explore parsing, syntax querying, dataflow
            analysis, compilation to bytecode, type systems, and language
            interoperation. -
            Lecture Notes
            -
            Assignments
            -
            COS 326
            Functional Programming
            Princeton University
             
             
            - Covers functional programming concepts like closures, tail-call
            recursion & parallelism using the OCaml programming language -
            Lectures
            -
            Assignments
            - CS 143
            Compiler construction Stanford University
              
            - CS143 is a Stanford’s course in the practical and theoretical
            aspects of compiler construction. -
            Home -
            Syllabus
            - Lectures -
            Assignments -
            CS143 - 2011
            -
            CS 164
            Hack your language! UC Berkeley
             
             
             
            - Introduction to programming languages by designing and
            implementing domain-specific languages. -
            Lecture Videos
            -
            Code for Assignments
            - CS 173
            Programming Languages Brown University
             
             
            - Course by Prof. Krishnamurthi (author of
            HtDP) and numerous
            other
            awesome
            books on
            programming languages. Uses a custom designed
            Pyret programming language to
            teach the concepts. There was an
            online class
            hosted in 2012, which includes all lecture videos for you to enjoy.
            -
            Videos
            -
            Assignments
            -
            CS 223
            Purely Functional Data Structures In Elm
            University of Chicago
             
             
            - This course teaches functional reactive programming and purely
            functional data structures based on Chris Okazaki’s book and using
            the Elm programming language. -
            Lectures
            -
            Assignments
            - CS 240h
            Functional Systems in Haskell
            Stanford University
             
             
            - Building software systems in Haskell -
            Lecture Slides
            - 3 Assignments:
            Lab1,
            Lab2,
            Lab3
            -
            CS 421
            Programming Languages and Compilers
            Univ of Illinois, Urbana-Champaign
             
             
             
            Course that uses OCaml to teach functional programming and
            programming language design. -
            Lectures
            -
            Videos
            -
            Assignments
            -
            Exams
            -
            CS 3110
            Data Structures and Functional Programming
            Cornell University
             
             
            - Another course that uses OCaml to teach alternative programming
            paradigms, especially functional and concurrent programming. -
            Lecture Slides
            -
            Assignments
            -
            CS 4120
            Introduction to Compilers
            Cornell University
             
              
            - An introduction to the specification and implementation of modern
            compilers. Topics covered include lexical scanning, parsing, type
            checking, code generation and translation, an introduction to
            optimization, and compile-time and run-time support for modern
            programming languages. As part of the course, students build a
            working compiler for an object-oriented language. -
            Syllabus
            -
            Lectures
            -
            Assignments
            - CS 4400
            Programming Languages
            Northeastern University
             
             
             
            - This is a course on the study, design, and implementation of
            programming languages. - The course works at two simultaneous
            levels: first, we will use a programming language that can
            demonstrate a wide variety of programming paradigms. Second, using
            this language, we will learn about the mechanics behind programming
            languages by implementing our own language(s). The two level
            approach usually means that we will often see how to use a certain
            feature, and continue by implementing it. -
            Syllabus -
            Lecture Notes/Resources
            - CS 4610
            Programming Languages and Compilers
            University of Virginia
             
             
            - Course that uses OCaml to teach functional programming and
            programming language design. Each assignment is a part of an
            interpreter and compiler for an object-oriented language similar to
            Java, and you are required to use a different language for each
            assignment (i.e., choose 4 from Python, JS, OCaml, Haskell, Ruby). -
            Lecture Notes
            -
            Assignments
            -
            CS 5114
            Network Programming Languages
            Cornell University
              
            - This course provides an introduction to the languages used to
            program computer networks. It will examine recent proposals based on
            logic, functional, and distributed languages, as well as tools for
            establishing correctness using automatic solvers, model checkers,
            and proof assistants. -
            Syllabus
            -
            Lectures
            -
            CS 5142
            Scripting Languages Cornell University
              
            - Perl, PHP, JavaScript, VisualBasic – they are often-requested
            skills for employment, but most of us do not have the time to find
            out what they are all about. In this course, you learn how to use
            scripting languages for rapid prototyping, web programming, data
            processing, and application extension. Besides covering traditional
            programming languages concepts as they apply to scripting (e.g.,
            dynamic typing and scoping), this course looks at new concepts
            rarely found in traditional languages (e.g., string interpolation,
            hashes, and polylingual code). Through a series of small projects,
            you use different languages to achieve programming tasks that
            highlight the strengths and weaknesses of scripting. As a side
            effect, you practice teaching yourself new languages. -
            Syllabus
            -
            Lectures
            -
            Assignments
            -
            CS 5470
            Compilers University of Utah
             
             
             
            - If you’re a fan of Prof Matt’s writing on his
            fantastic blog you
            ought to give this a shot. The course covers the design and
            implementation of compilers, and it explores related topics such as
            interpreters, virtual machines and runtime systems. Aside from the
            Prof’s witty take on
            cheating
            the page has tons of interesting links on programming languages,
            parsing and compilers. -
            Lecture Notes
            -
            Projects
            -
            CS 6118
            Types and Semantics Cornell University
              
            - Types and Semantics is about designing and understand programming
            languages, whether they be domain specific or general purpose. The
            goal of this class is to provide a variety of tools for designing
            custom (programming) languages for whatever task is at hand. Part of
            that will be a variety of insights on how languages work along with
            experiences from working with academics and industry on creating new
            languages such as Ceylon and Kotlin. The class focuses on types and
            semantics and the interplay between them. This means category theory
            and constructive type theory (e.g. Coq and richer variations) are
            ancillary topics of the class. The class also covers unconventional
            semantic domains such as classical linear type theory in order to
            both break students from conventional thinking and to provide
            powerful targets capable of formalizing thinks like networking
            protocols, resource-sensitive computation, and concurrency
            constructs. The class project is to design and formalize a
            (programming) language for a purpose of the student’s choosing, and
            assignments are designed to ensure students have had a chance to
            practice applying the techniques learned in class before culminating
            these skills in the class project. -
            Syllabus
            -
            Lectures
            - CSC 253
            CPython internals: A ten-hour codewalk through the Python
              interpreter source code
            University of Rochester
              
            - Nine lectures walking through the internals of CPython, the
            canonical Python interpreter implemented in C. They were from the
            Dynamic Languages and Software Development course taught in
            Fall 2014 at the University of Rochester. -
            CSE 341
            Programming Languages
            University of Washington
             
             
             
            - Covers non-imperative paradigms and languages such as Ruby,
            Racket, and ML and the fundamentals of programming languages. -
            Lectures and Videos
            -
            Assignments and Tests
            -
            CSE P 501
            Compiler Construction
            University of Washington
             
             
            - Teaches understanding of how a modern compiler is structured and
            the major algorithms that are used to translate code from high-level
            to machine language. The best way to do this is to actually build a
            working compiler, so there will be a significant project to
            implement one that translates programs written in a core subset of
            Java into executable x86 assembly language. The compilers themselves
            will use scanner and parser generator tools and the default
            implementation language is Java. -
            Lectures
            -
            Assignments, Tests, and Solutions
            - DMFP
            Discrete Mathematics and Functional Programming
            Wheaton College
             
             
            - A course that teaches discrete maths concepts with functional
            programming -
            Lecture Videos -
            Assignments
            -
            PCPP
            Practical Concurrent and Parallel Programming
            IT University of Copenhagen
               
            - In this MSc course you learn how to write correct and efficient
            concurrent and parallel software, primarily using Java, on standard
            shared-memory multicore hardware. - The course covers basic
            mechanisms such as threads, locks and shared memory as well as more
            advanced mechanisms such as parallel streams for bulk data,
            transactional memory, message passing, and lock-free data structures
            with compare-and-swap. - It covers concepts such as atomicity,
            safety, liveness and deadlock. - It covers how to measure and
            understand performance and scalability of parallel programs. - It
            covers tools and methods to find bugs in concurrent programs. -
            6.945
            Adventures in Advanced Symbolic Programming
            MIT
               
            - Taught by Gerald Sussman of SICP fame, this class deals with
            concepts and techniques for the design an implementation of large
            software systems that can be adapted to uses not anticipated by the
            designer. Applications include compilers, computer-algebra systems,
            deductive systems, and some artificial intelligence applications. -
            Assignments: Extensive programming assignments, using MIT/GNU Scheme. Students
            should have significant programming experience in Scheme, Common
            Lisp, Haskell, CAML or other “functional” language. -
            Readings
            -
            CS 696
            Functional Design and Programming
            San Diego State University
               
            - Covers functional programming basis using Clojure. - Topics
            include testing, functional programming, immutable collections and
            concurrency. - Also includes assignments covering Clojurescript,
            Reagent etc. -
            L28
            Advanced Functional Programming
            University of Cambridge
               
            - This module aims to teach students how to use the features of
            modern typed functional programming languages (e.g. OCaml, Haskell)
            to design and implement libraries and DSLs. It aims to demonstrate
            how such techniques can improve both correctness and efficiency.
            Students wishing to take the module should have some experience of a
            typed functional programming language and an understanding of type
            inference. - This particular session was taught by a prominent OCaml
            programmer, open Source contributor & author of real world OCaml
            - Dr Anil Madhavapeddy.
           |