Hacker News Comments about Paradigms of Computer Programming – FundamentalsAll the comments and stories posted to Hacker News that reference this course.
A 2004 textbook by the OP:
Concepts, Techniques, and Models of Computer Programming
And his 6 week edX course:
Paradigms of Computer Programming – Fundamentals
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.
An alternative route would be to study programming paradigms from Concepts, Techniques, and Models of Computer Programming .
One of the authors is teaching a two-part MOOC on edx over the material  (how much of it, I don't know).
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.
I followed the Coursera course linked from the article and the similar "Programming Paradigms" course from Standford, 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.
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.
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.
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.
"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
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!⬐ chrisdevereux
Another upcoming edx course that might be of interest to people on here:
(can't post a thread of its own, as was submitted too recently)
Linear Algebra - Foundations to Frontiers Learn the theory of linear algebra hand-in-hand with the practice of software library development.⬐ muraiki⬐ adamnemecek
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.⬐ None⬐ 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⬐ muraiki
IMHO the uber text for intro LA is Axler's.
Thank you for this feedback. You have most likely saved me a lot of angst. :)⬐ 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.
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.⬐ 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⬐ aidenn0
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⬐ justin66
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.
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?⬐ fhars
Well, blubb obviously.⬐ 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.
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.⬐ adamnemecek⬐ spenuke
I'm guessing that that is implied since it's not the 60's anymore.⬐ aidenn0⬐ Myk267
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.
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?
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⬐ jimmaswell
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.
Why would imperative not be a "main" paradigm? Such as from C?
Paradigms of Computer Programming
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 .