À propos de ce cours
72,518 consultations récentes

100 % en ligne

Commencez dès maintenant et apprenez aux horaires qui vous conviennent.

Dates limites flexibles

Réinitialisez les dates limites selon votre disponibilité.

Niveau intermédiaire

Approx. 35 heures pour terminer

Recommandé : 8-16 hours/week...


Sous-titres : Anglais

Compétences que vous acquerrez

RecursionHigher-Order FunctionPattern MatchingFunctional Programming

100 % en ligne

Commencez dès maintenant et apprenez aux horaires qui vous conviennent.

Dates limites flexibles

Réinitialisez les dates limites selon votre disponibilité.

Niveau intermédiaire

Approx. 35 heures pour terminer

Recommandé : 8-16 hours/week...


Sous-titres : Anglais

Programme du cours : ce que vous apprendrez dans ce cours

2 heures pour terminer

Introduction and Course-Wide Information (Start Here)

Welcome! Start here! Learn about this course and how it's organized.

7 vidéos (Total 56 min), 5 lectures
7 vidéos
Optional: Who I Am / Acknowledgments6 min
What the Course is About / Initial Motivation8 min
Recommended Background9 min
Why Part A, Part B, Part C5 min
Grading Policy9 min
Optional: Very High-Level Outline7 min
5 lectures
Start here!5 min
About the Course10 min
Some More Perspective on Recommended Background7 min
Why are there 3 courses (Part A, Part B, Part C)?5 min
Grading Policy Details10 min
2 heures pour terminer

Software Installation and Homework 0

This module contains two things: (1) The information for the [unusual] software you need to install for Programming Languages Part A. (2) An optional "fake" homework that you can turn in for auto-grading and peer assessment to get used to the mechanics of assignment turn-in that we will use throughout the course. You can do this module either before or after watching the first few "actual course content" videos in the next module, but you will want to get the software installed soon so you can learn by actively trying out variations on the code in the videos. You will need to install the software to do the homework.

4 vidéos (Total 9 min), 3 lectures, 2 quiz
4 vidéos
Emacs installation2 min
SML installation1 min
SML Mode installation3 min
3 lectures
Part A Software Installation and Use: SML and Emacs1 h
Why Emacs? (Optional)5 min
Homework 0 Detailed Peer-Assessment Instructions
6 heures pour terminer

Section 1 and Homework 1

It's time to dive in! Start with a careful reading of the "Section 1 Welcome Message" and go from there.

17 vidéos (Total 150 min), 6 lectures, 2 quiz
17 vidéos
Rules for Expressions9 min
The REPL and Errors12 min
Shadowing6 min
Functions Informally7 min
Functions Formally8 min
Pairs and Other Tuples9 min
Introducing Lists10 min
List Functions11 min
Let Expressions7 min
Nested Functions7 min
Let and Efficiency10 min
Options9 min
Booleans and Comparison Operations7 min
Benefits of No Mutation7 min
Optional: Java Mutation4 min
Pieces of a Language6 min
6 lectures
Section 1 Welcome Message7 min
Section 1 Reading Notes
Code Files for All Section 1 Videos
Homework 1 Detailed Guidelines for Peer Assessment
Hints and Gotchas for Homework 15 min
Extra Practice Problems
7 heures pour terminer

Section 2 and Homework 2

This section is a particularly rewarding one where a lot of ideas come together to reveal a surprisingly elegant underlying structure in ML. As usual, start with the welcome reading, dive into the material, and leave plenty of time to approach the programming assignment methodically.

22 vidéos (Total 178 min), 6 lectures, 2 quiz
22 vidéos
Records8 min
Tuples as Syntactic Sugar6 min
Datatype Bindings8 min
Case Expressions10 min
Useful Datatypes11 min
Pattern Matching So Far4 min
Another Expression Example8 min
Type Synonyms6 min
Lists and Options are Datatypes9 min
Polymorphic Datatypes8 min
Each of Pattern Matching / Truth About Functions14 min
A Little Type Inference6 min
Polymorphic and Equality Types8 min
Nested Patterns10 min
More Nested Patterns10 min
Nested Patterns Precisely6 min
Optional: Function Patterns3 min
Exceptions7 min
Tail Recursion9 min
Accumulators for Tail Recursion7 min
Perspective on Tail Recursion5 min
6 lectures
Section 2 Welcome Message5 min
Section 2 Reading Notes
Code Files for All Section 2 Videos
Homework 2 Detailed Guidelines for Peer Assessment
Hints and Gotchas for Homework 27 min
Extra Practice Problems
8 heures pour terminer

Section 3 and Homework 3 -- and Course Motivation

