Online courses recommended by Hacker News users. [about]

Programming Languages, Part A

Coursera · University of Washington · 57 HN points · 43 HN citations

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

View on Coursera
The vast majority of the courses listed here on HN.Academy are available from their providers for free. Many courses offer a completion certification for a fee. A few courses and specializations require an enrollment fee. HN.Academy receives a referral commission when you visit course pages through links on this site and then purchase courses and completion certificates. If you decide to purchase a certificate or course the commission does not increase the cost of the course and helps support the continued existence of HN.Academy which is much appreciated.

Hacker News Comments about Programming Languages, Part A

All the comments and stories posted to Hacker News that reference this course.
Sep 27, 2018 nikofeyn on Stop writing lambda expressions in Python
f# (and also ocaml and sml) have all those and much more. they are much more consistent and principled in their design, which makes things simpler to understand.

for example, in all three languages above, expressions are much easier to understand because they always return a value. this makes code easier to reason about. this is not true in python.

the languages i mentioned do have static typing but they have type inference. so you get the best of both worlds. you do need to type annotate at some points to clarify things, but this isn't a problem as it documents to both the user and compiler.

given your above reasons, you owe it to yourself to learn an ml. there is the programming languages course on coursera by dan grossman, which uses sml in the first part, and the ocaml mooc just started where you still have time to register and complete it.

Aug 23, 2018 tosh submitted Programming Languages (44 points, 14 comments)
I’ve taken this course and it’s excellent, all three parts.

It makes me wish there were a modern standard ML, without laziness, typeclasses or Object Oriented-ness.

Try looking at
I guess the dream died with its creator.
Well, given that OCaml almost doesn't use it's optional Object Oriented-ness, that might be what you're looking for.
> Well, given that OCaml almost doesn't use it's optional Object Oriented-ness, that might be what you're looking for.

so... you use OCaml without modules ?

Well, isn't that just Standard ML?
Would a non-OO style of OCaml be what you want, or if not, what is it missing?
Not knowing any ML myself, what is it about ML that you want to retain?
would Elm do the trick?
For anybody looking for a similar-ish syllabus with different material, Matthew Flatt's introductory programming languages course is available online at [0]. It's in Plait (formerly PLAI-Typed, a smaller dialect of Racket) and was really a great class, in my opinion. (I took this as a junior at the U.)


Took this course when I started moving towards software development and I thought it was great. It has a higher academic level then most introductory courses and its been great for developing intuition about the craft
How much is it? (It seems like there is no way to see without creating an account - yuck)
it’s free. you can pay for each part to get a certificate or just take it for free.
As a (serious) hobbyist, I thought that class was fantastic.
Jul 22, 2018 chw9e on Teach Yourself Computer Science
As a self-taught developer, I used to think that some of the theoretical elements were overhyped. I can build iOS apps that work, and I did just that for the last 2-3 years. However, many of the programs that I wrote have not been as easy to maintain as I would like and some difficult to fix bugs have popped up overtime, both of which are due to a lack of deeper understanding of CS fundamentals. Last year I started interviewing and was ridiculed at one company in particular for a lack of CS knowledge. Afterwords I started exploring a lot of the CS concepts listed in this link and I have since found numerous ways to improve my code quality and have a better understanding of how CS best practices came to be. I also used to think that algorithms and data structures were relatively useless for an iOS developer, and I was able to do the job without them, thus proving my point. However, after gaining a better understanding, it quickly becomes clear that things like view hierarchies are simply trees and understanding ways to traverse these hierarchies can lead to much cleaner code. With the open sourcing of Swift, I also became more interested in understanding the language, but a lot of the language design decisions didn't make sense to me until I gained a better understanding of CS fundamentals. I have found the programming languages course on Coursera [1] to be particularly useful, and have also greatly enjoyed the book Designing Data Intensive Applications [2]. There's also a great video from this year's WWDC that really inspires algorithm study and use in everyday applications [3].




Jul 06, 2018 boombol on Ask HN: What strategies do you use to accelerate your learning as veteran dev?
A very recognizable problem! While I'm definitely still trying to figure this out for myself, here are a few of my thoughts and experiences:

