Hacker News new | past | comments | ask | show | jobs | submit login
List of Computer Science Courses (github.com/prakhar1989)
323 points by denismars on Dec 28, 2014 | hide | past | favorite | 63 comments

There is a bunch of free CS courses starting in the next two weeks. You can find them here: https://www.class-central.com/subject/cs

Disclaimer: I built Class Central

Thanks a bunch for making Class-Central. I have used it quite a bit and have told others about it. (Over the time I discovered that the type of courses that suits me the best reside mainly on Coursera, so the utility for me personally shrunk.)

This list is sorely missing some introductory mathematics courses required to build a foundation in CS (e.g Discrete Maths). If there are any course suggestions that anyone has, I'll gladly add those to the list.

ArsDigita Discrete Mathematics course (this one gives a really gentle start):


MIT Mathematics for Computer Science (harder but still not that hard):


Steve Skienna discrete mathematics course (graduate course based on Knuth's "Concrete Mathematics", quite hard):


I also recommend checking out some books:

http://infolab.stanford.edu/~ullman/focs.html - free "Foundations of Computer Science" book that combines discrete mathematics with C programming and some theory of computation stuff, a pretty good way to make things more practical

http://www.amazon.com/Discrete-Mathematics-Elementary-Beyond... - very pleasant introductory discrete mathematics book, a welcome break from the usual "brick" format and covers some important topics that often do not make it into the normal discrete mathematics curriculum e.g. induction on trees.

http://www.amazon.com/Introductory-Combinatorics-Modern-Birk... - classic introduction to combinatorics

Anyone have a working linking for the videos in ArsDigita? The rm files are downloading and showing length but not playing for me

Discrete Math is on youtube along with a few others (maybe all?). Here is a playlist for it:


CS 103 at Stanford: http://web.stanford.edu/class/cs103/

The course reader [1] covers the first half of the class and is pretty good.

[1] http://web.stanford.edu/class/cs103/notes/Mathematical%20Fou...

This looks good. Video available ?

This isn't a course but this book has been consistently word-of-mouth recommended as a comprehensive survey of undergraduate mathematics.


I bought this on recommendation from HN.

I'd also recommend - Engineering Mathematics by KA Stroud. All three volumes are fantastic.

CS70 at Berkeley is always a good bet, the notes available online are fantastic.

I'm going to be working through http://matt.might.net/teaching/compilers/spring-2015/ this semester. Looks pretty good so far.

His blog is a goldmine as well: http://matt.might.net/articles/

I'm taking the class this upcoming semester from Matt. I'm excited to understand what tools like gcc, clang, and so on are doing under the hood.

I'm looking forward to having you in the class!

Use an exploit on caprica to gain root access: +10%

I wonder if this offer stands from semester to semester, and therefore if he seeded an exploit (or several, given how the extra credit reads) or whether the whole thing is just more of his light-hearted style.

But I definitely agree: that course looks great.

It stands from semester to semester.

Typically, I create a fresh ubuntu server at the start of each semester, and I let it go unpatched for the duration of the semester.

Guys how do I take this class? There is no way I can do this online?

At the moment, you'd have to enroll at the University of Utah.

I might put the course online some day, but lectures are extremely interactive.

I'm not sure how well they'll translate to an online format.

The reference implementations at http://matt.might.net/apps/pyparse/ does not seem to work.

This is not an online class, but a collection of materials used by the Prof to teach the course at the university. You can view the lectures[0] and work through the programming assignments[1] at your own pace.

[0] - https://www.dropbox.com/sh/zanwtoflw4pcfu8/5pdT6axS3y [1] - http://matt.might.net/teaching/compilers/spring-2015/#projec...

Agreed. Do you know if lectures will be posted?

Slides will be online, but I don't have plans to video record the lectures.

A reasonable amount of the course material is in blog posts, and I add more posts each semester.

Sounds good, will check it out. Thanks for posting this.

For an introduction to programming, [0]UNSW Computing 1 is an excellent and relatively unknown course.

[0] https://www.openlearning.com/courses/unsw/computing1

I think these courses are awesome as well:

6006 Introduction To Algorithms from MIT


Machine Learning from Stanford: Learn about the most effective machine learning techniques, and gain practice implementing them and getting them to work for yourself. https://www.coursera.org/course/ml

My main aim with this list was to have a collection of lesser known (but awesome) courses. That's one reason why I stayed away from adding MIT's OCW or a MOOC on the list.

awesome! Yeah the list is super cool!

There's also Computer Architecture lectures[1] for CMU's graduate and undergraduate courses by Prof Onur Mutlu which I have been following lately. Assignments and further reading material are also available on the course website[2].

[1] https://www.youtube.com/playlist?list=PL5PHm2jkkXmidJOd59REo...

[2] http://www.ece.cmu.edu/~ece447/s13/doku.php?id=home

Thanks! I'll add these to the list.

There is also the algorithm course (in two parts) by professor Tim Roughgarden of Stanford (available on Coursera). Part one starts Jan 19th.

I really enjoyed both of them. Reviews:



Analysis of Algorithms by Steven Skiena is a gem :: http://www3.cs.stonybrook.edu/~skiena/373/

Course book and homework assignments are available online if anyone is interested is taking this course. :)

No idea how Prof Skiena's course slipped out. Added to the list. Thanks!

