subject

Coursera: Programming Languages, Part A

 with  Dan Grossman

HIGHEST RATED MOOC

This course is a Top 50 MOOC of All Time based on thousands of reviews written by Class Central users. It's guaranteed to be good!

Check out the rest of the Top 50 here.

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.

Syllabus

Introduction and Course-Wide Information (Start Here)
Welcome! Start here! Learn about this course and how it's organized.

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.

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.

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.

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.

Section 4 and Part-A Exam
We finish Part A of the course with this module. As explained in more detail in the welcome message, we discuss type inference, ML's module system, and the fundamental idea in computing of two computations being equivalent. There is no programming assignment -- instead there is an exam covering all of Part A. Finally, there is a brief wrap-up video for the end of Part A that also looks ahead to Part B and Part C -- we have put it after the exam, so don't overlook it.

21 Student
reviews
Cost Free Online Course (Audit)
Pace Upcoming
Provider Coursera
Language English
Certificates Paid Certificate Available
Hours 8-16 hours a week
Calendar 5 weeks long
Sign up for free? Learn how

Disclosure: To support our site, Class Central may be compensated by some course providers.

+ Add to My Courses
FAQ View All
What are MOOCs?
MOOCs stand for Massive Open Online Courses. These are free online courses from universities around the world (eg. Stanford Harvard MIT) offered to anyone with an internet connection.
How do I register?
To register for a course, click on "Go to Class" button on the course page. This will take you to the providers website where you can register for the course.
How do these MOOCs or free online courses work?
MOOCs are designed for an online audience, teaching primarily through short (5-20 min.) pre recorded video lectures, that you watch on weekly schedule when convenient for you.  They also have student discussion forums, homework/assignments, and online quizzes or exams.

21 reviews for Coursera's Programming Languages, Part A

Write a review
4 out of 4 people found the following review useful
3 years ago
Mayank Jain completed this course, spending 15 hours a week on it and found the course difficulty to be very hard.
Wow! This was the hardest course I've ever taken in my entire Life! The course is really demanding (Specially if you are trying to solve the bonus questions!) But it was so worth it! Dan Grossman is one THE best teachers in the world hands down! It is one thing to know stuff and another to teach it well. Dan is both! N Read More
Wow! This was the hardest course I've ever taken in my entire Life! The course is really demanding (Specially if you are trying to solve the bonus questions!) But it was so worth it! Dan Grossman is one THE best teachers in the world hands down! It is one thing to know stuff and another to teach it well. Dan is both! Not only his knowledge is excellent he has no bias on what is best. He knows exactly what are the pros/cons of various programming languages and this course teaches you that very well.

You get to build a Type Checker in ML, you get to make your own programming language in Racket and you get to finish an uncompleted Tetris game in Ruby. All of that in one course.

Why 3 different languages?

Coz each of them covers different aspects of programming paradigms.

I highly Highly HIGHLY recommend you take this course and just give your everything in it. If you can, do try solving the bonus questions, they are really tough, specially the bonus type checker question took me whole 2-3 days to figure out what am I suppose to do. But when you are done you get that AHA moment!

An in all, this is a great great course!

Enough said!

Go sign up! :D
Was this review helpful to you? YES | NO
1 out of 1 people found the following review useful
3 years ago
Bruno Lehouque completed this course, spending 10 hours a week on it and found the course difficulty to be hard.
This is definitely one of the best courses available on Coursera. Very challenging and time consuming (not for beginners), but it will without doubt make you a better programmer. The course uses SML, Racket an Ruby to teach you about concepts that can be applied to any programming languages. So, even if you don't know Read More
This is definitely one of the best courses available on Coursera. Very challenging and time consuming (not for beginners), but it will without doubt make you a better programmer.

The course uses SML, Racket an Ruby to teach you about concepts that can be applied to any programming languages. So, even if you don't know these 3 languages, the knowledge you acquire can easily be applied to any of your favorite languages.

Dan is an amazing teacher. If you're a serious programmer, you MUST take this course!
Was this review helpful to you? YES | NO
2 out of 3 people found the following review useful
3 years ago
profile picture
Anonymous completed this course.
'The' course to learn "programming".

If you want a mind bending experience, just take this course!

You get to write a Type Checker, A small interpreter, and a tetris game, using SML, Racket and Ruby respectively in 10 weeks. Moreover, Dan is an amazing teacher!
Was this review helpful to you? YES | NO
5 out of 5 people found the following review useful
3 years ago
Chema Cortés completed this course, spending 6 hours a week on it and found the course difficulty to be hard.
This is a must course for all programmers. You must pass this course if you want to be called "programmer".
Was this review helpful to you? YES | NO
2 out of 2 people found the following review useful
3 years ago
profile picture
Anonymous completed this course.
Highly recommended for everyone interested in programming. Relevant not only for students, but also for experienced software developers.

A lot of things to learn here.
Was this review helpful to you? YES | NO
3 years ago
Sky Shift completed this course.
I struggled through and got 85%, and took forever to do it. I love the way he lays it out, it's a great framework for understanding programming languages altogether, just like it says on the tin.
Was this review helpful to you? YES | NO
3 years ago
Jake Russo completed this course, spending 7 hours a week on it and found the course difficulty to be medium.
This course opened my mind to many of the different paradigms of programming and did so with comprehensive lectures, an incredible instructor, and useful/highly-illustrative assignments.
Was this review helpful to you? YES | NO
3 months ago
profile picture
Anonymous completed this course.
This was one of the best courses I have taken. I am extremely happy with it. It gives both usage and formalisation of basic concepts of statically typed functional programming.
Was this review helpful to you? YES | NO
2 years ago
Bugmenot completed this course, spending 12 hours a week on it and found the course difficulty to be hard.
Loved this course, don't let the self-deprecating title fool you - it takes effort to complete. Be warned: You may become dissatisfied with popular programming languages.
Was this review helpful to you? YES | NO
6 months ago
profile picture
Anonymous completed this course.
I was skeptical due to choice of languages used to teach in this course but I'm glad I took this course. This is one of the best course for making you a better developer
Was this review helpful to you? YES | NO
3 years ago
Artem Grigorev completed this course, spending 12 hours a week on it and found the course difficulty to be medium.
Was this review helpful to you? YES | NO
3 years ago
profile picture
Maresu Andrei Razvan completed this course, spending 4 hours a week on it and found the course difficulty to be hard.
Was this review helpful to you? YES | NO
3 years ago
Robson Roberto Souza Peixoto completed this course, spending 14 hours a week on it and found the course difficulty to be hard.
Was this review helpful to you? YES | NO
3 years ago
profile picture
Sam Backus partially completed this course, spending 8 hours a week on it and found the course difficulty to be hard.
Was this review helpful to you? YES | NO
7 months ago
profile picture
Joseph Ramaswami completed this course.
Was this review helpful to you? YES | NO
Was this review helpful to you? YES | NO
a year ago
Ignat Petrenko completed this course.
Was this review helpful to you? YES | NO
2 years ago
Mark Henry Butler completed this course.
Was this review helpful to you? YES | NO
2 years ago
profile picture
Kuronosuke completed this course.
Was this review helpful to you? YES | NO
2 years ago
Gregory Deangelis completed this course.
Was this review helpful to you? YES | NO
2 years ago
Ilya Rudyak completed this course.
Was this review helpful to you? YES | NO

Class Central

Get personalized course recommendations, track subjects and courses with reminders, and more.

Sign up for free