What are good science courses?

What online courses should/can a non-CS student take in order to become relatively proficient in the field of Computer Science?

  • Barely had any relevant courses related to CS. What all online courses can I take up that can be somewhat equivalent to an average CS student? I understand it's a very broad field and you wouldn't be able to get the same level of education from an online course and perhaps not even just a book. But if you had good suggestions to start off that would be great. Please note: I am referring to the CS field and not just learning programming. Also, please try to mention the "level" of the courses. All I notice is "Introduction to ..." courses online.

  • Answer:

    Coursera's the way to go for "more than just programming", although I certainly went the traditional route myself.  Here's the courses I see that would be worth considering to get to a Bachelor's level of CS education: Well, I looked over the course descriptions of Coursera and Open Courseware and picked out a decent CS-curriculum.  I went with mostly Coursera because Open Courseware is more of a "take it or leave it" deal: Coursera Computer Science 101 Learn to Program: The Fundamentals Computer Architecture Introduction to Logic Algorithms: Design and Analysis, Part 1 Algorithms, Part 1 (Concentrates more on data structures) Algorithms, Part 2 Compilers Programming Languages Introduction to Databases Computer Security Cryptography I Open Courseware Computer Graphics Operating System Engineering Distributed Algorithms I'm only going to do so much for you, but on top of this, if you wanted to match what you generally get in CS, you'd want to take two courses on calculus, plus another on multivariable calculus, and probably one on differential equations.  Also one on linear algebra and another on discrete math.  Most CS majors take some sciences too, like chemistry or physics.  If you're doing this on your own, that's up to you.  And if you wanted to be sillier, you can throw on some online psych courses for your "electives" :)

Scott Danzig at Quora Visit the source

Was this solution helpful to you?

Other answers

I think Coursera would be the optimal place to start with. I am not sure what your background or particular interest in CS is. Some introductory level classes are 1)Introduction to Programming (where you learn a specific programming language to learn about "programing") and 2) Data Structure where you learn about queue, stack, arrays, sorting algorithms, etc. 3) Discrete Math (very relevant to CS and engineering). 4)Intro to Digital Circuit (where you learn about boolean algebra and digital circuit, - the "hardware"side of computer. 5)Machine Language (basically learning how computer operate at very low level, and learning to program at very low level - in binary / hex numbers) Some of the upper level undergraduate courses are 1)Database, 2)Operating System, 3) Compilers, 4)Computer Architecture, and 5)Algorithms. There are many others including 1)Artificial Intelligence, 2)Network, 3) Crpytography, etc. It can be frustrating and difficult in two ways - 1) learning programing languages, 2) mathematical thinking. Even though you are gifted with mathematical thinking, you still have to learn the programming language (grammar, syntax, etc). Math classes directly related to CS are 1)Linear Algebra and 2)Discrete Math... There are soooooooo many areas where you can apply CS. If you enjoy coding / programming, just go to university websites(HCI, Information School, Bioinformatics, etc) and see how they are used. Going into CS doesn't necessarily mean you are stuck with what's been discussed above. You can work with graphics, data visualizations, healthcare, etc.

Jun Bum Kim

Well, to really learn about computer science on the level of an average cs student, you need to learn a lot. You could really look up the curriculum at a good school and try to find those online courses. A brief rundown however: Math. Most CS majors require a good amount of math. Calculus is generally not so important, but linear algebra is, as well as statistics. Combinatorics is also important. Alot of times the math for computer scientists is called discrete math, in which they teach combinatorics, graph theory, set theory, number theory, etc. This also includes a lot of logic, and not just computational math. Theoretical CS. Theory of Computation and Algorithms mainly. Preferably more than one class in algorithms. Programming/Software Engineering classes. A lot of these. Their titles vary. Classes on program design, specific languages, specific platforms, etc. You want to be very strong in at least one language, and significantly comfortable with a few others. At my school we take at least 3 courses in Java, with numerous other courses available in Java as well. We also take two intensive courses in C, which is important because C is everywhere. There are also a significant amount of courses that use functional programming languages. I would say become strong in a popular language (Java, C++, C), make sure you get good exposure to C, because it's everywhere, and spend a good amount of time with a functional programming language (Haskell, OCaml). After you learn these, you are free to explore, but it's important to get a foundation and survey the field. Low-Level/Hardware classes. These are classes that teach you how a computer really works. Learn about processors and memory and assembly code. Compilers, Interpreters. You want a good foundation here, so you understand whats going on under the hood. Also, these classes are some of the most enlightening classes in the CS curriculum, though some people hate them. Make sure you're still programming, and not just memorizing things and taking tests. After you take these courses, explore what you like. AI, Machine Learning, Web Development. Go more in depth with something you learned about. CS is hard, and time consuming. You learn by doing. So make sure you always are doing projects and coding often. Push yourself. I would start with a good, intensive programming class, along with a theoretical class, and take it from there.

Cj Cobb

There are many courses you can take, though the ones that I consider truly mandatory would be Algorithms, Operating Systems, Computer Architecture and Compilers.

Anonymous

There are some good lists of specific courses in other answers. In case it is useful for you I have attached a diagram that I put together recently summarising various areas of Computer Science. I worked on this as I am planning to do a Masters degree in Computer Science (http://www.open.ac.uk/postgraduate/qualifications/f66) without having done a BSc and wanted to identify gaps left from the study I have done through Coursera / Udacity / Edx and experience at work so that I can focus on these areas before the course starts. The colours are just my way of highlighting where I have the most ground left to make up, the size is intended to represent the importance of the area (at least to me - other people will have different ideas about the relative importance): (https://www.gliffy.com/go/html5/6089223?app=1b5094b0-6042-11e2-bcfd-0800200c9a66) I would love to hear any comments on areas anyone thinks that I have missed (especially if there is a general expectation that it should be covered as part of a CS BSc degree).

Chris Prosser

I'm a former Computer Science student at RIT, and I can't afford to go back to college, so I'm taking MIT OCW for Computer Science right now.  I'm trying to follow along with what Scott Young did at http://www.scotthyoung.com/blog/mit-challenge/, but instead of getting a whole "degree" in one year, I'd rather take my time and have good understanding of the subject.  Here's my recommendation for getting started. I haven't taken the new format, but I recommend Khan Academy for learning the basics. Next up, I prefer someone starting out taking Saylor's CS Curriculum.  If you want hard core, take Harvard's Intro to CS course.  I'm even harder core than that, so I'm trying to mimic Scott Young's MIT Challenge.  I stay away from Codecademy, LearnStreet, Lynda, and TeamTreeHouse, since I'm trying to learn a balanced Computer Science curriculum, not learn various random technical skill sets with no ultimate goal.  1) https://www.khanacademy.org/computing/computer-programming 2) http://www.saylor.org/majors/computer-science 3) https://www.edx.org/course/harvardx/harvardx-cs50x-introduction-computer-1022

Kevin Larsen

How about starting here: https://www.edx.org/course-list/mitx/xseries-courses/allcourses - these belong to a series of MITx's Foundations of Computer Science https://www.edx.org/xseries Or you can look here here: https://www.coursera.org/specialization/fundamentalscomputing/9 - a Fundamentals of Computing specialization. Both of these require knowledge of high-school mathematics. If these start out too fast, you can always start with Codecademy http://www.codecademy.com/ or HTML Dog http://www.htmldog.com/ . You can also try reading this: http://www.scotthyoung.com/blog/mit-challenge/; although Scott H. Young has had experience with programming prior to starting his challenge (and of course no-one is saying you need to do the classes at his speed), it may give you some ideas as to what you'd need to include if you wanted to build a curriculum on your own. I hope that helps, and happy learning!

Katarzyna Wrona

For a non-CS student (like me), taking full computer science courses online (like CS50X from edX) can be straight up daunting.  I am currently learning to be a web developer right after finishing college, and I have found that using online resources for complete beginners like Treehouse (http://teamtreehouse.com) and Code School (http://codeschool.com) helped me familiarize myself with syntax and programming languages.  This has made taking Computer Science courses online much easier and efficient.

Swati Kumar

I am from a non - CS background and I will strongly recommend(beg) anyone who wants to start with CS to take Harvard's introductory CS course on edX(https://www.edx.org/course/harvardx/harvardx-cs50x-introduction-computer-1022). I have been taking CS 101 on udacity and though that was also phenomenal (haven't completed yet) but CS 50 hands down is the greatest online course I've come across. Especially for CS. The simplicity of the content just blows me away. The course professor, David Mallan teaches with such contagious excitement, you will truly fall in love with it. The course gets into your mind at a level where you have actual dreams about coding(not an exaggeration). This actually happened to me, and i discussed this with some fellow students and some of them have had the same experience! It is really difficult to get something into your sub-conscious, but the course does that. That is the genius of the staff. You can actually go to the course's reddit discussion page and see student's feedback there: http://www.reddit.com/r/cs50. The 2014 course is underway right now and it is self paced, so you can start it anytime, the only hard deadline being 31 december, 2014. No matter your age, background, literacy  and other things, if you are even thinking of getting to know CS, go dive into this course. I would recommend this, hands down.

Anonymous

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.