-
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.
|