4 ms·
Doing a BS in CS would be the best, otherwise you will need a ton of self-discipline to learn even a half of what you would learn in a degree program. If you de
by stiff 13y ago
Doing a BS in CS would be the best, otherwise you will need a ton of self-discipline to learn even a half of what you would learn in a degree program. If you decide to self study, and have enough "mathematical maturity", you will find everything you need on MIT OpenCourseWare, they have all the core courses available online with video lectures, solved homeworks etc. I would start with going through those two first:
Structure And Interpretation Of Computer Programs:
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/ http://ocw.mit.edu/courses/electrical-engineering-and-comput...
Mathematics For Computer Science:
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/video-lectures/ http://ocw.mit.edu/courses/electrical-engineering-and-comput...
The first one is pretty much a master class in software engineering, the other prepares you for studying algorithms, I would consider those the two main more theoretical facets of programming at a professional level. With that background you can try to work on their algorithms course:
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/ http://ocw.mit.edu/courses/electrical-engineering-and-comput...
It would also be very valuable to eventually take all the core mathematics subjects from OCW: Single+multivariable calculus, linear algebra and probability theory - the profit is less immediate but those things do come very useful. All those six courses on the MIT OCW are top notch.
- dizzystar 13y agoThis is how I am doing it. Currently working through CLRS, but I don't really like the lectures. Also taking Linear Algebra, which is just amazing, btw. Others have suggested Coursera, but so far, I don't think it is prime time for those who are really serious. I've found that many of the classes are somewhat watered down and I feel as though I am reviewing concepts I already know instead of learning. Too bad there is no mention of EdX here. Their classes are much more intense, complete, and CS-heavy than anything I've seen from Coursera. The grading system is far superior as well. I wish EdX had more love, but maybe the problem is that it is too intense. A note one SICP. There is so much in that book and it is certainly worth every moment. Just expect to grind long time with it. I wasn't sure how much I really learned from the book until I started making my own projects. I was quite astounded to see how much really did sink in and how much I just understood without any extra searching. I was also saddened to see how certain programming languages don't bend to the ideals found in that book.
- flatline 13y agoIt is hard to beat a good CS curriculum with real teachers, peers, assignments, tests and grades. These things don't work well for everyone, and the pressure can be pretty intense at times, but damnit that pressure can really burn stuff into your neurons that would otherwise go in one ear and out the other. The overlapping of topics and repetition of important concepts are also typically lacking in a self-learning environment, and these things really helped me to pick out what was important in terms of building blocks for more complex things. Coursera et al. are great, they fill a niche, just probably not what you are really looking for.
- mindcrime 13y agoIt is hard to beat a good CS curriculum with real teachers, peers, assignments, tests and grades. I dunno... I think it depends on the individual a bit. OK, to be fair, I did drop out before finishing my B.S., but up to where I was at, I can honestly say that I learned 90% or more of what I learned, outside of class, reading and practicing on my own. The only class I really remember the teacher's explanations helping a whole lot, was in certain parts of Discrete Math. I could be wrong, but I feel like some people are just "wired' for teaching themselves stuff, learning from books and videos and websites, and then throwing the occasional question up on the Theoretical Computer Science Stack Exchange[1], or /r/askcomputerscience or whatever. At the very least, I would posit that most people can learn an awful lot through self-study. Maybe not enough to do ground breaking research in C.S., but certainly enough to bump up their knowledge of the "basics" to where they aren't clueless when somebody else in the room starts talking about algorithmic complexity or finite state machines or whatever. [1]: cstheory.stackexchange.com [2]: http://www.reddit.com/r/askcomputerscience http://www.reddit.com/r/askcomputerscience
- ChuckMcM 13y ago+1 to this, they distill the 'tricky bits' into examples and homework problems so you move through the common cases as efficiently as possible. If you actually get the degree it will save you a lot of talk time in interviews and take away your primary disadvantage with the 'big guns' (who basically won't hire you to do theoretical CS type problems without one since they have a bunch of people with CS degrees already applying and so the risk that you're assertion you've done all the work is eliminated by hiring someone with a certificate from a third party saying that you have done all the work) Without a CS degree you're path is to join doing something non-CS critical and then using networking and influence inside the company to move into the role you want. Takes longer and not as quick until you get to the 'fun stuff.'
- jophde 13y agoWould you recommend taking the math classes before starting the classes you pointed out? I only have had Calc 1 and discrete math before.