1) books usually trump courses books are much easier to browse through. pick and choose what you need. Do make notes, or in 6-12 months it will be like you had never read it at all. Courses seem nice in that they offer varied learning - a lecturer, assignments, a forum for questions, a shiny certificate at the end.. but you have little control over pacing, and there just aren't enough solid ways to judge beforehand if the course is any good. Trudged through many hours of bad/repetitive content before I understood this :)

2) don't memorise specifics, understand design choices if you haven't done so already, I can really recommend looking into how languages are built - what are the paradigms / design choices. I'll even recommend a MOOC: . A focus on design makes it much easier, at least in my experience, to pick up a new language and become an 'expert' at it; nobody will turn to you for help writing a loop or grokking a few conditionals (I hope). But understanding, let's say, prototypal inheritance in JS and how this differs from other languages, or the effect of having (or lacking) functions as first-class citizens, figuring out what are the language core concepts and what is just syntactic sugar - this let's you reason about languages and problems on a whole different level.

3) if you have the opportunity; coach/teach trying to teach stuff to a few interested souls is a stellar way to force yourself to order your thoughts. Pick something that's right at the edge of your audience's skill level, and explain it in the cleanest, concisest way you can. It's a win-win, in my experience.

4) create something the hardest part about learning a new language is not the language specifics, but learning the ecosystem. What are the tools and libraries you must use or avoid, what is the right dev setup, how do you build/deploy, and in some god-forsaken cases, how do you even version control a project? The only way to really learn this imho is to just start building a small project.

These are only partial solutions; it still takes a lot of time and effort, and I probably haven't come close to maximising efficiency of self-study :). Don't forget to have fun though!

Looking forward to reading more about this.

Apr 04, 2018 nbouscal on Ask HN: What are the best MOOCs you've taken?
Linear Dynamical Systems by Stephen Boyd of Stanford:

Programming Languages by Dan Grossman of University of Washington:

Apr 03, 2018 ojbyrne on Ask HN: What are the best MOOCs you've taken?
Programming Languages, Dan Grossman (Coursera has split it into 3 parts now):
Apr 03, 2018 grdvnl on Ask HN: What are the best MOOCs you've taken?
I took the Programming Languages course on Coursera which is so far the best course for me. It changed the way I learn any new programming language.

I see that they have split the course into 2 parts.

Feb 06, 2018 jasim on Reason ML toolchain
ReasonML is IMO quite ready for production work if you use it for building server-side applications with NodeJS or rich front-end applications with React (ReasonReact).

The target audience for Reason (at least for the moment) are web application developers who want to level up as programmers and want to build elegant, sturdy production systems.

Reason and Elm together are democratizing statically typed functional programming and I believe that the next 10 years are going to see a massive change in the programming language landscape, with the practice of typed FP finally finding adoption in mainstream commercial programming.

The allure of Reason is in its packaging of OCaml to the web browser (which is made possible by BuckleScript - the actual OCaml to JS compiler doing the heavy lifting), its syntax that is familiar to the vast majority of programmers today, and the large ecosystem of bindings, libraries, and documentation that the team has put out.

OCaml is a very pragmatic language; its main pull is its powerful static type system and immutable, functional programming, but the "O" in OCaml stands for "Objective" - it is an implementation of CAML with support for object-oriented programming. But you almost never need objects. OCaml's module system and its idioms allows you to write well-encapsulated code without mutation, and when you actually need to write honest to metal imperative code, you can do it with abandon because OCaml is not a "pure" functional language like Haskell.

The term static type system might put off programmers whose only exposure to types were with Java, C++, C# and similar languages. But this thing is very different. Types in OCaml are more like structs in C; you just say the shape of your data, and you write pure functions that operate on them, and that's pretty much it. The magic happens in how you define the shape of your data. "Making invalid states impossible" is the siren call for statically typed FP languages, and from that flows a lot of natural constraints that can teach us how to structure programs.

The following links illustrate the promise of Typed FP very nicely, do watch it so that you'll have some inkling of the fun you'll have when you start learning ReasonML:

Designing with Types: Making illegal states unrepresentable by Scott Wlaschin.

"Making Impossible States Impossible" by Richard Feldman.

Ideology by Gary Bernhardt.

Effective ML Revisited by Yaron Minsky.

Programming Languages, Part A by Dan Grossman.

Oct 16, 2017 yawaramin on Is Haskell the right language for teaching functional programming principles?
I always recommend for learning FP, the professor has fantastic explanatory videos that are really clear and concise. You'll get the most out of it from doing the exercises, but you can still take away a lot from just watching the videos.
Aug 26, 2017 yawaramin on New implementation of Git in OCaml
IMO, the best functional programming resource out there is this free online course by Prof. Dan Grossman at UW:

He focuses on teaching the syntax, semantics, and idiom of Standard ML, a classic functional programming language that's closely related to OCaml, Haskell, and others. He has a gift for explaining simply and clearly and keeps his lecture videos short (~10min) which helps to absorb their info. Check it out:

Aug 16, 2017 yawaramin on How do I modify a variable in Haskell?
I recommend something similar ... Prof. Dan Grossman's Programming Languages course in Coursera, taught using Standard ML:

He starts by teaching statically typed functional programming with an emphasis on understanding semantics and idioms; then in the following modules he covers Racket and Ruby to compare and contrast dynamically typed homoiconic programming and object-oriented programming.

Mar 24, 2017 yawaramin on 3.5 Years, 500k Lines of Go
Rust is not a functional programming language :-) it has features which are ML-like, and it has first-class functions, but it doesn't really encourage functional idioms like the ML languages do.

If you want a great intro to ML-style statically typed functional programming (without the Haskell-style monads and functors jargon), check out . You'll get a lot out of even just going through the (10 minute each) lecture videos, Prof. Dan Grossman is a great explainer and it's a treat finding out the cool syntax, semantics and idioms of an ML language.

Mar 03, 2017 yawaramin on Ask HN: What's the one thing that let you grow the most as a developer?
Just want to reiterate the comment at and say that learning specifically statically typed functional programming totally changed me as a developer. It opened my mind to the semantics of programming languages and to the design of programs in the small and in the large.

If you're writing C, then you're a developer, no doubt about that. But if you're interested in the 'meaning' of programming and software engineering, then I highly recommend learning functional programming. Here's an excellent course:

Feb 23, 2017 randomname2 submitted Programming Languages, Part A (2 points, 0 comments)
Feb 23, 2017 yawaramin on Tour of F#
It's a great resource for F#. If you also want to get really strong in functional programming fundamentals I highly recommend taking Prof. Dan Grossman's free online course --he's a great teacher and the subject matter is great for all levels of experience.
Feb 20, 2017 yawaramin on Ask HN: What functional programming language should I learn?
Are you a relative newbie at functional programming? Do you have about a month? Then I highly recommend Prof. Dan Grossman's free online course:

He teaches the syntax, semantics, and idioms of ML-style typed functional programming using the Standard ML language as a teaching vehicle. His explanations and course progression are really good. It will open your eyes to FP.

Jan 21, 2017 rashkov on The Awk Programming Language (1988) [pdf]
I can definitely recommend the University of Washington's Coursera on Programming languages. It's available here, and starts every few weeks I think: You'll learn SML (a strongly typed functional language), Racket (in the Lisp-scheme family of languages), and Ruby (to compare the previous languages with object-oriented ones). You'll even write your own language on top of Racket. It is a challenging class but I can say for sure that it has changed the way I think about programming.
Jan 16, 2017 pyoung on Established education providers v new contenders
I am a huge fan of MOOCs. I strongly believe that these courses and this style of education will be one of the greatest by-products of the modern internet. I was a happy and eager participant in the 'early days' (I took ~2 years off of work in 2013-2014 to re-charge, and took a number of online courses for fun), and here are some of my thoughts:

- Completion rate is a very poor metric to measure the 'success' of the concept. I attempted more than a dozen courses, but only completed ~4-5 of them. But that doesn't mean I didn't learn anything. For a number of courses, I got a good way through the material (75%+) but got distracted/side tracked (in one particular case, I was 90% of the way through a very challenging and interesting course[1] when a buddy and I decided to do a last minute trip to Mexico for some camping/surfing. Needless to say, it was hard to find internet access out there). Of the courses I completed, at least two of those I had to attempt more than once. But regardless of the final outcome, I learned a ton. There were a few courses that I didn't find interesting and walked away from, but for the most part, I learned something from every course, regardless of whether I completed it or not.

