このコースについて
4.9
833 ratings
243 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

100%オンラインコース

自分のスケジュールですぐに学習を始めてください。
Calendar

Flexible deadlines

Reset deadlines in accordance to your schedule.
Intermediate Level

中級レベル

Clock

推奨:8-16 hours/week

約34時間で修了
Comment Dots

English

字幕:English

習得するスキル

Functional ProgrammingRecursionPattern MatchingHigher-Order Function
Globe

100%オンラインコース

自分のスケジュールですぐに学習を始めてください。
Calendar

Flexible deadlines

Reset deadlines in accordance to your schedule.
Intermediate Level

中級レベル

Clock

推奨:8-16 hours/week

約34時間で修了
Comment Dots

English

字幕:English

シラバス - 本コースの学習内容

1

セクション
Clock
2時間で修了

Introduction and Course-Wide Information (Start Here)

Welcome! Start here! Learn about this course and how it's organized....
Reading
7本の動画(合計56分), 5 readings
Video7件のビデオ
Optional: Who I Am / Acknowledgments6 分
What the Course is About / Initial Motivation8 分
Recommended Background9 分
Why Part A, Part B, Part C5 分
Grading Policy9 分
Optional: Very High-Level Outline7 分
Reading5件の学習用教材
Start here!5 分
About the Course10 分
Some More Perspective on Recommended Background7 分
Why are there 3 courses (Part A, Part B, Part C)?5 分
Grading Policy Details10 分
Clock
2時間で修了

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本の動画(合計9分), 3 readings, 2 quizzes
Video4件のビデオ
Emacs installation2 分
SML installation1 分
SML Mode installation3 分
Reading3件の学習用教材
Part A Software Installation and Use: SML and Emacs
Why Emacs? (Optional)5 分
Homework 0 Detailed Peer-Assessment Instructions

2

セクション
Clock
6時間で修了

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本の動画(合計150分), 6 readings, 2 quizzes
Video17件のビデオ
Rules for Expressions9 分
The REPL and Errors12 分
Shadowing6 分
Functions Informally7 分
Functions Formally8 分
Pairs and Other Tuples9 分
Introducing Lists10 分
List Functions11 分
Let Expressions7 分
Nested Functions7 分
Let and Efficiency10 分
Options9 分
Booleans and Comparison Operations7 分
Benefits of No Mutation7 分
Optional: Java Mutation4 分
Pieces of a Language6 分
Reading6件の学習用教材
Section 1 Welcome Message7 分
Section 1 Reading Notes
Code Files for All Section 1 Videos
Homework 1 Detailed Guidelines for Peer Assessment
Hints and Gotchas for Homework 15 分
Extra Practice Problems

3

セクション
Clock
7時間で修了

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本の動画(合計178分), 6 readings, 2 quizzes
Video22件のビデオ
Records8 分
Tuples as Syntactic Sugar6 分
Datatype Bindings8 分
Case Expressions10 分
Useful Datatypes11 分
Pattern Matching So Far4 分
Another Expression Example8 分
Type Synonyms6 分
Lists and Options are Datatypes9 分
Polymorphic Datatypes8 分
Each of Pattern Matching / Truth About Functions14 分
A Little Type Inference6 分
Polymorphic and Equality Types8 分
Nested Patterns10 分
More Nested Patterns10 分
Nested Patterns Precisely6 分
Optional: Function Patterns3 分
Exceptions7 分
Tail Recursion9 分
Accumulators for Tail Recursion7 分
Perspective on Tail Recursion5 分
Reading6件の学習用教材
Section 2 Welcome Message5 分
Section 2 Reading Notes
Code Files for All Section 2 Videos
Homework 2 Detailed Guidelines for Peer Assessment
Hints and Gotchas for Homework 27 分
Extra Practice Problems

4

セクション
Clock
8時間で修了

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本の動画(合計247分), 6 readings, 2 quizzes
Video28件のビデオ
Functions as Arguments8 分
Polymorphic Types and Functions as Arguments7 分
Anonymous Functions9 分
Unnecessary Function Wrapping5 分
Map and Filter8 分
Generalizing Prior Topics9 分
Lexical Scope7 分
Lexical Scope and Higher-Order Functions7 分
Why Lexical Scope11 分
Closures and Recomputation6 分
Fold and More Closures11 分
Closure Idiom: Combining Functions9 分
Closure Idiom: Currying10 分
Partial Application9 分
Currying Wrapup6 分
Mutable References8 分
Closure Idiom: Callbacks8 分
Standard-Library Documentation7 分
Optional: Abstract Data Types With Closures11 分
Optional: Closure Idioms Without Closures4 分
Optional: Java Without Closures12 分
Optional: C Without Closures10 分
Course-Motivation Introduction5 分
Why Study General PL Concepts?10 分
Are All PLs the Same?6 分
Why Functional Languages?11 分
Why ML, Racket, and Ruby?12 分
Reading6件の学習用教材
Section 3 Welcome Message5 分
Section 3 Reading Notes
Code Files for All Section 3 Videos
Homework 3 Detailed Guidelines for Peer Assessment
Hints and Gotchas for Section 310 分
Extra Practice Problems
4.9

人気のレビュー

by 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

by 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

Professor
Computer Science & Engineering

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

よくある質問

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

さらに質問がある場合は、受講者向けヘルプセンターにアクセスしてください。