課程信息
4.9
856 ratings
247 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

可靈活調整截止日期

根據您的日程表重置截止日期。
Intermediate Level

中級

Clock

建議:8-16 hours/week

完成時間大約為34 小時
Comment Dots

English

字幕:English

您將獲得的技能

RecursionHigher-Order FunctionPattern MatchingFunctional Programming
Globe

100% 在線課程

立即開始,按照自己的計劃學習。
Calendar

可靈活調整截止日期

根據您的日程表重置截止日期。
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 個閱讀材料
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 個閱讀材料, 2 個測驗
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 個閱讀材料, 2 個測驗
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 個閱讀材料, 2 個測驗
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 個閱讀材料, 2 個測驗
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

熱門審閱

創建者 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!

創建者 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.

講師

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.

還有其他問題嗎?請訪問 學生幫助中心