- By traditional metrics, I wasn't the best student in college. There were a number of reasons for this, but a key reason was the inability to focus during lectures. I just hadn't had enough life experience to learn how to optimize my ability to pay attention in class for multiple hours a day. In high school, the class sizes were small and the teachers were engaging enough to make it easy for me. In college (big public university) there were hundreds of students in each lecture and the professors were more interested in research than they were in lectures (with a few exceptions). I now know that I need the right balance of coffee, adequate sleep, and exercise in order to be able to sit through 4+ hours of very dry lectures, but it took years of hard won experience to find that balance. MOOCs are amazing because they let you optimize the 'lecture' time to best suite your schedule and your 'optimum time of focus'. And the forums were a great, asynchronous way to share knowledge between TA's and students (as opposed to my college experience where you had 1-2 office hours per week, with a dozen+ students competing for attention). Had MOOC-like teaching material (video lectures, forums, online exercises) been available when I was in college, I have no doubt that I would have done way better.

- Considering how expensive traditional college is getting, I think a very cool and plausible alternative would be to allow students to spend a few years doing internships/apprenticeships part time, and doing nano-degrees and MOOCs part time. A company could pay for the classes, as well as a stipend/salary for the internship. I learned programming and statistics on the job (seems like it's getting more rare these days for on the job training) but being able to take a step back and take more traditional classes on Coursera helped fill in some of the knowledge gaps that had been developing over the years. I feel like mixing both practical, in demand skills and theoretical knowledge at the same time could result in a much more engaging and deep understanding of the subject matter as opposed to the traditional way of all theory in college followed by all 'hands-on' in the real world.

Anyways, a bit of rant. But it's been a while since a MOOC post has made it to the front page of HN, and it's a holiday weekend!

[1] Back when I took this, it was just a single course. Looks like they broke it up into 3 parts. Would have been nice to have that option when I took it!

Dec 08, 2016 Lewton on Why Functional Programming Matters (1984) [pdf]
That's one of the reasons I loved the "programming languages" course on coursera[0]. The course went through 3 languages, ML, Racket and Ruby giving 2 weeks to each language. And then spent time contrasting the weaknesses and strengths of the different languages and their paradigms.

[0] (Starts up again on the 9th of January :) )

Jul 13, 2016 chmaynard submitted Dan Grossman's popular Programming Languages MOOC returns soon (4 points, 0 comments)
Jul 09, 2016 dhawalhs on Coursera courses preserved by Archive Team
For those unaware, Coursera shutdown their old platform on Jun 30th [1].

Many of the courses on the old platform are slowly coming back on the new platform. When I built the list [2] of courses on the old platform the course count was 472, now its around 390. Some of the notables that I was excited to see come back are:

Neural Networks for Machine Learning with Geoffrey Hinton [3]

Computer Architecture from Princeton [4]

Programming Languages from UW by Dan Grossman [5]

Introduction to Natural Language Processing by Dragomir Radev [6]

Many of these courses were last offered a couple of years ago. Hopefully more courses form the list [2] start coming back.







Jul 09, 2016 chmaynard submitted Dan Grossman's Coursera Programming Languages class returns in September 2016 (1 points, 0 comments)
Apr 30, 2016 krat0sprakhar on A Path to Programming Language Theory
I've been taking a PLT[0] class in school and while the list above is extremely comprehensive and thorough, I'd argue that you do not need to read up all of it to get a good idea of programming languages.

