Informações sobre o curso
4.9
829 ratings
242 reviews
This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “fits together” to make you more effective programming in any language -- and in learning new ones. This course is neither particularly theoretical nor just about programming specifics -- it will give you a framework for understanding how to use language constructs effectively and how to design correct and elegant programs. By using different languages, you will learn to think more deeply than in terms of the particular syntax of one language. The emphasis on functional programming is essential for learning how to write robust, reusable, composable, and elegant programs. Indeed, many of the most important ideas in modern languages have their roots in functional programming. Get ready to learn a fresh and beautiful way to look at software and how to have fun building it. The course assumes some prior experience with programming, as described in more detail in the first module. The course is divided into three Coursera courses: Part A, Part B, and Part C. As explained in more detail in the first module of Part A, the overall course is a substantial amount of challenging material, so the three-part format provides two intermediate milestones and opportunities for a pause before continuing. The three parts are designed to be completed in order and set up to motivate you to continue through to the end of Part C. The three parts are not quite equal in length: Part A is almost as substantial as Part B and Part C combined. Week 1 of Part A has a more detailed list of topics for all three parts of the course, but it is expected that most course participants will not (yet!) know what all these topics mean....
Globe

cursos 100% online

Comece imediatamente e aprenda em seu próprio cronograma.
Calendar

Prazos flexíveis

Redefinir os prazos de acordo com sua programação.
Intermediate Level

Nível intermediário

Clock

Sugerido: 8-16 hours/week

Aprox. 34 horas restantes
Comment Dots

English

Legendas: English

Habilidades que você terá

Functional ProgrammingRecursionPattern MatchingHigher-Order Function
Globe

cursos 100% online

Comece imediatamente e aprenda em seu próprio cronograma.
Calendar

Prazos flexíveis

Redefinir os prazos de acordo com sua programação.
Intermediate Level

Nível intermediário

Clock

Sugerido: 8-16 hours/week

Aprox. 34 horas restantes
Comment Dots

English

Legendas: English

Programa - O que você aprenderá com este curso

1

Seção
Clock
2 horas para concluir

Introduction and Course-Wide Information (Start Here)

Welcome! Start here! Learn about this course and how it's organized....
Reading
7 vídeos (Total de 56 min), 5 leituras
Video7 videos
Optional: Who I Am / Acknowledgments6min
What the Course is About / Initial Motivation8min
Recommended Background9min
Why Part A, Part B, Part C5min
Grading Policy9min
Optional: Very High-Level Outline7min
Reading5 leituras
Start here!5min
About the Course10min
Some More Perspective on Recommended Background7min
Why are there 3 courses (Part A, Part B, Part C)?5min
Grading Policy Details10min
Clock
2 horas para concluir

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 vídeos (Total de 9 min), 3 leituras, 2 testes
Video4 videos
Emacs installation2min
SML installation1min
SML Mode installation3min
Reading3 leituras
Part A Software Installation and Use: SML and Emacsmin
Why Emacs? (Optional)5min
Homework 0 Detailed Peer-Assessment Instructionsmin

2

Seção
Clock
6 horas para concluir

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 vídeos (Total de 150 min), 6 leituras, 2 testes
Video17 videos
Rules for Expressions9min
The REPL and Errors12min
Shadowing6min
Functions Informally7min
Functions Formally8min
Pairs and Other Tuples9min
Introducing Lists10min
List Functions11min
Let Expressions7min
Nested Functions7min
Let and Efficiency10min
Options9min
Booleans and Comparison Operations7min
Benefits of No Mutation7min
Optional: Java Mutation4min
Pieces of a Language6min
Reading6 leituras
Section 1 Welcome Message7min
Section 1 Reading Notesmin
Code Files for All Section 1 Videosmin
Homework 1 Detailed Guidelines for Peer Assessmentmin
Hints and Gotchas for Homework 15min
Extra Practice Problemsmin

3

Seção
Clock
7 horas para concluir

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 vídeos (Total de 178 min), 6 leituras, 2 testes
Video22 videos
Records8min
Tuples as Syntactic Sugar6min
Datatype Bindings8min
Case Expressions10min
Useful Datatypes11min
Pattern Matching So Far4min
Another Expression Example8min
Type Synonyms6min
Lists and Options are Datatypes9min
Polymorphic Datatypes8min
Each of Pattern Matching / Truth About Functions14min
A Little Type Inference6min
Polymorphic and Equality Types8min
Nested Patterns10min
More Nested Patterns10min
Nested Patterns Precisely6min
Optional: Function Patterns3min
Exceptions7min
Tail Recursion9min
Accumulators for Tail Recursion7min
Perspective on Tail Recursion5min
Reading6 leituras
Section 2 Welcome Message5min
Section 2 Reading Notesmin
Code Files for All Section 2 Videosmin
Homework 2 Detailed Guidelines for Peer Assessmentmin
Hints and Gotchas for Homework 27min
Extra Practice Problemsmin

4

Seção
Clock
8 horas para concluir

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 vídeos (Total de 247 min), 6 leituras, 2 testes
Video28 videos
Functions as Arguments8min
Polymorphic Types and Functions as Arguments7min
Anonymous Functions9min
Unnecessary Function Wrapping5min
Map and Filter8min
Generalizing Prior Topics9min
Lexical Scope7min
Lexical Scope and Higher-Order Functions7min
Why Lexical Scope11min
Closures and Recomputation6min
Fold and More Closures11min
Closure Idiom: Combining Functions9min
Closure Idiom: Currying10min
Partial Application9min
Currying Wrapup6min
Mutable References8min
Closure Idiom: Callbacks8min
Standard-Library Documentation7min
Optional: Abstract Data Types With Closures11min
Optional: Closure Idioms Without Closures4min
Optional: Java Without Closures12min
Optional: C Without Closures10min
Course-Motivation Introduction5min
Why Study General PL Concepts?10min
Are All PLs the Same?6min
Why Functional Languages?11min
Why ML, Racket, and Ruby?12min
Reading6 leituras
Section 3 Welcome Message5min
Section 3 Reading Notesmin
Code Files for All Section 3 Videosmin
Homework 3 Detailed Guidelines for Peer Assessmentmin
Hints and Gotchas for Section 310min
Extra Practice Problemsmin
4.9

Melhores avaliações

por VAMar 5th 2018

Very interesting course! Superb teaching and homework assignments. If you are interested in functional programming or in programming languages in general, this should be one of the must take MOOCs

por 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!

Instrutores

Dan Grossman

Professor
Computer Science & Engineering

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

Perguntas Frequentes – FAQ

  • Once you enroll for a Certificate, you’ll have access to all videos, quizzes, and programming assignments (if applicable). Peer review assignments can only be submitted and reviewed once your session has begun. If you choose to explore the course without purchasing, you may not be able to access certain assignments.

  • When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile. If you only want to read and view the course content, you can audit the course for free.

Mais dúvidas? Visite o Central de Ajuda ao Aprendiz.