Saylor Foundation: Computer Science
saylor.org
saylor.org
Will I be awarded a degree, diploma, or certificate?
The Saylor Foundation is not an accredited institution
and therefore cannot confer degrees.
http://www.saylor.org/frequently-asked-questions/#q29Someone 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.
So, what was your point?
Anyone have links to similar types of sites with a good education roadmap?
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.
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.
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.
- 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.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'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 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.
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."
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.
stonnyfrogs (hellbanned) suggested:
I think that it is really cool, but should not be misrepresented as Computer Science academia.