These are great tools to learn foundational computer science from outside of a classroom, but not an adequate substitute for a computer science degree (and I say this with no formal CS background myself). One could reasonably pace themselves through the class materials presented here, attempting the homeworks and tests while honestly assessing oneself, but employers especially want to see proof, and a degree carries far more weight than doing the same work but without the degree to show for it.

Pedigree and pedantics have taken precedence over hacking and creative problem solving, particularly in the Silicon Valley where a Stanfordcal degree and Googfacetwit work experience is expected.

When going for a CS degree, the usual rule of thumb is one should spend three hours studying for every hour in the classroom.

To get the education you'll get at a college, you'll have to spend those three years studying any how. So college is really like three years of independent study and one year of class time.

Why not just spend that year of time going to classes, learning things from professors (some of whom are quite knowledgeable, and doing cutting edge CS theory research), learning things from classmates and making social and networking connections? Perhaps private schools are expensive, but UC Berkeley, UIUC, UWashington, Georgia Tech are more affordable, especially with Pell grants etc. Especially part-time.

Also - people doing self-study tend to go right for the immediately useful stuff - how to make web pages in PHP and the like. How many people spend eight months studying calculus, then four months studying discrete math, then four months on graph theory, then four months on theory of computation, then four months studying logic gates and processors, then four months studying data structures etc.? What kind of code is someone who has not studied concurrent programming going to write when an application needs threading?

A degree is also a sign someone can stick with something for four years.

Of course a degree is no guarantee they know anything in and of itself.

> but employers especially want to see proof

Really? This has not been my experience at all. Nearly all tech job listings I've seen mention "or equivalent experience" somewhere.

> This has not been my experience at all

How far back is this experience?

Is this what the job listings (of what there were) said during the 2008-2009 recession? Is this what they said in 2001 after the dot-com crash?

They may not say them now, they may not have said them in 1999, but they certainly are requirements companies can (and do) put up during the years when people need a job most.

Passing basic HR filters is necessary for most job listings, and "equivalent experience" is harder to quantify than having a degree in the field from a name brand university. Also it is hardly a selling point to claim that one took an online class and did not receive credit for it.

Semi-related question: Anyone know of any good courses online that are intro to molecular and cellular biology related? Thanks, my grad school grades aren't the best and I think it's my lack of bio foundation that's hurting.

also: great books on those topics have existed for decades

I mean, yes, but alas, my study habits are better with lectures and learning groups as a supplement to the written material. Any suggestions on specific books? I know just about any are good, however some are almost canonical(For example: Jackson is THE electromagnetism text, others will do, but just about everyone learns from Jackson. Is there such a thing with mol-bio?)

Specific books:

* The Cell: A Molecular Approach, Cooper

* Molecular Biology of The Cell, Alberts

Theses are the main two books in the field of molecular biology. If you want to go more specific, let me know.

Any suggestions? I'm also looking for some resources on those topics.

I have a recommendation for everyone:

The courses at ADUni are really awesome. Though the resolution totally sucks and it feels rather old, they're the best thing around the Internet thats a tutorial on CS. They have everything from Algorithms and Discrete Maths to OOP and stuff. Check those out at http://www.aduni.org I'll probably send a pull request to whoever's maintaining the repo. Great job though, you've listed quite a lot of courses... ;)

I've been looking for a databases course focusing on the systems side of things (concurrency control, query planning, disk, etc.), but it seems like it's too niche. If anyone knows of one, I'd be really happy to hear about it.

I guess I should mention Seven Databases in Seven Weeks (Pragmatic).

consider books as well

Might be cool to add some of the programming / math-y resources from -- datasciencemasters.org -- as well!

I think we need more algo courses for the sake of competitive programming...

Which of these would you recommend for someone who has been programming since 2 years but wants to improve their fundamentals ?

I'd go for aofa

Nice to see something that I had the 3rd pull request on blow up ;)

MIT, harvard etc are not the only universities in the world. and this has a pretty limited view of CS.

If only there was some way you could add to that list to address the imbalance. Maybe if it was hosted on Github and you could issue a pull request?

As always there is a complete lack of theoretical CS courses.

There's one on Coursera taught by Jeff Ullman but OP said he avoided adding stuff you can find on MOOC's.

The whole Algorithms section is theoretical CS.

There's a lot more to TCS than algorithms.

Furthermore, the most theoretical course there is the Princeton one. The rest all focus more on using algorithms to do things than on theory.

Can you recommend some courses?

This is mostly from a theoretical crypto perspective since that's what I'm interested in:

Introduction to Cryptography:

    Yehuda Lindell - http://u.cs.biu.ac.il/~lindell/89-656/main-89-656.html
Complexity Theory:

    Jonathan Katz  - http://www.cs.umd.edu/~jkatz/complexity/f11/
    Luca Trevisan  - http://www.cs.berkeley.edu/~luca/cs278-08/

Foundations of Cryptography:

    Yehuda Lindell - http://u.cs.biu.ac.il/~lindell/89-856/main-89-856.html
    Jonathan Katz  - http://www.cs.umd.edu/~jkatz/gradcrypto2/
Secure MPC:

    Jonathan Katz  - http://www.cs.umd.edu/~jkatz/gradcrypto2/f13/

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