

DIY Computer Science Degree - iamryandrake
https://github.com/iamryandrake/DoItYourselfCSDegree/blob/master/DegreeOutline.md

======
adem
I think this list is missing some important parts of computer science.

Here are the books that our university uses for first-year students combined
with books that I found to be useful:

Introduction to Programming (using Eiffel) [1]

Mathematics for Computer Science (or: Discrete Mathematics) [2]

Introduction to Datastructures and Algorithms [3]

Introduction to Digital Design [4]

Parallel Programming (using Java) [5]

Optional but highly recommended, you'll probably find it completely out of
scope:

Real Analysis I [6]

Real Analysis II [7]

Introduction to Linear Algebra [8]

Introduction to Physics [9]

[1]: [http://www.amazon.com/Touch-Class-Learning-Program-
Contracts...](http://www.amazon.com/Touch-Class-Learning-Program-
Contracts/dp/3540921443/ref=sr_1_3?ie=UTF8&qid=1396688827&sr=8-3&keywords=touch+of+class)

[2]: [http://ocw.mit.edu/courses/electrical-engineering-and-
comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/6-042j-mathematics-for-computer-science-
fall-2010/readings/MIT6_042JF10_notes.pdf)

[3]: [http://www.amazon.de/Introduction-Algorithms-Thomas-H-
Cormen...](http://www.amazon.de/Introduction-Algorithms-Thomas-H-
Cormen/dp/0262533057/ref=sr_1_1?ie=UTF8&qid=1396689336&sr=8-1&keywords=introduction+to+algorithms)

[4]: [http://www.amazon.com/Digital-Design-Computer-
Architecture-E...](http://www.amazon.com/Digital-Design-Computer-Architecture-
Edition/dp/0123944244)

[5]: [http://www.amazon.com/Java-Concurrency-Practice-Brian-
Goetz/...](http://www.amazon.com/Java-Concurrency-Practice-Brian-
Goetz/dp/0321349601/ref=sr_1_1?ie=UTF8&qid=1396689424&sr=8-1&keywords=java+concurrency+in+practice)

[6]: [http://www.amazon.com/Analysis-Texts-Readings-Mathematics-
No...](http://www.amazon.com/Analysis-Texts-Readings-Mathematics-
No/dp/8185931941/ref=sr_1_1?ie=UTF8&qid=1396689443&sr=8-1&keywords=terence+tao+analysis)

[7]: [http://www.amazon.com/Analysis-II-Texts-Readings-
Mathematics...](http://www.amazon.com/Analysis-II-Texts-Readings-
Mathematics/dp/818593195X/ref=sr_1_1?ie=UTF8&qid=1396689499&sr=8-1&keywords=analysis+ii+terence+tao)

[8]: [http://www.amazon.com/Introduction-Linear-Algebra-Fourth-
Gil...](http://www.amazon.com/Introduction-Linear-Algebra-Fourth-
Gilbert/dp/0980232716/ref=sr_1_1?s=books&ie=UTF8&qid=1396689522&sr=1-1&keywords=gilbert+strang)

[9]: [http://www.amazon.com/Fundamentals-Physics-Extended-David-
Ha...](http://www.amazon.com/Fundamentals-Physics-Extended-David-
Halliday/dp/0470469080/ref=sr_1_1?ie=UTF8&qid=1396689544&sr=8-1&keywords=physics+halliday)

~~~
iamryandrake
Thanks so much for this list! What's your Twitter handle I can follow you on?

Have added this list to my project!

~~~
adem
Unfortunately I don't use Twitter anymore. Good luck with your journey!

------
tmerr
If you want something closer to what you'd expect of CS from a college check
out MIT OpenCourseware, it should have everything you need for undergrad CS

~~~
iamryandrake
Yep, working on incorporating more of those videos and course notes into my
own structured plan! Thank you :)

------
thomas_r
A bit of advice from someone who is trying to do the same:

\- Learn one language/ platform at a time. Also, think about what you want to
learn. Web development? Mobile? CS fundamentals? It is very easy to waste alot
of time when your are not focussed on a particular goal.

\- Try not to get tricked into spending to much time on those fancy looking
tutorials. Building something yourself is much more valuable than obtaining
meaningless 'badges' and achievements.

\- Ruby on Rails is complex and I would not recommend it for beginners. I
wasted alot of time doing tutorials that covered random parts of rails that I
never used in projects. Again, if you want to learn Rails, start your own
project as soon as possible and select learning materials based on that.

\- Stick with the basics. Try not to get distracted by frameworks, tools and
the overwhelming amount of tutorials available.

for javaScript, have a look at this:

[http://javascriptissexy.com/how-to-learn-javascript-
properly...](http://javascriptissexy.com/how-to-learn-javascript-properly/)

Ruby / Python:

[http://learncodethehardway.org/](http://learncodethehardway.org/)
[https://www.udacity.com/course/cs101](https://www.udacity.com/course/cs101)

rails
[http://guides.rubyonrails.org/getting_started.html](http://guides.rubyonrails.org/getting_started.html)

good luck

~~~
iamryandrake
Agreed Thomas! Thanks for your input.

I am learning for the sole intent of then being able to immediately put into
action what I've learnt within the startup environment and also contribute to
open source projects where I can :)

What are you learning?

------
adamnemecek
Programming != CS.

~~~
pmtarantino
This. After finishing a BS in Maths, and with coding experience, I started a
degree in Computer Sciences, thinking that I would know the most of it because
I was coding since I was 15.

The truth is nope. You see a lot of things besides coding, with seems to be
more important than to do a a while, compile a program or use a library. You
learn the WHY, which most of the time is more important than the HOW.

~~~
iamryandrake
That's totally true.

I agree, so I'm also going to do some of the MOOC CS courses as well, coupled
with working at a startup.

I'm trying :)

------
codez
This comes across as more DIY Web Dev.

CS degrees are not so much about programming, as some people have stated. More
so theoretical understanding, logic(which is important IMO), best practices on
projects, approaches(agile etc.). The programming that is touched on will be
an intro to an OO language. Generally, most CS students are expected to learn
programming in their own time on their own accord in order to complete
assignments etc.

------
sAuronas
I am 3,000 hours into the DIY phase myself, so I appreciate your list.

I think Effective Objective-C and Effective JavaScript (as well as the "Good
Parts" and "Secrets of a JS Ninja") were good books.

Also, the C book, since it is difficult to understand Objective-C without a
firm grip on C. Although, there are certainly more recent and easier books on
C to read.

~~~
iamryandrake
Thank you!

Which book is "THE C Book" you refer to?

And how have you enjoyed your DIY journey so far?

~~~
sAuronas
I'm sure it would be easier if I had a mentor or at least a friend...but I'm a
loner so I'm taking my lumps the "hard way". It's been cool I love learning
this even at my advanced age.

------
ekm2
Not even a mention of Data structures and Algorithms

~~~
iamryandrake
Depends on what you ultimately end up doing at the end of your study, I
suppose!

I'm going to go through the MIT OpenCourseware stuff on this to begin with.

What have you found most helpful? Do you deal with algorithms everyday?

~~~
kylemaxwell
The point is that you are conflating "slinging code" with "computer science".
To paraphrase an old truism, you're talking about pointing a telescope and
we're talking about astronomy.

