À propos de ce cours
4.9
893 notes
259 avis
100 % en ligne

100 % en ligne

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

Dates limites flexibles

Réinitialisez les dates limites selon votre disponibilité.
Niveau intermédiaire

Niveau intermédiaire

Heures pour terminer

Approx. 35 heures pour terminer

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

Anglais

Sous-titres : Anglais

Compétences que vous acquerrez

RecursionHigher-Order FunctionPattern MatchingFunctional Programming
100 % en ligne

100 % en ligne

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

Dates limites flexibles

Réinitialisez les dates limites selon votre disponibilité.
Niveau intermédiaire

Niveau intermédiaire

Heures pour terminer

Approx. 35 heures pour terminer

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

Anglais

Sous-titres : Anglais

Programme du cours : ce que vous apprendrez dans ce cours

Semaine
1
Heures pour terminer
2 heures pour terminer

Introduction and Course-Wide Information (Start Here)

Welcome! Start here! Learn about this course and how it's organized....
Reading
7 vidéos (Total 56 min), 5 lectures
Video7 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
Reading5 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
Heures pour terminer
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....
Reading
4 vidéos (Total 9 min), 3 lectures, 2 quiz
Video4 vidéos
Emacs installation2 min
SML installation1 min
SML Mode installation3 min
Reading3 lectures
Part A Software Installation and Use: SML and Emacss
Why Emacs? (Optional)5 min
Homework 0 Detailed Peer-Assessment Instructions
Semaine
2
Heures pour terminer
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....
Reading
17 vidéos (Total 150 min), 6 lectures, 2 quiz
Video17 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
Reading6 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
Semaine
3
Heures pour terminer
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....
Reading
22 vidéos (Total 178 min), 6 lectures, 2 quiz
Video22 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
Reading6 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
Semaine
4
Heures pour terminer
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. ...
Reading
28 vidéos (Total 247 min), 6 lectures, 2 quiz
Video28 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
Reading6 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
4.9
259 avisChevron Right

Meilleurs avis

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!

par MKJun 17th 2017

Good fundaments for learning new programming languages. Well prepared and challenging homeworks. I learned a lot of functional programming concepts fom this course and I am sure I will use them.

Enseignants

Avatar

Dan Grossman

Professor
Computer Science & Engineering

À propos de University of 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.