Back to Programming Languages, Part A
University of Washington

Programming Languages, Part A

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.

Status: Software Installation
Status: Computational Thinking
IntermediateCourse30 hours

Featured reviews

SS

5.0Reviewed Jan 3, 2017

Instant favourite programming course. Great instructor and material, fun assignments, mind-bendy recursion, cool concepts you didn't know you wanted to know about. Learned a lot.

SZ

5.0Reviewed Apr 2, 2017

Great course! One of the few courses I actually finished on Coursera. Though I think it could be made longer to have less lectures/homework, but that's probably a general issue with Coursera for me.

AP

5.0Reviewed Nov 22, 2023

This is one of the best courses I've taken - not only in terms of structure and content but also in terms of quizzes, programming assignments and exams (practice and final).

AS

5.0Reviewed Dec 28, 2019

Instructor's strive for perfection really shows. The quality of content is top-notch; both for the video explanations and the pdfs. Definitely going to check out the other two parts as well.

DF

5.0Reviewed Jan 28, 2023

Great course! I learned the ML programming language and functional programming in general. I recommend it to everyone interested in programming. Assignments are interesting and fun.

JH

5.0Reviewed Dec 26, 2016

I took this course about 10 years off the college, and it was excellent refresher on the topics I don't use on a daily basis. Absolutely great lecturer, great videos and study materials!

RG

5.0Reviewed Jun 19, 2017

Awesome course. A wonderful introduction to statically typed functional programming with a simple and concise language. After I took this course, Scala started to make more sense.

JB

5.0Reviewed Oct 9, 2016

Fantastic course providing not only a great introduction to Functional Programming fundamentals, but also leading on to how languages relate to one another. Highly recommended.

HM

5.0Reviewed Nov 16, 2016

Much much better than I ever expected even though I had already seen how good the instructor's other video lessons are -- definitely worth the time to take the course and do the home work.

SS

5.0Reviewed Dec 3, 2017

Exceptionally brilliant course. The instructor, Dr. Dan Grossman became one of my favorite teachers of my life. The contents are solid, illuminating at the same time challenging.

HC

5.0Reviewed Jun 6, 2020

Dan is a great teacher and the course material is very well organized and informative. Highly recommend this course to people who'd like to understand the principles of programming language.

CH

5.0Reviewed Dec 21, 2018

Best ever classic courses! Never learnt so much from any programming courses! Expect to see materials can be published as book even textbook! Looking forward further courses from Dan!

All reviews

Showing: 20 of 556

Yijie Qiu
5.0
Reviewed Aug 6, 2017
Stanislav Kholmanskikh
5.0
Reviewed Mar 24, 2017
Allison Cooper
5.0
Reviewed Mar 3, 2018
Vaidas Armonas
5.0
Reviewed Mar 5, 2018
Jack Orz
5.0
Reviewed Apr 23, 2020
Maria Knorps
5.0
Reviewed Jun 17, 2017
Ali Kuscu
4.0
Reviewed Dec 29, 2019
Yiang Zheng
5.0
Reviewed Dec 2, 2016
Roman Hofmann
3.0
Reviewed May 24, 2021
Andrei Syromiatnikov
1.0
Reviewed Sep 8, 2022
Srikanth Cherla
5.0
Reviewed Feb 9, 2020
Mike Southron
5.0
Reviewed Aug 12, 2016
Deleted Account
1.0
Reviewed Jan 14, 2021
Huong Minh Luu
5.0
Reviewed Feb 15, 2020
Dina Muktubayeva
5.0
Reviewed Feb 13, 2021
nikofeyn
5.0
Reviewed Aug 11, 2018
Michael Wesolowski
5.0
Reviewed Jul 2, 2018
Youlian Simidjiyski
5.0
Reviewed Nov 13, 2016
Saatchi Bhalla
5.0
Reviewed Oct 7, 2016
Eric Tran
5.0
Reviewed Jan 26, 2019