- 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 - 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
- Corsopl
Principles of Programming Languages Politecnico di
Milano
- Lecture Notes
- Readings - This course gives an overview of Scheme, Haskell and Erlang
while analyzing the languages’ similarities and differences. As a
result, many important/prevalent concepts and how they manifest
differently in different programming languages are explained. Among
these are (purely) functional programming, object orientation, type
inference and evaluation order. - Thorough introduction to functional
programming with no preknowledge in any functional language required. -
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. |