Chevron Left
Back to Programming Languages, Part A

Programming Languages, Part A, University of Washington

889 ratings
257 reviews

About this Course

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

Top reviews


Mar 22, 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!


Jun 17, 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.

Filter by:

252 Reviews

By 纯白棒球帽

Nov 08, 2018

When finding programming related courses on the Internet, I knew this lesson in “”, where someone give this course a high score evaluation. To satisfy my curiosity I tried a few lessons. However, to my surprise, it attracts me deeply. I told myself it was that courses which I have been looking for. I do believe it`s my great honor to participate and I will try my best to seize the opportunity and finish it perfectly.

By Arent Stienstra

Nov 06, 2018

This is one of the best courses I've taken so far. The assignments are difficult and interesting and more importantly, the assignment teaches the core of programming.

By Olegs Kurovs

Nov 05, 2018

Very valuable and naturally interesting

By jzy

Nov 04, 2018


By Jing Chen

Nov 03, 2018

I think it is very good as a start up for programming. full of useful thoughts and ideas, and instructor is explaining everything in a clear way. very recommended.

By Kurt

Oct 14, 2018

very nice course, content explained clearly

By Erik Davtyan

Oct 04, 2018

A great course which shows functional concepts in depth.

By vishnu r

Sep 23, 2018

the class was simply superb

By Akash Batchu Prithvi

Sep 23, 2018

The professor's enthusiasm for programming languages rubbed off on me. Can't wait to start Part B

By Jai Bhagat

Sep 22, 2018

Very challenging but very rewarding