Ask HN:Self Education:I am totally confused
I am interested in being truly good at both computer science and programming,but i cannot seem to come up with a solid model of education.In Mathematics,i know that i should read Spivak,Rudin,William Feller and all the other masters.In physics,it is the Feynman Lectures starting with Mechanics,Electromagnetism and onto Quantum Mechanics.The logical coherence breaks with CS and programming.Here is what i have learned:
A.Begin with python and then feel free to read anything else
B.The Joel Spolsky Approach:C.O.D.E,K&R,SICP and then anything else
C:Matt's "What every CS major should know
D:Learn the current fad:HTML5,Ruby,NodeJS etc
Is it possible to get the kind of coherence present in Math and physics?
5 comments
Should look close to this:
+++Computer Science I: Programming Methodology (http://academicearth.org/courses/programming-methodology)
+++Computer Science II: Programming Abstractions (http://academicearth.org/courses/programming-abstractions)
+++Computer Science III: Programming Paradigms (http://academicearth.org/courses/programming-paradigms)
Of course you can throw in there:
+++Introduction to Algorithms (http://academicearth.org/courses/introduction-to-algorithms)
+++Data Structures (http://academicearth.org/courses/data-structures)
+++Computer Science I: Programming Methodology (http://academicearth.org/courses/programming-methodology)
+++Computer Science II: Programming Abstractions (http://academicearth.org/courses/programming-abstractions)
+++Computer Science III: Programming Paradigms (http://academicearth.org/courses/programming-paradigms)
Of course you can throw in there:
+++Introduction to Algorithms (http://academicearth.org/courses/introduction-to-algorithms)
+++Data Structures (http://academicearth.org/courses/data-structures)
I think the problem with finding a one true path is that computer science, as a concentration, has many different avenues.
You could focus on developing for the web and work with tools that make dealing with the challenges of the internet easier.
You could focus on developing for a computer system, writing in low-level languages that help you take advantage of a system's hardware.
You could even focus on developing for an integrated circuit that doesn't even qualify as a full "computer" to most people.
Each of these avenues will lead you to different languages, tools, and paradigms.
So, the (rhetorical) question is, what are you trying to accomplish?
You could focus on developing for the web and work with tools that make dealing with the challenges of the internet easier.
You could focus on developing for a computer system, writing in low-level languages that help you take advantage of a system's hardware.
You could even focus on developing for an integrated circuit that doesn't even qualify as a full "computer" to most people.
Each of these avenues will lead you to different languages, tools, and paradigms.
So, the (rhetorical) question is, what are you trying to accomplish?
I would say look at either MIT's open coursware or Stanford's online CS classes. They don't cover all of the good stuff, but obviously they are a very good foundation. From there you will pick up what are considered seminal text's in the field.
[deleted]
I am in a similar position to the OP, although I am learning c++ as a first language. It seems like most of the open-courseware type programs are either scheme (old mit)/java (stanford)/python (new mit). Seeing as what im interested in (computational finance/bio) is mostly C/C++ that's why I'm going with C++. If anyone thinks im crazy and should switch to another language or anything else that I should be looking at I'd love to know.