> goes through all the hoops to teach themselves<p>The average course is 50 hours a week in class, plus 150 hours a week studying, meaning 200 hours total. So to repeat what I did, you would have to spend 200 hours studying graph theory, then 200 hours studying data structures such as trees and graphs, then 200 hours studying algorithms that operate on data structures as well as big O notation, then 400 hours studying calculus, then 200 hours studying discrete math, then 200 hours studying theory of computation, then 200 hours studying logic gates, ALUs and assembly language, then 200 hours studying mutual exclusion and critical sections, then 200 hours studying floating point numbers and data representation, and so on.<p>In my experience, it is quite rare to find a self-taught person who can explain what deterministic pushdown automata are, or what the elements of mu-recursive functions are, or how to find a function maxima with Lagrange multipliers, or how you can prove a problem is NP-complete through reductions. They might even have problems explaining exactly what the relation in a relational database is.<p>Usually self-taught people go straight to trying to learn Ruby or PHP or something. Their knowledge of CS is not very deep. There are exceptions, John Carmack has a better knowledge of C++, programming techniques, computer graphics and other areas then the average BSCS graduate. But he is very honest and open about what he knows and does not know, and what topics he is getting around to now.<p>One time I had lists of numbers (like "1 7 3 0 2 4 6" or "8 3 5 2 0 1") and had to make a hash of them. I suddenly thought, why not just turn the lists into Goedel numbers? I then did a Google search and saw other people had used Goedel numbers for hashes in similar situations. How many of those people were self-taught? Probably very few.