Save for later

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.

Get Details and Enroll Now

OpenCourser is an affiliate partner of Coursera and may earn a commission when you buy through our links.

Get a Reminder

Send to:
Rating 4.9 based on 402 ratings
Length 6 weeks
Effort 8-16 hours/week
Starts Apr 12 (5 days ago)
Cost $39
From University of Washington via Coursera
Instructor Dan Grossman
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Software Development Mobile And Web Development

Get a Reminder

Send to:

Similar Courses

What people are saying

introduction to functional programming

Amazing Awesome introduction to functional programming.

I have learned many knowledge about functional programming Great course... helps with building fundamentals of FP Great course with deep information on functional programming A very good introduction to functional programming.

The course gives an interesting overview of Standard ML and introduction to functional programming.

It's a very thorough introduction to functional programming and language design.

An interesting introduction to functional programming.

Looking forward to part B and C. Fantastic course providing not only a great introduction to Functional Programming fundamentals, but also leading on to how languages relate to one another.

The best introduction to functional programming I've seen.

Excellent overview of SML and great introduction to functional programming concepts.

It give us a good, full and profound introduction to functional programming.

Solid introduction to functional programming and programming languages concepts.

good introduction to functional programming .

i thoroughly enjoyed the course, the instructor was very good and made the whole experience fun Great introduction to functional programming!I'm a somewhat experienced developer (10 years of work experience) and my interest in functional programing started with Scala development using Spark.

Great introduction to functional programming, especially for folks with an OOP background.

I just LOVE this course It is such a great course that offered in Mooc platform A fascinating and brilliantly put together course, but highly demanding.A little more guidance on some of the challenging homework would have been welcomed, but in terms of the lecture quality, course structure, and materials provided, this is a superb introduction to Functional Programming and a great theoretical guide to programming meta-concepts in general.

Read more

highly recommend

Highly recommended for everyone interested in programming.

I would highly recommend it if you are serious about a career in software engineering.

Highly recommend for anyone who hasn't made any study of programming languages before, whether you are a student or professional.

It was quite some exciting moments of (re)discovery, finding out about ideas that translate from one language to another.I highly recommend this course to anyone who aspire to become better programmers.

Would highly recommend!

highly recommend to anyone who'd like a deeper understanding of programming.

Highly recommended.

I would highly recommend this course to anyone wishing to broaden their programming skill set.

Highly recommend if you are interested in foundations of functional programming or programming languages generally.

Highly recommend this course to people who'd like to understand the principles of programming language.

Before commencing I highly recommend you can program in one of Java/C#/C++/C (JS/Python alone are not enough imo) and understand basics of data structures up to using recursion on binary trees (no need for graphs and beyond).

If you have that down, I highly recommend enrolling.

Read more

looking forward

Looking forward for Part B!

Looking forward to building off what was taught by learning F# and contributing to some open source projects.

Looking forward further courses from Dan!

I'm looking forward to taking parts B and C. Thank you for a fun and enjoyable class.

Looking forward to those too.

I'm definitely looking forward to parts B and C!

Really expanded the way I think about programming and I'm looking forward to parts B and C. A challenging rewarding course, a must-have for aspiring programmers.

I'm looking forward to part B!

I am looking forward to parts B and C!

Read more

ever taken

This was the hardest course I've ever taken in my entire Life!

Easily one of the best courses I have ever taken.

Best programming course I have ever taken in person or online.

Maybe the best course I've ever taken in my whole life.

One of the best course I have ever taken.

This is one of the best courses that I have ever taken before!

Probably the best MOOC I've ever taken Muy buena información; nivel alto.

I feel compelled to say that this is one of the best courses I have ever taken and Dan Grossman is the best instructor I have ever had.

Read more

learnt a lot

Great course, hoping the next one will top it Exceptional experience, learnt a lot!

I learnt a lot!

A brilliant first part to this 3 part programming language course.Part A focuses on teaching Functional Programming concepts using ML, a programming language that is becoming more relevant today with the popularity increase in the Haskell and F# languages, both based on ML.Dan is excellent on the videos, explaining the core concepts extremely well, while also doing a great job with the live coding (a really hard thing to do, even for a software engineer with 10 years of experience).Everyone on the discussion forums, the TA's, the Admins and Dan, are really great, and compliment the video lectures well.Overall really happy with the course and can't wait to get started on Parts B and C. I learnt a lot from this course.

Everything is free to access so really learnt a lot from the homework and the exam.

Read more

better programmer

Very challenging and time consuming (not for beginners), but it will without doubt make you a better programmer.

It provided me with the mental framework to be able to learn new languages quickly and be a better programmer overall.

Also got a great motivation :) And, I hope I became a better programmer than I was :) I will be glad to continue my studies in Part B While the trend has been to spread out course content into specializations, these courses, the Programming Languages series, actually contain enough content to merit being a course.

But the resources are great and there's plenty of cool activities, this definitely made me a better programmer and I tried to make some things with haskell after I finishing this, and this course definitely made things easier.

You'll learn a lot about functional programming and learn how to apply those concepts to make you a better programmer.

A slightly more practical benefit is that this course makes one a better programmer, regardless of the choice of programming language.

Read more

standard ml

This course focuses mainly on Standard ML, which provides a great perspective for a PL learner.

Something I find most interesting is a comparison between Standard ML and other languages like Java and C. Very rewarding, worth taking.

I found an online version of standard ML but it isn't suited to doing the homeworks.

I found Standard ML really enjoyable to work with and appreciated the focus of the course material.

This material focus on the Standard ML language (which you probably won't use for any practical purpose later) but is a very good foundation to understand other languages in the ML family, like F# and it has influenced Haskel and Elm (check the Wiki for "ML (programming language)").

Read more

professor grossman

In addition, Professor Grossman is a precise and thorough instructor and it's clear that he is passionate about the material.

Professor Grossman's lectures are engaging and you can tell he's really excited about the material.

Even though I'm a Computer Science student at a University already, the rigor in this course surprised me, and comparing it with the course webpage on UWashington's offering (also by Professor Grossman) makes me think this MOOC was not watered down from the CS major, real-life version, as promised.

Huge points go to Professor Grossman again for putting this course together, and all the course contributors as well.

Professor Grossman does an outstanding job explaining things from basic principles and building up to larger concepts.

Read more


An overview of related careers and their average salaries in the US. Bars indicate income percentile.

Programming Coordinator 1 $54k

Programming Acquisitions $61k

CNC Programming $70k

Programming advisor $72k

Network Programming $78k

NC Programming $79k

functional testing $87k

DBA - Programming $103k

Gameplay Programming $120k

IT and Programming Specialist $122k

Programming Producer $129k

Functional Controller $146k

Write a review

Your opinion matters. Tell us what you think.

Rating 4.9 based on 402 ratings
Length 6 weeks
Effort 8-16 hours/week
Starts Apr 12 (5 days ago)
Cost $39
From University of Washington via Coursera
Instructor Dan Grossman
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Software Development Mobile And Web Development

Similar Courses

Sorted by relevance

Like this course?

Here's what to do next:

  • Save this course for later
  • Get more details from the course provider
  • Enroll in this course
Enroll Now