Finishing Programming Languages Course

Amen Nafeh
2 min readJan 13, 2022

--

Part B Image

About The Course:

I introduced part A of the course and talked about my experience here. This post is to discuss my case facing part B and part C, they are the continuation of part A.

Part B is a 3-part course -which is shorter than part A-, you should complete part A first because Part B “dives right in” and refers often to material from Part A. They are using Racket language for this part.

Part B is definitely harder than Part A, it goes into a lot more functional programming idioms with Racket, and also reinforces old ideas. The second programming assignment is the heart of this Part, it is about implementing a small programming language yourself -writing an interpreter- which will take a few days, you’ll understand how closures work in the practice which gives a completely new view on the theoretical content so far.

I will say that Racket is mind-bending, and it will take you deep into the functional programming jungle -not anybody can make it out-. If you liked Part A, you definitely need to continue your journey here.

Finally, wrapped it all up with Ruby, OOP, and other great topics. All the homework, especially the Tetris one were really fun and beneficial. A great finale to parts B and C with a pretty challenging final exam.

Courses on programming languages usually focus on one language where you learn the different concepts for that one language but don’t understand why the language chose those concepts and what the alternatives are. By covering three languages, this course integrates the concepts and their alternatives to give you a solid understanding of how languages work.

This course has been a brilliant introduction to functional programming and the underlying philosophies underpinning programming languages in general. It has the same great teaching style but now talks about OOP and contrasts it with functional programming.

The teacher -Dan- is very passionate and really wants to teach programming ‘idioms’. The syntax of a language or the structure for that matter is not as relevant as the underlying idea. With this course, you will learn to recognize the underlying patterns of programming. These patterns will always be useful, no matter the language or environment.

I learned a lot from these courses. It’s not about ML, Racket, or Ruby, but the way I think in programming, and I think you will too if you give it a shot.

Part C ends the story, and if you liked Part A and Part B, there is no reason to not complete your journey with this course.

--

--

No responses yet