Hacker News new | past | comments | ask | show | jobs | submit login
Paradigms of Computer Programming (edx.org)
45 points by nextos on Jan 22, 2014 | hide | past | favorite | 24 comments

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


    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)

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.

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.

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.

IMHO the uber text for intro LA is Axler's.

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.

Thank you for this feedback. You have most likely saved me a lot of angst. :)

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.

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!

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?

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?

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.

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'm guessing that that is implied since it's not the 60's anymore.

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.

You are right on both counts, It is not a beginners programming course, knowledge of procedural/imperative programming is assumed.

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

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.

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.

What paradigm-free programming languages do these non-paradigm-buying programmers use?

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.

Well, blubb obviously.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact