HN Academy

The best online courses of Hacker News. [about]

Paradigms of Computer Programming – Fundamentals

edX · Université catholique de Louvain · 46 HN points · 8 HN comments

HN Academy has aggregated all Hacker News stories and comments that mention edX's "Paradigms of Computer Programming – Fundamentals" from Université catholique de Louvain.
Course Description
This course covers functional, object-oriented, and declarative dataflow programming in a unified framework, with practical code fragments and a simple semantics.
HN Academy Rankings
Provider Info
This course is offered by Université catholique de Louvain on the edX platform.
HN Academy may receive a referral commission when you make purchases on sites after clicking through links on this page. Most courses are available for free with the option to purchase a completion certificate.

Hacker News Stories and Comments

All the comments and stories posted to Hacker News that reference this course.
Relevant references...

A 2004 textbook by the OP:

Concepts, Techniques, and Models of Computer Programming

https://www.amazon.com/Concepts-Techniques-Models-Computer-P...

And his 6 week edX course:

Paradigms of Computer Programming – Fundamentals

https://www.edx.org/course/paradigms-of-computer-programming...

Paradigms of Computer Programming (https://www.edx.org/course/paradigms-computer-programming-lo...)

Amazing course, though it uses Mozart a little known programming language, drives home the functional paradigm in a lucid manner. I am surprised that Peter Van Roy's book (instructor of the course) Concepts, Techniques, and Models of Computer Programming is not as well known as SICP.

Sep 14, 2016 · sn9 on Ask HN: How to Learn OOP
An alternative route would be to study programming paradigms from Concepts, Techniques, and Models of Computer Programming [0].

One of the authors is teaching a two-part MOOC on edx over the material [1] (how much of it, I don't know).

[0] https://mitpress.mit.edu/books/concepts-techniques-and-model...

[1] https://www.edx.org/course/paradigms-computer-programming-lo...!

Sep 04, 2015 · 1 points, 0 comments · submitted by cmeiklejohn
The author of the 3rd book in the list, Peter Van Roy, teaches a course on edX. :) The course is archived but I think people can access all the videos and notes.

http://www.edx.org/course/paradigms-computer-programming-lou...

http://www.edx.org/course/paradigms-computer-programming-lou...

I followed the Coursera course linked from the article and the similar "Programming Paradigms" course from Standford[1], and from what I recall, dataflow and actors where formally equivalent - i.e. you could write any one using the primitives of the other.

Dataflows can be implemented through message calls to independent actors, but I also saw a stateful actor implemented as a purely functional dataflow in the shape of a sequence of its successive states.

I've seen recently a lot of people from both styles saying "but that's not really what 'reactive' is" at the other, and I think it may be a misunderstanding caused by that equivalence.

[1] https://www.edx.org/course/paradigms-computer-programming-lo...

As part of the MOOC course Paradigms of Computer Programming (https://www.edx.org/course/louvainx/louvainx-louv1-01x-parad...) I read the initial parts of the book: "Concepts, Techniques, and Models of Computer Programming" (mitpress.mit.edu/books/concepts-techniques-and-models-computer-programming). The initial chapters provide a good approachable way to get started with functional programming. Though working with Oz (the programming language used in the book) gets some time to get used to, this is an excellent book. I am bit surprised that this book is not as well known, and probably I wouldn't have known about this book if not for the MOOC course.
Apr 22, 2014 · sateesh on Scala 2.11.0 Release Notes
Another complementary course is "Paradigms of Computer Programming" https://www.edx.org/course/louvainx/louvainx-louv1-01x-parad... which is being taught by Peter von Roy. The course covers the functional, declarative, and dataflow programming paradigms.
raphinou
This is indeed a great course. The videos are well done, and Peter Van Roy's explanations are very clear. Even seasoned programmers could learn a lot from this course.
Jan 22, 2014 · 45 points, 24 comments · submitted by nextos
"This course covers functional, object-oriented, and declarative dataflow programming in a unified framework."

Probably a fantastic course that follows CTM, which I have always thought to be in many respects SICP's sequel: http://c2.com/cgi/wiki?ConceptsTechniquesAndModelsOfComputerProgramming

chrisdevereux
Another upcoming edx course that might be of interest to people on here:

https://www.edx.org/course/utaustinx/utaustinx-ut-5-01x-line...

    Linear Algebra - Foundations to Frontiers

    Learn the theory of linear algebra hand-in-hand with the practice of software library development.
(can't post a thread of its own, as was submitted too recently)
muraiki
I'm very much lacking in math education and this seems like it would be a great approach for learning linear algebra. Do you know how this compares with "Coding the Matrix: Linear Algebra through Applications to Computer Science"? The two approaches sound very similar.
ambler0
I signed up for "Coding the Matrix" and didn't finish. Before that, the last math I had studied was Calc 1 during my freshman year of college, over a decade ago. My impression was that it seemed like a good class and a good professor, but it moved quite quickly and was hard to follow for people lacking a background in higher math. I did get very comfortable with writing comprehensions in Python, though.

I still want to learn Linear Algebra, myself, so if anyone has suggestions, please post them.

VLM
Hit archive.org or whatever for "Strang Linear Algebra" and you'll see the MIT OCW videos for free. The quality is, um, very turn of the century, but you're watching to learn, not critique video codecs.

If you want to spend money, from my bookshelves:

Strang (the guy in the videos above) knows one or two things about Linear Algebra. His textbook is legendary. Bring lots of $$$, like three figures.

"The Manga guide to Linear Algebra" Yes, that is exactly what it sounds like. I think if you have to start somewhere, maybe this is it. Cheap. $

"Matrices for Engineers" by Kraus. There's about 50 textbooks along the lines of linear algebra matrices for engineers programmers using $math_application or $calculator or $chicken_entrails and similar title permutations. You'd think every engineering program in the nation is required to use a different text. This particular text was pretty good. If I recall correctly, reasonably priced $$.

I would suggest reading them in the order of the comic book, the engineer book (or any of the dozens of equivalent college texts), and Strang. Coincidentally thats also order of price.

At one time I understood everything in the comic book and the engineer book. That was a long time ago. Strang mystified me in parts. So I'm not going to pretend to have THE perfect answer. It is entirely likely in the last decade someone has written the Uber text to replace them all. Probably a new edition of Strang is out by now.

I would estimate the effort required to be about one programming language.

Best of luck to you.

nextos
IMHO the uber text for intro LA is Axler's.
ivoflipse
You could buy the book, which isn't that expensive and covers everything from the video's as far as I can tell.

That allows you to study it more at your own pace. I'm taking the Visualizing Algebra course from Udacity, after working halfway through Coding the Matrix, because I found my algebra skills to be lacking.

Too bad its no longer possible to get a certificate on Coursera though, now I have to wait until the next iteration.

muraiki
Thank you for this feedback. You have most likely saved me a lot of angst. :)
None
None
adamnemecek
I recently stumbled across the book that the course is based on (written by the guy teaching it) and while I have not had the time to really get into it, it is almost as important as SICP (not just my opinion) and more applicable to most people's day-to-day programming. If you have not heard of it, you should check it out.
raphinou
I've had the chance to have peter van roy as professor, and i found his courses on programming paradigms the resource that made me progress the most in programming. It is fascinating how advanced concept (eg classes) are built on simple constructs. I also discovered dataflow variables during that course.

Even if you are a programmer, this course could teach you a lot. Very much indicated! And the language Oz is easy to learn, dont be afraid of it!

And if you dont follow the course, at least check the book, it is a gold mine!

spenuke
I've just begun chapter 2 of SICP. Can anyone familiar with Van Roy's book (or the edX course?) suggest whether it would be worth putting SICP on hold in order to work through the edX course?
radiowave
I would say so. I've had a copy of the CTM book for a while, and while I've never made it all the way through the book, it is excellent, very readable. The whole thing is structured around how to teach the subject absolutely from first principles, so there's no brick wall of assumed knowledge to run into.

I'll be taking the edX course.

jimmaswell
Why would imperative not be a "main" paradigm? Such as from C?
aidenn0
I didn't see "procedural" listed among the paradigms. I find that odd, particularly as it seems to be, by far, the easiest to teach to beginners.
Myk267
You shouldn't find it odd.

The course is about teaching interesting paradigms and how they can be used to solve problems, not teaching the easiest thing to beginners.

The why not procedural/imperative answer /might/ be: we already know how to do that. That stuff is everywhere. Why not take a little time to learn something different that may in fact have some real benefits?

adamnemecek
I'm guessing that that is implied since it's not the 60's anymore.
aidenn0
and yet I would guess that the majority of code written today is done largely in the procedural style. perhaps the reason for omitting it is that it it's assumed all students will be familiar with it. breaking it down into structured and unstructured would be archaic though.
eronhp
You are right on both counts, It is not a beginners programming course, knowledge of procedural/imperative programming is assumed.
ExpiredLink
> This course gives an introduction to all major programming concepts, techniques, and paradigms

IMO, there are no paradigms in computer programming. The concept of a paradigm is overkill for describing the guiding principles that some programmers use sometimes. People who don't buy into a 'paradigm' are not heretics and charlatans. tldr: principles, concepts, techniques yes, 'paradogmas' no.

grey-area
Your ideas are like a whole new way of looking at programming; a new paradigm if you will.

People like patterns and rules, as long as there are people I think there'll be paradigms in programming - a paradigm is after all just a way of looking at the world. I see where you're coming from (that you should remain flexible in the face of change, and not become rigid and unthinkingly follow rules set down by others), but you can't escape forming opinions about the right way to proceed in a given discipline - I think we're hardwired for it.

ExpiredLink
Paradigm obviously is a highly overloaded word. I assume paradigm is used in Kuhn's sense who coined its 'modern', 'strong' meaning. When paradigm shall mean just opinion then I have many paradigms, too.
justin66
Peter Van Roy is teaching all these out of the same programming language, and there's no charlatanism implied in choosing one technique over the other. You might find the course a lot more interesting than you think.
jonsen
What paradigm-free programming languages do these non-paradigm-buying programmers use?
VLM
I think he's aiming at something like older languages tended to do only one paradigm, or at most only do one of them well, but you can do a reasonable approximation of functional and OO in Scala, for example.

Observationally it seems harder to mix design patterns between paradigms than to merely merge language features.

fhars
Well, blubb obviously.
Maybe:

Paradigms of Computer Programming

https://www.edx.org/course/louvainx/louvainx-louv1-01x-parad...

bjz_
This is by fellow who wrote the awesome book Concepts, Techniques, and Models of Computer Programming. It'll probably teach different models of computation via the Oz programming language, but I doubt it will go into the kind of theory you'd find in Types and Programming Languages.

http://www.amazon.com/Concepts-Techniques-Models-Computer-Pr...

HN Academy is an independent project and is not operated by Y Combinator, Coursera, edX, or any of the universities and other institutions providing courses.
~ [email protected]
;laksdfhjdhksalkfj more things
yahnd.com ~ Privacy Policy ~
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.