Online Learning: A Bachelor's Level Computer Science Program Curriculum (Updated - Dec 2020)

Introduction
[Update: See also the follow-up post to this piece, An Intensive Bachelor's Level Computer Science Curriculum Program.]

A few months back we took an in-depth look at MIT’s free online Introduction to Computer Science course, and laid out a self-study time table to complete the class within four months, along with a companion post providing learning benchmarks to chart your progress. In the present article, I'll step back and take a much more broad look at com-sci course offerings available for free on the internet, in order to answer a deceptively straightforward question: is it possible to complete the equivalent of a college bachelor’s degree in computer science through college and university courses that are freely available online? And if so, how does one do so?

The former question is more difficult to answer than it may at first appear. There are, of course, tons of resources relating to computer science and engineering, computer programming, software engineering, etc. that can easily be found online with a few simple searches. However, despite this fact, it is very unlikely that you would find a free, basic computer science curriculum offered in one complete package from any given academic source. The reason for this is fairly obvious. Why pay $50,000 a year to go to Harvard, for example, if you could take all the exact same courses online for free?

Yet, this does not mean that all the necessary elements for such a curriculum are not freely accessible. Indeed, today there are undoubtedly more such resources available at the click of a button than any person could get through even in an entire lifetime of study.  The problem is that organizing a series of random lecture courses you find on the internet into a coherent curriculum is actually rather difficult, especially when those courses are offered by different institutions for different reasons and for considerably different programs of study, and so on. Indeed, colleges themselves require massive advisory bureaucracies to help students navigate their way through complicated degree requirements, even though those programs already form a coherent curriculum and course of study. But, still, it’s not impossible to do it yourself, with a little bit of help perhaps.

The present article will therefore attempt to sketch out a generic bachelor’s level curriculum in computer science on the basis of program requirements distilled from a number of different computer science departments at top universities from around the country.  I will then provide links to a set of specific college and university courses that are freely available online which, if taken together, would satisfy the requirements of our generic computer science curriculum.

A Hypothetical Curriculum
So, what are the requirements of our hypothetical computer science program?  Despite overarching similarities, there are actually many differences between courses of study offered at different colleges and universities, especially in computer science.  Some programs are more geared toward electrical engineering and robotics, others toward software development and programming, or toward computer architecture and hardware design, or mathematics and cryptography, or networking and applications, and on and on.  Our curriculum will attempt to integrate courses that would be common to all such programs, while also providing a selection of electives that could function as an introduction to those various concentrations. 

There are essentially four major parts to any bachelor’s level course of study, in any given field: pre-requisites, core requirements, concentration requirements and electives. 

Pre-requisites are what you need to know before you even begin. For many courses of study, there are no pre-requisites, and no specialized prior knowledge is required or presumed on the part of the student, since the introductory core requirements themselves provide students with the requisite knowledge and skills. 

Core requirements are courses that anyone in a given field is required to take, no matter what their specialization or specific areas of interest within the field may be.  These sorts of classes provide a general base-level knowledge of the field that can then be built upon in the study of more advanced and specialized topics.

Concentration requirements are classes that are required as part of a given concentration, focus or specialization within an overall curriculum.  For example, all students who major in computer science at a given university may be required to take two general introductory courses in the field, but students who decide to concentrate on cryptography may be required to take more math classes, while students interested in electrical engineering may take required courses on robotics, while others interested in software development may be required to study programming methodologies and so on.

Finally, electives are courses within the overall curriculum that individuals may decide to take at will, in accordance with their own particular interests.  Some people may prefer to take electives which reenforce sub-fields related to their concentration, while others may elect to sign on for courses that may only be tangentially related to their concentration.

Our hypothetical curriculum will simplify this model. We will assume no prerequisites are necessary other than an interest in learning the material and a basic high school education.  Our curriculum will also not offer any concentration tracks in the traditional sense, as that would require specialized resources that are not within the scope of our current domain.  Instead, our planned curriculum shall provide for introductory courses, general core requirements, and a choice of electives that may also serve as a basis for further concentration studies.

Basic Requirements
A quick survey of curricular requirements for programs in computer science at a number of the country’s top colleges and universities reveals a wide spectrum of possibilities for our proposed curriculum, from a ten course minor in computer science to a twenty-five course intensive major in the field along with an interdisciplinary concentration. (See, for example, MIT, Carnegie Mellon, Berkeley, Stanford and Columbia, or the comp-sci page for a college or university near you.) 

Our proposed curriculum will attempt to stake out a space between those two poles, and aim for a program that consists of about 15 courses: 3 introductory classes, 7 core classes and 5 electives. The required topics and themes of a generic computer science degree program are fairly easy to distill from the comparison: introduction to the field, data structures, algorithms, programming languages, operating systems, networking, data communications, systems engineering, software development, and so on.  Our program will consist of university or college level courses from around the world that cover our basic requirements and are freely available in full online.

Note: I have, unfortunately, not watched every single video from all of the courses below.  However, I have completed three of them in full, viewed a handful lectures from a number of the other courses, and spot checked the videos from the rest for quality. 


Introductory Courses 

Intro to Computer Science, pick two of three:
Basic mathematics, pick one of two:

Core Courses 

Data Structures and Algorithms, pick one of two:
Operating Systems:
Programming Languages and Methodologies:
Computer Architecture:
Networking:
Data Communications:
Cryptography and Security:

Electives

Web Development:
Data Structures:
Systems:
Programming Languages:
Security:
Cryptography:
App Development:
Artificial Intelligence:
Graphics:
Math:
Leave any suggestions for improvements or additions in the comments!

UPDATE: There has been a ton of great feedback on this post, with suggestions for additions, critiques of the overall form, identification of "glaring holes" and more.  Thanks everyone!  However, rather than address them one by one in the comments, or include them all into an update of some sort, I think I may just begin work on a new version of the piece which provides a more intensive track of study and tries to incorporate as many of those suggestions as possible, assuming that examples of such courses are available for free in full online from a college or university.  So be sure to check back in future!

UPDATE II:  See also the companion post to this piece, An Intensive Bachelor's Level Computer Science Curriculum Program.

106 comments:

  1. Really nice list. I'm impressed. I didn't know youtube was hiding such treasures.

    ReplyDelete
  2. Coursera's compilers course could be added here. https://www.coursera.org/course/compilers

    ReplyDelete
  3. I could be missing it but there seems to be at least one glaring hole. Where is the class that teaches you about real software engineering? I am talking about writing up a formal design spec and having a real plan rather than haphazardly getting it to work, which *should* never allowed in the real world. Possibly, it could cover the gang of four "Design Patterns" or some more recent derivative?

    ReplyDelete
    Replies
    1. Correct me if i'm wrong, but I was under the impression that most university computer science program's don't include "real software engineering" much anyways. That is an elective for Computer Science and the purpose of the Software Engineering degree I thought.

      Delete
    2. plus such topics are always in flux -- it was structured design, then object-oriented design, then agile, then etc. etc.

      Delete
    3. How about Engineering Software as a Service offered by Berkeley at edX?

      Delete
    4. News flash: Computer Science is not software engineering.

      Delete
  4. At Unknown's comment: 6.005 at MIT could work for an introduction to software engineering:

    http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-005-elements-of-software-construction-fall-2011/index.htm

    Of course, a large portion of the class is learning from mandatory code-reviews and working in small teams, which is hard to pull off online...

    ReplyDelete
    Replies
    1. That course may be a good addition. And I very much agree that a course like this requiring small teams would be difficult to do online. Getting people to work together for in person classes is hard as it is.

      -Travis

      Delete
    2. This comment has been removed by the author.

      Delete
  5. Do you think you would like to include www.codelearn.org/android-tutorial alongside ITU Android Development Course .

    Disclaimer: I am the Founder :).

    ReplyDelete
    Replies
    1. This was meant to be a list of free resources - your site requires payment.

      Delete
    2. And no offense, you are a scammer indian. If I get one more stupid unwanted email from an indian dev for web work, seo, or likewise i will scream. You guys are completely shady, you offer shit service, and half of you dont know shit. Go try Attracta once, I dare you, or some other large indian operated outfit. Get fucked Ashish.

      Delete
    3. Wow, that was prejudice and racist...

      Delete
    4. Hey guys at aGupieware. Does Robert work for/with you? If not, are you going to at least chastise him PUBLICLY for (1) his racist remarks (2) the abuse he has hurled at another person in an open forum?

      Because if you are not going to do that then expect a call from my lawyers before Friday, May 16, 2014. And trust me, I will shutdown your site, your company and your life. That's not a threat, that's a warning.

      Delete
    5. First, why would you assume Robert has any more of an affiliation with this blog than you or I? Second, a request to remove the offensive comment is much more reasonable than an empty, childish threat to "shutdown his life". Third, it is not the responsibility of an author to berate anyone for having a racist opinion. Fourth, bloggers are protected from these kind of legal threats by section 230.

      Delete
    6. Just as a note, since it's been brought up, the commenter Robert above has no affiliation with this site whatsoever. And Matthieu has called him out on his racism already. But rather than delete an comment, I prefer to leave it as a reminder that racist stupidity can be found pretty much everywhere.

      On the other hand, tough guy empty threats like those from Vishwakarma, are equally stupid.

      Delete
    7. What Robert said was over the top sure, but threatening people's lives over a comment on the internet like Vishwanker did... you sir/ma'am, are the worst of the two evils.

      Delete
    8. Vishwakarma Sevak you must be new to the internet. Here, read this quick guide :

      Delete
    9. Well would you look at that, he is going to call his lawyer and shut down the site and everything. Gee... it takes very little to bring out a person's true self. What that guy Sevak just did was threaten the lives of those running this blog. Good thing is publicly noted in case something really happens to them.

      Delete
    10. Dear Robert,
      i am an Indian and i am sorry i am sorry that any of my fellow citizen has offended you in any way. i just wanted to say that being of a particular country does not mean that all the citizens are the same. There are all types of fishes in the sea

      Delete
    11. lol how is anything Robert said racist? he's pointing out the obvious... ...and then the indians come out in force getting all butt hurt because they are trying to convince themselves the few honest and really smart ones make up for the giant scam industry they have going. LMFAO

      Delete
  6. This curriculum seems like a very good starting point for any one wanting to get acquainted with computer science (CS). However, it is, in my opinion, far from a bachelor's level. I think suggesting otherwise might mislead people into thinking this is all someone holding a bachelor's in CS will learn at school
    To exemplify this: 15 (or even 20) classes can be covered in 3 or 4 semesters, while a typical bachelor's degree is, at the very least 6, semesters. This is not arbitrary.
    Very important mathematical concepts and tools are not covered in the "Math for CS"-type of courses. That is why Calculus (both scalar and vectorial), Analytic Geometry, Linear Algebra, (so-called Modern) Algebra, Differential Equations, Probability, courses are also usually included as mandatory. Apart from the mathematical skills that mastering this subjects bring, since there is so much interaction between CS and other sciences, it is important to equip students with a common language to communicate with other fields and understand their problems.
    From the strictly CS point of view, I would mention three major deficiencies:
    I. In the theoretical part, there is no course on Theory of Computation (can you imagine a CS student that doesn't understand the proof of the existence of non-computable problems?)
    II. From the more practical point of view: more basic programming oriented courses are necessary, especially if no pre-requirements on programming are present, for example, a course solely on Object Oriented Programming, or an ACM- or IOI- type of programming course (e.g. projecteuler). Also, there are many students that are not familiar with things that are basic in the academic or industry work: using Linux, using an IDE, and, even, using a spreadsheet. This last point is specially true in developing countries, which is big part of the audicience of an online-learning effort.
    III. From the more career-oriented point of view currently widely used technologies/methods like Relational Databases, Web Services, Distributed Computing, and, yes, also something on Software Engineering.
    Also, some advanced research-seminar type of course is usually desirable, to have students interact with current literature and technological developments

    ReplyDelete
    Replies
    1. Hello Victor, thanks for this detailed and substantive reply. Your points are well taken, and I even reflected on a couple of them while putting the piece together. There was one main hurdle I encountered in this regard: finding examples of such courses (for example, a course on the Theory of Computation) that are available for free in full online, and which are also of high enough audio/video quality to be tolerable over the long haul, and which were also from a major college or university. I also didn't want to put in so much stuff that it would seem immediately overwhelming. But since I've gotten so much great feedback and so many suggestions for this article, I'll probably do some research and put a companion piece together that would be like a more intensive study track, or something along those lines.

      Delete
    2. Got interested in computers playing at mama's knee back in the 1970's with the discarded punch cards. In the 80's, I was learning electronics and selling/repairing computers. By the 90's, I was repairing computers and starting to teach classes in them. I did not have more than 1-2 brick-and-mortar classes in the IT field until about 4 years ago. In other words, most of my knowledge came by experience along with trial and error. I have unofficially taken many of the courses listed above and have gained valuable knowledge from it. Would I consider them a college equivalent? It depends. Most colleges do not have the luxury of staff fresh from the trenches. In fact, if the person has taught at all, it has been for years and years. They are tired and worn out, along with their methods and messages. So these courses listed above are taught by leaders of the computer world who have studied and gained practical experience. Thus, there are points in that direction over traditional college. Are there shortfalls/ shortcomings? Sure and Victor above there mentioned more than a few of them. If there was a way to remove those shortcomings, would this, then, be equivalent to college?

      Delete
    3. Agree. This list is more like a curriculum for the first two years towards a university degree in computer science.

      Delete
    4. This is surely an impressive job. Kudos to the guys that came up with the list.

      For more info, you can easily access the syllabus of any CS course from any University around the world.
      a quick search on google has brought me here :

      http://zoo.cs.yale.edu/classes/

      Delete
  7. This is really impressive.
    Excellent work!

    ReplyDelete
  8. Very nice =) I would just suggest to take a look on ACM suggested curriculum to pickup more ideas -> http://www.acm.org/education/CS2013-final-report.pdf

    ReplyDelete
  9. This is a great compilation! And, I believe, a amazing kickstart of something bigger.

    ReplyDelete
  10. I am excited about this list. However, if you cant list it on your resume, it almost kills the point. :(

    ReplyDelete
    Replies
    1. Ummm yeah, aside from being able to complete actual projects that you could put on a resume.

      Delete
    2. Mastering all this material would enable you to go to an accredited school and, assuming you found willing professors, test out of some or all of the corresponding courses at that school. (I tested out of a couple of my university courses, so I know with 100% certainty that it's possible.) Absent that, you could enroll in more classes per semester than a student who had to spend time absorbing the new material. You'd thus be able to complete a degree program more quickly and at less expense.

      Delete
    3. No need to get hung up on putting your education on your resume. I am someone who never got my degree, but count on my experience and knowledge. Going through the courses here, and others online, can only expand and better your knowledge. This is an awesome list and a great start. I, for one, cannot wait to see what the 'intensive list' looks like.

      Delete
    4. Agreed. paid 50k for a degree in IT / visual comm. When I graduated, all I learned was obsolete anyway. With the rapid expanse of tech, school curriculum CAN NOT keep up, making formal education essentially useless because they can not rapid deploy course materials as fast as the industry now changes.

      Delete
  11. If you have an idea, web app, mobile app, entrepreneurial venture that you want to explore and you want to bring it to market by yourself this a great way to do it.

    ReplyDelete
  12. You can also get an accredited Bachelor's degree online from the tuition-free University of the People: http://uopeople.edu/

    The revolution in education is happening.

    ReplyDelete
  13. Good list!

    Or you can create your own path using catalog of courses:
    http://www.eclass.cc/

    and user-created selections:
    http://www.eclass.cc/courselists

    ReplyDelete
  14. Why no MOOCS? Hello? EdX. Coursera? Harvard's CS50?
    What is this? 2006?

    But thanks for the links!

    ReplyDelete
    Replies
    1. Some of the courses you mention now charge. If a free and quality course is available and not subject to a varied schedule of publication, then it is preferred.

      Delete
  15. Very systematic indeed! Excellent work!

    ReplyDelete
  16. I would love to see this applied to other degrees also. It can be difficult to gather all the information when you are unfamiliar with the college process. Thanks for creating the list!

    ReplyDelete
  17. I guess i can quit school now

    ReplyDelete
  18. Any version control systems classes out there? I haven't seen it much in university syllabi, but it is SO useful in the real world. Also, there is an update on the iOS class that stanford does that incorporates iOS7.

    ReplyDelete
  19. Thank you for your generosity!

    ReplyDelete
  20. any ideas on how long this course should take assuming 5 lectures a week are completed?

    ReplyDelete
    Replies
    1. I imagine it could take at least a year or two, depending on how much time you have.

      Delete
  21. Good day is there anyway that I can get the entire free computer science Course in zipped file downloadable via torrent because I can't stream vids(can't afford better internet service) they stream for a few seconds then lag because its buffering and having everything on pc would be much easier for many who is interested in the course

    ReplyDelete
  22. I really needed something like this. I lost my interest in online courses for this very reason. There was too much confusion on where to start and where to go next. Thanks for the post!

    ReplyDelete
  23. Yo, dude, this is like, hella cool. I'm so doing this next year while I study liberal arts. This is like, great, man. Thanks. Like, seriously.

    ReplyDelete
  24. Some of the comments that were talking about how the curriculum could be much more extensive, motivated me to do a little research on the subject, and I ended up putting together a list of free courses that can help anyone trying to go deeper into a particular subject.

    I will post them as blocks below.

    ReplyDelete
    Replies
    1. Introductory Courses Name Institution Objectives
      CS50X - Introduction to Computer Science Harvard https://cs50.harvard.edu/ C, basic computer science
      C++ for C programmers UC Santa Cruz https://www.coursera.org/course/cplusplus4c C++
      Learn To Program: Fundamentals U Toronto https://www.coursera.org/course/programming1 Python, intro to programming
      Learn To program: Crafting quality code U Toronto https://www.coursera.org/course/programming2 Python testing and debugging
      Introduction to Computer Science 1 India Tech https://www.edx.org/course/iitbombayx/iitbombayx-cs101-1x-introduction-1447#.U3FOPnWx3To C/C++ Intro to programming
      Introduction to Computer Science 2 India Tech https://www.edx.org/course/iitbombayx/iitbombayx-cs101-2x-introduction-1448#.U3FOonWx3To C/C++ Object Oriented Prog.
      Intro to computing with Java HKUSTX https://www.edx.org/course/hkustx/hkustx-comp102x-introduction-computing-1690#.U3FPCXWx3To Java, intro to CS
      Intro to CS with Python MITx https://www.edx.org/course/mitx/mitx-6-00-1x-introduction-computer-1841#.U3FPDnWx3To Python Intro to CS

      Delete
    2. Basic Mathematics

      Principles of Computing Rice https://www.coursera.org/course/principlescomputing Mathematical Principles underlying CS
      Algorithmic Thinking Rice https://www.coursera.org/course/algorithmicthink Mathematical concepts of algorithmic thinking.
      Introduction to Logic Stanford https://www.coursera.org/course/intrologic
      Analysis of Algorithms Princeton https://www.coursera.org/course/aofa Calculus for precise quantitative predictions of large combinatorial Structures
      Analytic Combinatronics Princeton https://www.coursera.org/course/ac Formal methods for deriving functional relationships
      Statistical Inferal John Hopkins https://www.coursera.org/course/statinference Part of the Data Science specialization
      Data Analysis & Statistical Inference Duke https://www.coursera.org/course/statistics
      Linear Algebra Through CS Brown https://www.coursera.org/course/matrix

      Delete
    3. Data Structures and Algorithms

      Algorithms Part I Princeton https://www.coursera.org/course/algs4partI Java, algorythms, data types, data structures
      Algorithms Part 2 Princeton https://www.coursera.org/course/algs4partII Graph processing algos
      Algorithsms Design and Analysis Stanford https://www.coursera.org/course/algo

      Operating Systems
      Introduction to Linux Linux Foundation https://www.edx.org/course/linuxfoundationx/linuxfoundationx-lfs101x-introduction-1621#.U3FO1HWx3To Linux
      Operating Systems Saylor http://www.saylor.org/courses/cs401/ UNIX operating systems

      Delete
    4. Programming Languages and Methodologies
      Programming Methodology Stanford http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111
      Programming Abstractions Stanford http://see.stanford.edu/see/courseinfo.aspx?coll=11f4f422-5670-4b4c-889c-008262e09e4e
      Programming Paradigms Stanford http://see.stanford.edu/see/courseinfo.aspx?coll=2d712634-2bf1-4b55-9a3a-ca9d470755ee
      Computer Architecture
      Computer Architecture Princeton https://www.coursera.org/course/comparch
      Hardware/Software Interface Washington U https://www.coursera.org/course/hwswinterface
      Networking
      Computer Networks Washington U https://www.coursera.org/course/comnetworks
      Software Defined Networking GA Tech https://www.coursera.org/course/sdn

      Delete
    5. Parallel Programming
      Heterogeneous Parallel Programming Illinois U https://www.coursera.org/course/hetero Parallel GPU programming
      Massively Parallel Processors with CUDA Stanford https://itunes.apple.com/itunes-u/programming-massively-parallel/id384233322?mt=10#ls=1 Parallel GPU Programming
      Data Bases
      Introduction to Databases Stanford https://www.coursera.org/course/db Databases
      Intro to Modern DB systems Saylor http://www.saylor.org/courses/cs403/
      Advanced Databases Saylor http://www.saylor.org/courses/cs410/
      Cryptography and Security
      Building an Information Risk Mgmtn Toolkit Washington U https://www.coursera.org/course/inforisk structured risk management approaches
      Designing and Executing Info Security Strategies Washington U https://www.coursera.org/course/infosec applied information security knowledge
      Information Security and Risk Mgmt in Context Washington U https://www.coursera.org/course/inforiskman Defend and protect company information
      Cryptografy Stanford https://www.coursera.org/course/crypto Inner workings of cryptography on real world applications
      Cryptografy 2 Stanford https://www.coursera.org/course/crypto2 Inner workings of cryptography on real world applications

      Machine Learning & AI

      Machine Learning Stanford https://www.coursera.org/course/ml
      Neural Networks for Machine Learning TorontoU https://www.coursera.org/course/neuralnets Neural Networlks
      Natural Language Processing Columbia https://www.coursera.org/course/nlangp
      Natural Language Processing Stanford http://see.stanford.edu/see/courseinfo.aspx?coll=63480b48-8819-4efd-8412-263f1a472f5a
      General Game Playing Stanford https://www.coursera.org/course/ggp

      Delete
    6. And finally a few specializations and graduate studies...

      Specialization
      CyberSecurity Specialization U Maryland https://www.coursera.org/specialization/cybersecurity/7?utm_medium=courseDescripTop
      Data Science Specialization John Hopkins https://www.coursera.org/specialization/jhudatascience/1?utm_medium=courseDescripTop
      Fundamentals of Computing RIce
      Mobile Cloud Computing with Android https://www.coursera.org/specialization/mobilecloudcomputing/2?utm_medium=listingPage
      GaTech Masters in CS GaTech https://www.udacity.com/courses#!/georgia-tech-masters-in-cs
      Saylor Foundation Mayor in CS Saylor http://www.saylor.org/majors/computer-science/

      Delete
    7. Hey Pablo, thanks for all these great contributions! I'll include them in the updated intensive track post.

      Delete
  25. Harvard's This is CS50 course is great - updated every year (as of the last 3 years at least) and the professor is very engaging. They use mostly C, PHP, JavaScript, and the front-end langs.

    ReplyDelete
  26. Interesting! Based on this kind of on-line source package arrangement, we can list systematically other subjects in the same way, I am looking forward to a complete online uni which is equivalent with any offline uni

    ReplyDelete
  27. Nice list, looks like you did some good investigation! 3 questions:

    1. Are you looking to do something like this or did you complete a Computer Science program?
    2. What are your thoughts on accreditation / proof of what you've learned?
    3. What about the social aspect when you do something like this. In a normal program you get to meet fellow students and build strong relationships over the span of many courses.

    ps. I'm very interested in this as part of my work (p2pu.org) and feel welcome to ask questions or share ideas on our forum: thepeople.p2pu.org

    ReplyDelete
    Replies
    1. Hi Dirk, thanks. To answer your questions:
      1) I started teaching myself programming on my own just over a year ago. As I mentioned in the post, I've worked through three full courses from the list, and have done about half the lectures from a handful of others. Wish I had time to do more!
      2) personally, I tend not to get very hung up on things like accreditation, and am more interested in actual learning. You can get a college degree with relatively high marks and not actually learn very much in the process. On the other hand, there are people who are completely self taught who excel in their field. From personal experience, I can say that after gaining some real programming skills by working through a couple of these courses, those new skills helped me get a new job.
      3) That is a good point. But, there are also so many forums, IRC channels, websites with great communities! In addition (depending on where you live), there are very likely tech or programming meetup groups in your area, hackathons etc., where you can meet people with similar interests and talk about programming, computer science and the like.

      And thanks for the link.

      Delete
    2. AdminX, which 3 courses did you complete from the list?

      Delete
    3. I did the MIT Intro course, the UNSW Data Structures and Algorithms course and the Harvard Web Development class. I also got a significant portion of the way through the networking and IT security courses.

      Delete
  28. Education is important for us and buy essays with low prices. We make sure students get quality services.

    ReplyDelete
  29. AdminX, wow this is exactly the kind of information I've been looking for! Thanks! Great post and the comments have been really interesting too. I'm looking forward to seeing your updated course syllabus.

    You mentioned in a recent comment that you only started teaching yourself programming about a year ago and now you have a new job. Is this your first job in the field? Could you do me a massive favor and maybe share some advice or tips on how you managed that and what area your job is in? I ask because I've been studying some programming languages for the last few months and love it and I've decided that I would like to pursue a career in programming.

    I'm right at the most basic level right now, learning new things everyday but in August I'm moving to he US with my fiancé and I can't work for a year while I wait for my visa! My intention is to study my ass off for that whole year and the above outlined course seems like a great place to start. I've also found a number of other very useful resources that I will incorporate into a study plan. My question is how realistic is this goal? How possible is it REALLY to get a job in programming after a year or so of hard study? I've found many success stories but I'm dubious about this being the norm. What are the essential areas I need to study? How can I seperate myself from other applicants?

    I'm incredibly motivated but also pretty terrified at the prospect of putting in a shit ton of work with no reward. Any advice or tips from anyone would be greatly, greatly appreciated. Thanks.

    Oliver

    ReplyDelete
    Replies
    1. I made a lateral move within the same general field, but I landed the job (in administration) because of the programming skills I'd acquired over the previous year. imo, no matter what field you're in, programming skills would be a plus. Good luck with the move.

      Delete
  30. It would be great to have simillar compilations in other areas. I have seen this. Does anyone know any other?
    http://www.businessinsider.com/best-free-online-business-courses-2013-10#yale-financial-markets-with-bob-shiller-1

    ReplyDelete
  31. Thank you for all the time and effort you devoted to this! What a great resource!

    ReplyDelete
  32. How about an elective on Image Processing too? :) Great work nevertheless :D

    ReplyDelete
  33. Courses on Algorithms and data structure are fantastic, but there should be a course on Java Programming as well, as it is one of the most popular language of enterprise world.

    Thanks
    Javin

    ReplyDelete
    Replies
    1. I think there will be a separate course for java programming. That's my guess.

      Java Strings

      Delete
  34. Great list and thank you. I've been searching for something like this. Have you thought about converting the curriculum to a wiki? I suggest either start a new one or just add to this one: https://en.wikiversity.org/wiki/School:Computer_Science

    ReplyDelete
  35. This comment has been removed by a blog administrator.

    ReplyDelete
  36. This comment has been removed by a blog administrator.

    ReplyDelete
  37. Thank you so much for researching this article and putting it all together, as someone going back to school later in life it is most appreciated. I was really interested in the concept and have thrown myself headfirst into CS50. My question though is that while I can get a certificate through EDX for CS50, do the other courses offer a similar free or low cost form of accreditation so all my hours of study aren't wasted?

    ReplyDelete
  38. nice! this is simply awsome..keep up!!!

    ReplyDelete
  39. Online learning is the best method for programmers who are not lazy, free and self paced

    ReplyDelete
  40. Hi, I'm going to be starting on the introductory courses pretty soon, but I have a question; why should we pick 2 introductory courses instead of 1?

    ReplyDelete
    Replies
    1. Really, it's up to you. Typically, in the departments I looked at, the introductory courses for a computer science curriculum were two semesters long. Picking two of the courses above will also expose you to the teaching styles of different professors, as well as different languages (MIT uses Python, Stanford uses C+). I started with the MIT course, then moved on to courses that are further on in the curriculum, then I circled back and began work on the second semester Stanford intro course to reinforce the fundamentals and get a different perspective on things.

      Delete
  41. Among highest-ranked programs, I think UIUC's website has one of the cleanest list of Core classes for BS in CS. Most other top-ranked programs just have a messy list of requirements, or the course numbers are not listed with titles etc.

    Seems that most courses do:
    Intro to CS I & II(6.00/6.01 or CS50/51 equivalent)
    Discrete Mathematics
    Algorithms
    Data Structure
    Theory
    Architecture;

    Seems that most elite programs like Python; some places also use C or C++ to emphasize fundamentals.

    ReplyDelete
  42. Thanks so much for putting this site and content together. I'm looking for an online course that may cover the following material.

    Foundations of Systems
    Concepts and foundations of the key aspects of computer systems and networks are presented. Topics include computer architecture, data storage, data manipulation, program execution, operating systems, networking, internetworking, data abstractions, and database systems.

    ReplyDelete
  43. Needs more physics :D

    ReplyDelete
  44. Nice post. It is really amazing and helpful. Very subject oriented writing. anyway would like to add few more things to this discussion.. please have a look at this free online courses also for more helpful tips.

    ReplyDelete
  45. Hello There
    This site called CourseBuffet.com has something called degree paths which has interactive version of this article
    see : www.coursebuffet.com/degree

    ReplyDelete
  46. Is there any Master level course in Computer Science for free like this one.
    M already a bsc Graduate.

    ReplyDelete
  47. The link for 'Introduction to Computer Science and Programming Methodology: ' is no longer valid. I did recent take 'Computer Science 101' from Stanford Online, which may be the same or similar. Here is the link:
    https://lagunita.stanford.edu/courses/Engineering/CS101/Summer2014/about

    ReplyDelete
  48. This is a great article, really grateful for sharing

    ReplyDelete
  49. OOOOOOOOOOO who is crazy to learn all this things?
    Better stay dumb than fallout from train.... :)

    ReplyDelete
  50. thank you , this article helped me alot <3

    ReplyDelete
  51. Excellent presentation. Nice piece of sharing


    ReplyDelete
  52. Agree. This list is more like a curriculum for the first two years towards a university degree in computer science.

    ReplyDelete