University of Washington - Programming Languages, Part A
- Offered byCoursera
Programming Languages, Part A at Coursera Overview
Duration | 30 hours |
Total fee | Free |
Mode of learning | Online |
Difficulty level | Intermediate |
Official Website | Explore Free Course |
Credential | Certificate |
Programming Languages, Part A at Coursera Highlights
- Shareable Certificate Earn a Certificate upon completion
- 100% online Start instantly and learn at your own schedule.
- Flexible deadlines Reset deadlines in accordance to your schedule.
- Intermediate Level
- Approx. 30 hours to complete
- English Subtitles: Arabic, French, Portuguese (European), Italian, Vietnamese, German, Russian, English, Spanish
Programming Languages, Part A at Coursera Course details
- 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.
Programming Languages, Part A at Coursera Curriculum
Introduction and Course-Wide Information (Start Here)
Welcome! (And Some Course Mechanics)
Optional: Who I Am / Acknowledgments
What the Course is About / Initial Motivation
Recommended Background
Why Part A, Part B, Part C
Grading Policy
Optional: Very High-Level Outline
Start here!
About the Course
Some More Perspective on Recommended Background
Why are there 3 courses (Part A, Part B, Part C)?
Grading Policy Details
Software Installation Introduction
Emacs installation
SML installation
SML Mode installation
Part A Software Installation and Use: SML and Emacs
Why Emacs? (Optional)
Homework 0 Detailed Peer-Assessment Instructions
Section 1 and Homework 1
ML Variable Bindings and Expressions
Rules for Expressions
The REPL and Errors
Shadowing
Functions Informally
Functions Formally
Pairs and Other Tuples
Introducing Lists
List Functions
Let Expressions
Nested Functions
Let and Efficiency
Options
Booleans and Comparison Operations
Benefits of No Mutation
Optional: Java Mutation
Pieces of a Language
Section 1 Welcome Message
Section 1 Reading Notes
Code Files for All Section 1 Videos
Homework 1 Detailed Guidelines for Peer Assessment
Hints and Gotchas for Homework 1
Extra Practice Problems
Section 2 and Homework 2
Building Compound Types
Records
Tuples as Syntactic Sugar
Datatype Bindings
Case Expressions
Useful Datatypes
Pattern Matching So Far
Another Expression Example
Type Synonyms
Lists and Options are Datatypes
Polymorphic Datatypes
Each of Pattern Matching / Truth About Functions
A Little Type Inference
Polymorphic and Equality Types
Nested Patterns
More Nested Patterns
Nested Patterns Precisely
Optional: Function Patterns
Exceptions
Tail Recursion
Accumulators for Tail Recursion
Perspective on Tail Recursion
Section 2 Welcome Message
Section 2 Reading Notes
Code Files for All Section 2 Videos
Homework 2 Detailed Guidelines for Peer Assessment
Hints and Gotchas for Homework 2
Extra Practice Problems
Section 3 and Homework 3 -- and Course Motivation
Introduction to First-Class Functions
Functions as Arguments
Polymorphic Types and Functions as Arguments
Anonymous Functions
Unnecessary Function Wrapping
Map and Filter
Generalizing Prior Topics
Lexical Scope
Lexical Scope and Higher-Order Functions
Why Lexical Scope
Closures and Recomputation
Fold and More Closures
Closure Idiom: Combining Functions
Closure Idiom: Currying
Partial Application
Currying Wrapup
Mutable References
Closure Idiom: Callbacks
Standard-Library Documentation
Optional: Abstract Data Types With Closures
Optional: Closure Idioms Without Closures
Optional: Java Without Closures
Optional: C Without Closures
Course-Motivation Introduction
Why Study General PL Concepts?
Are All PLs the Same?
Why Functional Languages?
Why ML, Racket, and Ruby?
Section 3 Welcome Message
Section 3 Reading Notes
Code Files for All Section 3 Videos
Homework 3 Detailed Guidelines for Peer Assessment
Hints and Gotchas for Section 3
Extra Practice Problems
Section 4 and Part-A Exam
Section Introduction
What is Type Inference
ML Type Inference
Type Inference Examples
Polymorphic Examples
Optional: The Value Restriction and Other Type-Inference Challenges
Mutual Recursion
Modules for Namespace Management
Signatures and Hiding Things
A Module Example
Signatures for Our Example
Signature Matching
An Equivalent Structure
Another Equivalent Structure
Different Modules Define Different Types
Equivalent Functions
Standard Equivalences
Equivalence Versus Performance
Part A Wrap-Up & Parts B&C Preview
Section 4 Welcome Message
Section 4 Reading Notes
Code Files for All Section 4 Videos
Nothing (yet) (explanation)
Information About the Exam (Required Reading)
Practice Exam for Part A
Exam for Part A