My experience with the Programming Languages course, Part A
Programming Languages Course:
This course is offered by the University of Washington via Coursera, and it’s taught by Dan Grossman who is a Computer Science & Engineering Professor.
What is Coursera?
Coursera was founded by Daphne Koller and Andrew Ng in 2012 with a vision of providing life-transforming learning experiences to learners around the world. Today, Coursera is a global online learning platform that offers anyone, anywhere, access to online courses and degrees from leading universities and companies. They also received B Corp certification in 2021.
Coursera courses consist of pre-recorded video lectures that you can watch on a weekly schedule or when it’s convenient for you. They also have student discussion forums, homework/assignments, and online quizzes or exams.
Coursera has 82 million learners, 100+ Fortune 500 companies, and more than 6,000 campuses, businesses, and governments come to Coursera to access world-class learning — anytime, anywhere.
About The Course:
This course is divided into three Coursera courses, part A, part B, and part C. The course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. In part A, they used the standard ML language to teach the concepts, they also used racket and ruby in the next parts, but the main goal wasn't really to learn a specific language, yet, the main goal was to know how to use any language 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.
The course assumes some prior experience with programming, it will be described in more detail in the first module.
How to pass?
You need to pass all graded assignments by taking more than 80% on every single assignment (homework, exam …).
Self-Experience:
First and more important thing, as it mentioned in the -about course- section, you need to have some programming background to have this course, it’s about intermediate level. It wasn’t easy for me, but it was rewarding.
One of the good thing in my opinion is the teacher they chose, Dan Grossman, he did a really impressive work in this course, Dan combined knowledge, teaching and explaining this knowledge which is magnificent. He knows exactly what are the pros/cons of various programming languages and you will get to learn them too!
Choosing standard Ml was a good thing, I get to learn it concepts, such as: tail recursion, case statements, signatures, pattern matching… Pattern matching and recursion were the main idea, it was a little bit weird and hard in the beginning, but after time you will get used to it.
The notes pdf they were offering every week was an amazing thing, it was very helpful to me, and i think it will be helpful for anyone who wants to take this course.
I think the course balances well between theory and practice. It teaches you how to make use of the strongest sides of a language and design correct and elegant programs. You will learn to think more farther than purely in terms of language syntax. It may help if you try to “start fresh” and not comparing what you already know
Something I don't like about this course is that the forums are completely dead. I don’t think there’s any more support since the course is more than 6 years old and it feels like it’s been abandoned by the community and the lecturer. So you’re totally on your own if you get stuck.
Do i recommend it?
I highly recommend this course, if you are serious about programming, you must take this course! It will without doubt, makes you a better “programmer”.
I can’t wait to find out what part B and C have to offer!