Without even learning all the theory, you can get pretty far ahead (IMHO) in a building your own programming language (if that's the goal). The two resources that I've found invaluable are - the prog lang course[1] by Dan Grossman and PLAI[2] by Shriram. Lastly, there's also a whole bunch of interesting university courses that you can refer to -

[0] -

[1] -

[2] -

Dec 11, 2015 baldfat on Why ML/OCaml are good for writing compilers (1998)
I went through the videos of a coursera class for Programming Languages with Dan Grossman.

He starts teaching programming with ML and then moves to Racket and ends with Ruby.

I had tried to teach myself Haskell several times but it always fell flat. I ended up loving ML and Racket (Especially Racket) the 1ML does look very interesting. Racket is pretty amazing for me. I learned a ton and was able to really improve my code in Python and R.

Nov 30, 2015 jpetitto on Ask HN: What's your favorite online course?
"Programming Languages" -

"Compilers" -

Sep 09, 2015 chriswarbo on Programming R at native speed using Haskell
> I have found Haskell very difficult to use with Cabal and its package management. The reason I went to Haskell was to teach myself functional programming. After struggling and going through 2 books I still felt like I hated Haskell due to making the environment just work. I work in three different locations and to get all 5 computers to work in Haskell was a serious pain.

Package management is certainly the worst thing about Haskell at the moment. Just yesterday I had to fight with cabal, and sit through hours of compilation, to build my application with profiling enabled :(

There's recently been a surge of activity in this area though, which seems to have been driven by FPComplete and consulting with industry:

- First there's "Stackage", which is basically a curated version of the package repository Hackage. Anyone can upload a new package to Hackage, and package authors can make breaking changes whenever they like. Stackage takes consistent snapshots of Hackage, where the package versions are known to work together.

- Next there's "Stack", which is an alternative UI for Cabal (ie. it replaces the commandline tools, but uses the same libraries and infrastructure). Nice features of stack are that it can fetch/install GHC (so "bootstrapping" is much easier), and it doesn't use a global package database (cabal has this feature with "sandboxes", but they're opt-in).

- Personally, I use Nix for managing Haskell packages. It's a bit like stack or cabal sandboxes taken to the extreme, although its Windows support is still pretty experimental. It will fetch pre-built packages from a cache, rather than building stuff locally (as long as you're using the defaults, at least).

Take a look at for more info.

> This lead me to see what else is out there. It lead me to which introduced me to Racket and I loved it and felt that Racket was the perfect fit for me.

Racket (and Scheme in general) is also an excellent functional programming language. Having dynamic types and macros makes it a very different beast to Haskell, so it's definitely worth learning both :)

Sep 09, 2015 baldfat on Programming R at native speed using Haskell
I love R and I love programming in it, but I have always thought I need to learn Julia due to a few things including speed, but that the R community keeps coming out with great answers to those questions where Julia keeps my interest. I don't see how this would speed up my typical R programming or code to be worth learning Haskell. What am I missing and yes I read the whole article.

I have found Haskell very difficult to use with Cabal and its package management. The reason I went to Haskell was to teach myself functional programming. After struggling and going through 2 books I still felt like I hated Haskell due to making the environment just work. I work in three different locations and to get all 5 computers to work in Haskell was a serious pain. This lead me to see what else is out there. It lead me to which introduced me to Racket and I loved it and felt that Racket was the perfect fit for me.

Jun 20, 2015 agumonkey on PilOS – A Stand-Alone Operating System
maybe take the MOOC

at one point you write a small evaluator, then extend it through macros. Shows you how to get the linguistic trait you'd like in a few lines. One thing lisp has been used to demonstrate since its birth.

(the course uses ruby and sml for other subjects)

Jun 05, 2015 brudgers on Programming in Standard ML (2011) [pdf]
I took the second live offering of Dan Grossman's class on Coursera in fall 2013. There was another in the last year, so if the pattern holds, there would be another in the next few months or so.

Jun 05, 2015 baldfat on Programming in Standard ML (2011) [pdf]
I am working through this coursea course via YouTube and I also found some github repos that have the course's homework material.

The first language is ML and than moves to Racket. Really learned a ton just doing the first weeks. It is more of a CS 202 Programming Languages course which was perfect for me since I really wanted to learn more about functional programming.

May 08, 2015 narwally on Ask HN: Best courses you took?
If you haven't had much functional programming experience I can't recommend Dan Grossman's Programming Languages class on Coursera enough.[0] You go through three languages in the course, Racket, ML, and Ruby.


Apr 14, 2015 jskonhovd on F# Survey 2015 Results
I have only used F# for a couple months, but I have a decent background in ML thanks to the Dan Grossman's incredible programming languages course.

I would say that if I can use F# Data or Deedle on a project, I will. Those tools totally make it worth learning a little F#.

Mar 18, 2015 JimmyM on John Carmack: “I just dumped the C++ server I wrote for a new one in Racket”
I've enjoyed the following resources:



Dan Grossman's Programming Languages Coursera course -

The Racket docs -

Chris Jester-Young's StackOverflow answers -[racket]

This list won't be as useful to you as it was to me, because you already know Common Lisp, but hopefully other readers will find it interesting.

NB - the ProgLang Coursera course features Racket alongside SML, Ruby and quite a lot of material that will seem very basic to experienced programmers, but it's a really good introduction of some of its key features. I think this is probably my weakest recommendation to someone who already knows Common Lisp (or similar) and my strongest recommendation to someone who does not.

Beyond that, the default DrRacket IDE comes with a whole load of teaching resources bundled by default, including (iirc) resources to help build a game in Racket - this package I think .

As for differences/advantages of Racket, I would say that there are few that I'm aware of beyond the simplicity of learning the language, the great tools, and the ease with which you can get up and running. Nothing inherent to the language that I'm aware of, and I would suspect that Common Lisp is great if you're already part of that community and 'know where everything is' so-to-speak. I've heard that CLOS is better than Racket's OOP abilities.

I really do love the language, though, it's one of the easiest and most joyful experiences I've ever had with a programming language. Just maybe not a necessity if you already know CL.

Sep 26, 2014 ics on Standard ML Family GitHub Project
The Programming Languages course on Coursera ( ) spends about a third of the course on SML before moving on to Racket and Ruby. It might be of interest to others who want a somewhat introductory course which uses ML.
Sep 10, 2014 jskonhovd on Swift Has Reached 1.0
I don't know if Swift would be the best language to learn programming. Python is probably a better option. I would avoid platform specific languages until you are hired to work in that space. Open platforms like Python are much easier than close platforms to get started in Computer Science.

A good place to start with python would be the Introduction to Computer Science course on Udacity.

If you are interested in ML, I can recommend taking the Programming Languages course on Coursera after the python course.

Aug 29, 2014 brudgers on Ask HN: Learning New Programming Languages
Martin Ordersky hisself is teaching Functional Programming in Scala starting September 15th:

If you don't know C, or Python or Ruby, there's always "The hard way" with Zed Shaw:

October 2, Coursera is abain offering Dan Grossman's Programming Languages , it covers general concepts in programming language design using SML, Racket, and Ruby.

Jul 08, 2014 epsylon on Python is now the most popular introductory language at top U.S. universities
The "Programming Language" course at coursera [1], which is directly adapted from a course at U. Washington by Dan Grossman [2] features SML, Racket and Ruby as three languages exhibiting different properties (FP, OO and static typing).

(I have to say that it was extremely good !)



May 15, 2014 platz on Functional Programming Principles in Scala with Martin Odersky
I took this class and enjoyed it; it was my first experience with scala, but I had previously taken grossman's programming languages course which introduce me to FP ( ).

Actually I thought grossman's was better at giving a comparison of FP and OO and hit on some more of the theory in FP (for example, odersky doesn't talk about the expression problem, but grossman did).

There will still be a lot in scala that's confusing after taking this class, but it's trying to teach the concepts rather than the language details.

That being said, I really enjoyed it and would recommend it.

Scala is an interesting blend of FP and OO. Just be aware that the ML-style languages (or even a lisp e.g. Racket) really feel more like FP. The blend is what makes it a mind-expanding course.

May 05, 2014 platz on Why I am excited about Clojure
I'm a C# guy at work too. I can't say I've touched much C++ outside of college also a while ago, but I've been studying functional programming for a while and really enjoying the new concepts it teaches. It can be a bit humbling at times though.

I got some good perspective with and you could do worse than taking grossman's excellent course. It helps to have some structure and a schedule when starting imho.

I will admit at times I wish I had more chops (closer to the metal i.e. C or C++), but I think I was eventually just more interested in new ways to think about programming, and I'm not sure I'd get the same pleasure out of digging back into C++.

Obviously, if you know something more about your intended use case (i.e. you want to program games), you can make a more informed decision.

Apr 10, 2014 sateesh on SICP taught by Abelson and Sussman [video]
Here you go:
Mar 31, 2014 qqrsmith on Show HN: A sequence of online courses to learn web development from scratch
Dan Grossman's Programming Languages class on Coursera includes a good treatment of OOP in the later weeks.

Nov 25, 2013 naiquevin on Why Class?
I can somewhat relate to the conversations in the article. While I admit that I don't think I used OOP correctly, since I started using more functions instead of classes (in Python, my primary language), I observed that it has been more convenient to reuse and refactor existing code.

Another observation is that it's far easier to read someone else's code if there is no mutation. For eg. I have enrolled for the proglang course[1] on coursera and only yesterday I completed this weeks homework which involves enhancing an already written game of Tetris in Ruby. Major part of the assignment was about reading and understanding the provided code that uses OOP and makes heavy use of mutation. It was quite difficult to understand what one method does without having a picture of the current state of the object, specially with side effecting methods that call other side effecting methods. A few times I had to add print statements here and there to actually understand which one is being when and how many times. While I could score full marks in the end, I am still not confident about completely understanding the code and have a feeling that if I ever need to work with it again, the amount of time it will take to load up everything again into my mind's memory will be equal to what it took for the first time.

Of course, one could only make a true comparison by studying an implementation of Tetris written in FP style. But from my experience with reading and writing code in Erlang (for production) and Racket, Clojure (as hobby) I find it relatively easier to study functional code written by others.


Nov 11, 2013 ojbyrne on Amazon Code Ninjas
Oh god. Don't they realize that "ninjas" was replaced by "badasses" around 2011, officially supplanting "rockstars" (which first appeared in 2009).

There is no indication of what language is expected, but presumably it's java, because companies that do this shit, are entirely java.

I feel the urge to click on the button, but I've been doing Dan Grossman's Programming Language MOOC ( ) lately, so I'm all about functional programming languages, which I suspect this particular programming test does not grok.. and the button looks like it's entirely about product managers and their conception of what programmers do. Which rhymes with "fuck you."

Sep 27, 2013 lawn submitted Coursera: Programming Languages - starts in 7 days (1 points, 0 comments)
Sep 07, 2013 lucasrp on Ask HN: How to best acquire theoretical computer science knowledge?
I am a law major, who did 1 year of engineering a long time ago. I always been a math geek, but 0 in CS. In my last year of college, i created a startup with some friends. It was a ERP for small lawyers firms. That didnt work out, but turned me on into CS.

Now i work as a product manager in a bigger firm (also law related), and i'm learning how to code through Coursera and Edx. I HIGHLY recommend them.

They are the future. The classes are very good. Way better than a regular class over here (Brazil).

If you are intereste in theoretical CS, here are 2 classes that you may be interested:

Programming Languages ( ): It focuses on functional programming. The first edition was VERY high recommended. Here you will learn about functional paradigm, and the differences in using it in several languages (some purely functional, like SML, some hybrid, like Ruby)

Automata ( ): It cant get more theoretical than this. The professor is Jeff Ullman. A legend. For free.

Machine Learning: A second version of Andrew Ng just ended. The third edition will be offered soon. is also a very nice place to learn. They are actual stanford classes taped, and offered for free, online. I`m taking the three introdutory classes, and the machine learning classes.

Also, there are several architecture, compilers and algorithms classes too. After my first course (, i realized that colleges (at least for CS) are redundant right now. They can be awsome. But, if you are short of money, or are already working, these online classes can fill the gap, easily.

add me on skype if you want to talk about more classes: lucasribeiropereira

See you!

PS. They can be VERY challenge. Take one, at most two at a time. 10-20 hours per week per course is a good rule of thumb

Aug 28, 2013 luu submitted Programming Languages - Dan Grossman (4 points, 0 comments)
Jul 30, 2013 lesterbuck on The Humble Programmer (1972)
A recent version of programming languages survey class available to anyone is the Coursera class on Programming Langauges from Dan Grossman:

It will be taught again in the fall. He covers three languages (SML, Racket, and Ruby) in ten weeks, hitting three of the four quadrants on strongly typed/dynamic and functional/object oriented.

Mar 11, 2013 djoes on How to Escape from {{ #PROGRAMMING_LANGUAGE }}
I've been taking the Programming Languages course on Coursera, the motivation for the course is exactly what you're talking about. "Syntax doesn't matter" has become something of a catchphrase in the lectures, emphasis is always on semantics and how different languages accomplish the same/similar things.

Jan 10, 2013 nanook on I'm teaching an introductory 12-week class on Haskell
I'm having a hard time keeping up with all these awesome classes.

Coursera's PL class is starting in a few days:

Brown's Intro to PL class:

Sep 20, 2012 rohshall submitted Programming Languages course on Coursera by Dan Grossman (1 points, 0 comments)
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
HN.Academy is an independent project and is not managed or owned by Y Combinator, Coursera, edX, or any of the universities and other institutions providing courses.
~ [email protected]
;laksdfhjdhksalkfj more things ~ Privacy Policy ~