Not sure I understand what you're saying here. Let's recap.
Someone posted a link to the Saylor site. That's prefectly reasonable, and it appears to be a perfectly valid site. It's not a scam, it costs nothing, but, as other comments point out, the content can be a little patchy.
The title the submitter used was "Get a free CS degree". That's not true, because as the site itself says, it's not accredited, so it can't award degrees. That doesn't detract from the content, but it does mean the title is wrong and misleading.
I posted a reply pointing out that the site itself says it doesn't give degrees.
my point is that the poster harms the site by posting this title. whats your question this is str8forward. next thread i post "free candy" but u must pay for candy -> fail. i actually like the site
This site appears to fulfill one of the problems I've had with the various open courseware sites -- where to get started, and how to organize the learning. However, I'd like to see it go a step further, and organize the individual courses in a particular degree program into a real schedule. For example, I'd like to feed in how many hours a week I have to study, and have it produce a schedule of which courses should be taken together, in which order, and possibly a class schedule -- "spend one hour on section 2.3 of class foo, next spend 1 hour on section 1.7 of class bar", for example. Or at least break out the classes in groups that can be taken together, similar to semesters in a regular college program.
Anyone have links to similar types of sites with a good education roadmap?
Not accredited, but I applaud the effort. However, I decided to check out CS 101 to see what they were offering. I am compelled to slog through the entire course to form a full opinion but the content seems to have been assembled from ninth grade term papers. The first two reading exercises contain very little in the form of correct grammar, proper spelling, and coherent thought.
As someone with a Science degree, but working as a software developer full time I've always wondered if I'm missing something by not having a CS degree. Certainly not enough to go back and get an actual degree, but would something like this would be worth my time?
A degree ensures you have learned all the basics which experts in the field believe you need for a solid foundation. It answers and formalizes the "I want to do/be X, what must I learn?" question. Yes, doing something like this would be very much worth your while; I've got two (accredited) degrees in the subject, and still might just run thru this as a refresher.
Time and again over two decades, I've seen self-taught software developers do well, yet stumble into educational gaps/traps any degreed developer would have learned to avoid. All too often they can't perceive what's missing because they're not aware of the advanced material which retroactively fills those gaps. A formal education includes a lot of "do it this way, you'll understand later" which was learned via tremendous cost in hours, effort, and money in the industry, stuff which the self-taught by definition are unaware of and can only (if ever) learn the hard way. It also includes a lot of "there are other ways to do this" that one won't pursue unless compelled, and thus expands the toolbox. It's also embarrassing for the self-taught to go years without learning something which is standard first/second-year material (like having a self-appointed software architect get all excited about discovering state machines, and proceed to implement them in an inappropriate manner).
Do it. Fill in the gaps you're unaware of. Listen to people who say "trust me, you really do need to do it this way, even if you won't understand why for a while." Yes, you can learn it all on your own, but it will likely take longer. Life is finite.
"It answers and formalizes the 'I want to do/be X, what must I learn?'"
I can't speak for your program, but at no point in my computer engineering undergrad did anyone answer or even try to address that question. Curriculum is enslaved by "accreditation."
> yet stumble into educational gaps/traps any degreed developer would have learned to avoid.
Care to list some of the common ones you've seen? I'm mostly curious, but it would serve as a good reminder for those who may fall into those traps themselves.
I don't know about gp, but the most common ones I see are:
- Algorithmic complexity analysis ("big-O")
- Being trapped in a single paradigm
(e.g. loops vs. recursion)
- Not understanding the underlying hardware / protocols,
what they guarantee, and what they don't guarantee
- Software design knowledge can be spotty; someone might
know about high-cohesion design, but not know about
use-case analysis.
- Not valuing version control, though this is rare now
it used to be very common
Now, it's not at all true that every self-taught developer has all of these problems. Some have none of these problems; they are just the most common I've seen.
To me this reads like a list of problems of self-taught programmers who've only ever worked on their own.
I've met a fair few old school programmers who were around before CS courses really took off, they know everything on this list.
I disagree with all but the third, and I especially disagree with the 4th, the worst designed programs I've seen were written by CS trained people. They try and implement overly complex models because they've been taught them. Pure experience trumps book knowledge every single time in software design.
I know I have gaps in my knowledge, but if that's the best you've got I'm still happy I got a Philosophy degree!
You're absolutely right that every one of these problems tends to go away with time; that was the one disclaimer I forgot. The more dev work someone has done, especially on collaborative projects, the less likely they are to have these problems.
You're also absolutely right that CS training isn't a panacea. Actually I tend to suggest math or electrical engineering training to people looking to get into the field. CS programs tend to overcorrect in some areas. For example, new CS grads often want to overuse regular expressions.
Just the same, at my first internship I has bosses with Bachelors or Master degrees in CS that had those problems. One went so far as to call version control itself "a problem"...
I think its really up to the individual person to gain those skills. If you don't care the concepts won't mean anything, even if they're spoon fed to you by a university professor.
i'm only 23, but knowledge gaps I've seen in friends/coworkers without degrees are compilers, what needs to happen to go from c to machine code, and to a lesser extent calculus/linear algebra, discrete math, and the stuff covered in an upper division algorithms class.
I think it depends on the person. I'm self taught but I know the rudiments of compiler design and significantly more mathematics than is covered by a standard comp sci course which tend not to get into topology, analysis, or set theory.
Ask 10 people this, get 10 different answers based on their own decisions and experience. Since you asked, mine is this; Yes. Again - this is all based on my own empirical experience - but I've noticed that devs who don't have CS degrees are as good (or better at, sometimes) solving problems themselves...but they tend to fall on their faces (sometimes with disastrous professional consequences) when it comes to recognizing "archetypes/patterns" of problems that have already been solved or have proven approaches. When I was getting my CS degree I rolled my eyes in boredom at all the algorithm and data structure analysis courses, but years later I think that was probably the most valuable part. Glancing at this "curriculum" from Saylor it looks like they cover that stuff - so if you have extra time, go at it - I probably will myself just to brush up.
^ This. It depends on the kind of software you're interested in writing. Algorithms, datastructures & complexity analysis is imo arguably among the most valuable of the bunch due to its broad applicability. This is for instance particularly useful when writing software that needs to scale and perform well, e.g. server/system software.
In short, I feel there is merit to each CS course but want to underline that it's information you can self educate yourself on should you be so inclined to do so. Attending a CS major however helps with keeping one motivated. That brings me to imo the most important point of attending a traditional CS major: meeting fellow CS'ers to do a startup with :) I think that has been the most valuable CS experience for me. That's something I kinda miss with this "new era" of online courses.
I had a CIS degree (not exactly computer science but some overlap) and I'd say some of the most helpful material I read to get myself on par with day-to-day developers was related to algorithms, data structures, and design patterns (the GOF book is very course-bookish but there are friendlier head start books if you're just getting into it).
To be honest though I'd say the best learning material I experienced was just surrounding myself with people who know more than myself. Ask for code reviews (don't just get forced to do them) from people you know to be excellent developers (not the easiest thing to spot when you're green though).
Also never stop learning whether it's through a degree or online through one of these sort of courses.
A working knowledge of algorithms and data structures will benefit you, but you might well be better off reading a book than following this. For the rest I really wouldn't bother; Compilers is an interesting way to learn some things, but not terribly applicable, everything else is stuff you'll pick up yourself or don't really need.
I believe that Michael Saylor announce this about 13 year ago (in 1999). If I remember correctly, he had a column in Newsweek or Time talking about it. Then Microstrategy's stock tanked (they had to restate their earnings), and his fortune pretty much vanished overnight.
It's interesting to see how much has happened in the past 13 years, and how technology has made this kind of thing feasible. The proliferation of high-quality online educational companies (Khan Academy, Udacity, Coursera, etc...) has made it possible to get a real education online. It isn't quite equivalent to live education, but the best online education is definitely getting close.
Love the idea. If only they were accredited. I don't need to learn CS. I just need that piece of paper as I skipped a step and went directly into the workforce... shrugs
I might eventually do some proper computer science study but I don't feel like I need it for now.
I'm currently studying for a degree in motorsport & design engineering and when I graduate I intend to build products using the knowledge from there.
Knowing how to code properly is all fine and well but getting an industry specific degree and being able to code a product for use in it, I feel, is much better.
I must add that apart from CS they do have coursers for other disciplines like Chemistry, Art, Economics, Mathematics, Political Science etc. So, I guess the appropriate title would be "Free Education in multiple disciplines like CS, Mathematics etc."
So if I were to spend 10 hours a week teaching myself Javascript, PHP, Python or 10 hours a week studying computer science what would you recommend that would benefit me the most in 5 years and allow me to build web applications from scratch?
https://www.open.ac.uk/ offers a "Computing and IT" degree and mathematics degrees, which I believe you can study from outside the UK. I'm not sure how much CS there is in them, though.