This section is all about higher-order functions -- the feature that gives functional programming much of its expressiveness and elegance -- and its name! As usual, the first reading below introduces you to the section, but it will make more sense once you dive in to the lectures. Also be sure not to miss the material on course motivation that we have put in a "lesson" between the other videos for this week and the homework assignment. The material is "optional" in the sense that it is not needed for the homeworks or next week's exam, but it is still very highly encouraged to better understand why the course (including Parts B and C) covers what it does and, hopefully, will change the way you look at software forever.

28 vidéos (Total 247 min), 6 lectures, 2 quiz
28 vidéos
Functions as Arguments8 min
Polymorphic Types and Functions as Arguments7 min
Anonymous Functions9 min
Unnecessary Function Wrapping5 min
Map and Filter8 min
Generalizing Prior Topics9 min
Lexical Scope7 min
Lexical Scope and Higher-Order Functions7 min
Why Lexical Scope11 min
Closures and Recomputation6 min
Fold and More Closures11 min
Closure Idiom: Combining Functions9 min
Closure Idiom: Currying10 min
Partial Application9 min
Currying Wrapup6 min
Mutable References8 min
Closure Idiom: Callbacks8 min
Standard-Library Documentation7 min
Optional: Abstract Data Types With Closures11 min
Optional: Closure Idioms Without Closures4 min
Optional: Java Without Closures12 min
Optional: C Without Closures10 min
Course-Motivation Introduction5 min
Why Study General PL Concepts?10 min
Are All PLs the Same?6 min
Why Functional Languages?11 min
Why ML, Racket, and Ruby?12 min
6 lectures
Section 3 Welcome Message5 min
Section 3 Reading Notes
Code Files for All Section 3 Videos
Homework 3 Detailed Guidelines for Peer Assessment
Hints and Gotchas for Section 310 min
Extra Practice Problems
5 heures pour terminer

Section 4 and Part-A Exam

We finish Part A of the course with this module. As explained in more detail in the welcome message, we discuss type inference, ML's module system, and the fundamental idea in computing of two computations being equivalent. There is no programming assignment -- instead there is an exam covering all of Part A. Finally, there is a brief wrap-up video for the end of Part A that also looks ahead to Part B and Part C -- we have put it after the exam, so don't overlook it.

19 vidéos (Total 144 min), 5 lectures, 2 quiz
19 vidéos
What is Type Inference5 min
ML Type Inference6 min
Type Inference Examples10 min
Polymorphic Examples10 min
Optional: The Value Restriction and Other Type-Inference Challenges9 min
Mutual Recursion9 min
Modules for Namespace Management6 min
Signatures and Hiding Things7 min
A Module Example11 min
Signatures for Our Example11 min
Signature Matching4 min
An Equivalent Structure6 min
Another Equivalent Structure9 min
Different Modules Define Different Types3 min
Equivalent Functions8 min
Standard Equivalences10 min
Equivalence Versus Performance6 min
Part A Wrap-Up & Parts B&C Preview6 min
5 lectures
Section 4 Welcome Message7 min
Section 4 Reading Notes
Code Files for All Section 4 Videos
Nothing (yet) (explanation)
Information About the Exam (Required Reading)10 min
2 exercices pour s'entraîner
Practice Exam for Part A1 h
Exam for Part A1 h
289 avisChevron Right


a commencé une nouvelle carrière après avoir terminé ces cours


a bénéficié d'un avantage concret dans sa carrière grâce à ce cours

Principaux examens pour Programming Languages, Part A

par YZDec 3rd 2016

I'm just a beginner for CS or SE classes, and find this course really concise and challenging. It opens a door for me to get deeper into programming language. No wonder it got so high average score.

par ALMar 22nd 2017

Great course!\n\nI think this course has just the right balance of theoretical background, formal definitions, and actual examples to make "just right".\n\nThanks Dan, and everybody else involved!



Dan Grossman

Computer Science & Engineering

À propos de Université de Washington

Founded in 1861, the University of Washington is one of the oldest state-supported institutions of higher education on the West Coast and is one of the preeminent research universities in the world....

Foire Aux Questions

  • Une fois que vous êtes inscrit(e) pour un Certificat, vous pouvez accéder à toutes les vidéos de cours, et à tous les quiz et exercices de programmation (le cas échéant). Vous pouvez soumettre des devoirs à examiner par vos pairs et en examiner vous-même uniquement après le début de votre session. Si vous préférez explorer le cours sans l'acheter, vous ne serez peut-être pas en mesure d'accéder à certains devoirs.

  • Lorsque vous achetez un Certificat, vous bénéficiez d'un accès à tout le contenu du cours, y compris les devoirs notés. Lorsque vous avez terminé et réussi le cours, votre Certificat électronique est ajouté à votre page Accomplissements. À partir de cette page, vous pouvez imprimer votre Certificat ou l'ajouter à votre profil LinkedIn. Si vous souhaitez seulement lire et visualiser le contenu du cours, vous pouvez accéder gratuitement au cours en tant qu'auditeur libre.

D'autres questions ? Visitez le Centre d'Aide pour les Etudiants.