# Sticky  Free online programming/CS courses for beginners



## unkleduke

I see a lot of threads asking where/how beginners can learn programming. I'm trying to teach myself this as well and thought I'd share what I've found so far.

Many of the top universities offer full online courses for free. Harvard, Stanford, and MIT in particular, have a great selection of CS courses you can take at your leisure and at no charge. Check out my github link towards to the bottom for my solutions to some of these course's problem sets.

I hope this helps others like myself who'd like to learn to program on their own time AND FOR FREE!!!

-----------------------------------------
*Free Courses & Lessons:*
Harvard's intro to Computer Science - CS50
Harvard's Building Mobile Applications - CS76
Stanford's Intro to CS with a focus in Java - CS106A
MIT's Online Computer Science courses - HERE
More free online courses from major universities - coursera.org
Great Selection of CS courses and more - saylor.org

codecademy.com - Interactive tutorials for programming beginners.
udemy - do a search for android (offers both paid and free courses)
Android Bootcamp - in-depth video lectures on Android development
Khan Academy - Intro to computer science
Udacity - Lots of free CS courses

Lots of various free ebooks on programming and other computer topics: http://stackoverflow...ogramming-books
and more here as well: http://learncodethehardway.org/

Game development tutorials with the libgdx game framework: http://code.google.c.../VideoTutorials

Android Developer Training - https://developer.an...ning/index.html

Google Code University - Android http://code.google.c...roid/index.html
The New Boston Programming Tutorials http://www.thenewboston.com/ - Android specific HERE
Java Video Tutorials http://www.javavideotutes.com/lessons
In Depth Java readings http://math.hws.edu/javanotes/

-----------------------------------------
*Practice Coding*
http://codingbat.com/
http://projecteuler.net/
-----------------------------------------

*MY PERSONAL SOLUTIONS TO ONLINE COURSES:*

*Link --> github *
*codingbat - (Java Section - completed) *
*Harvard CS50 - (completed)*
*Stanford CS106A - (completed)*
*Stanford CS106b - (completed)*
*Stanford CS107 - (completed)*
**note, I'm still a beginner so take these for what they're worth. Feedback / bug reports welcome. *
-----------------------------------------

*MY PERSONAL RANT ON LEARNING TO PROGRAM:*

In my experience, there are at least two ways to learn programming. One is to simply start reading basic tutorials in a particular programming language (C, Java, Python) while writing simple, but increasingly complicated programs. To go this route for Android development, it is very difficult. Not only do you need to learn Java, but also how Java works with the Android environment. Many people have done this though and there are a lot of tutorials for you. In particular, thenewboston.com has a nice selection of video tutorials on Java and Android. You can follow along with the videos and then use these skills to write applications of your own.

The other way to learn programming (and the way I chose after getting a little frustrated the other way), is to work through the available college courses online. These courses give you a much more broad introduction to computer science and programming. The courses teach you to code, but what they really teach you is the general theory of computer science. It doesn't matter what programming language you use or if you want to write Android apps, desktop applications, video games, Iphone apps, or radar tracking software. The concepts of computer science apply to all of these scenarios. Harvard's CS50 is the best introduction to computer science I have found, although there are plenty of others from major universities. After an intro course like CS50, you can go on to more specific courses on data structures, algorithms, operating systems, etc. This route takes much longer, but I believe will make you a better self-taught programmer in the long run. You will have a better understanding of what it takes to program and what your code is doing "under the hood". It will also give you perhaps the most important skill... the ability to quickly teach yourself new programming languages and environments. If you dedicate yourself to only one language or platform, you will be very limited in what you can accomplish, but truly understanding computer science will allow you learn new programming tools quickly.

I initially learned to program because I wanted to be an Android developer, but I have since written many applications in many different languages. Android mainly uses Java, but working through the courses and websites I have programmed in C, C++, Javascript, Python, PHP, Scheme, Assembly, and more. I have made Android apps, games, web applications, business applications, and media apps. The best part is, I'm still a beginner myself, but I feel I have already learned and accomplished a great deal with learning to program.

My last piece of advice is to go with what comes the most natural to you as an individual. There is no set way to do anything. Do what you enjoy and what keeps you interested/motivated. Look to others for help when you need it. Stackoverflow, reddit, and here at Rootzwiki, there are plenty of people willing to help. And stick to it! You will get frustrated or perhaps bored at times, but your successes and breakthroughs will be well worth it.

/rant


----------



## Tbaybe02

ooooh nice to know!


----------



## 1madfitter

Free? From Harvard? Never knew those 2 words could co-exist?? Cool though, now I have to read.


----------



## OldManRiver

Thanks, this is just what I've been looking for!


----------



## bdemartino

Thanks for sharing!


----------



## Guest

Read this early right after u posted. Im actually looking at the HTML5, Android, IOS one now... its kinda cool. Videos are taking awhile to load for me tho. Shotty connection at work. Great post!


----------



## Jmoney4769

Would this produce better results than the book on java programming I torrented?


----------



## Browncoatsd

Thank you so much...was bout to drop $40+ on books to start teaching myself


----------



## RasJacob

Wow, awesome. Thanks for posting this. I will definitely be checking it out.


----------



## unkleduke

I'm glad this got some attention. I couldn't believe it when I found these too. I personally have completed the CS50 course so if anyone has any questions, or needs help with any of the problem sets, feel free to ask me here or in PM (don't forget about the course's Google group too). I've just begun CS76 and am working on the first problem set. You'll be surprised how quickly you will pick this stuff up once you get going.

@AirForceGeek - I download the videos and watch them offline.


----------



## jpbagley

Thanks for the info will definitely be checking these out.


----------



## awg_ilyas

Nice, planning to further my studies in CS.

Excellent find.


----------



## mKiller82

Wow thank you sir. I am starting UoP online classes in the fall for software engineering and this will help me get a headstart. Thanks again.

Sent from my Xoom using Tapatalk


----------



## jaydorsey1978

Thanks for the reminder about these! I had stumbled onto some similar OCW courses through MIT a few years back but never got around to taking them since I was also working on my M.S. at the time... now that I'm done, I think I'll take these up!!


----------



## crashbang

Wow thanks so much. Bookmarked fo sho


----------



## SpinningHook

Quality. Much respect for sharing this. I will be doing so, also.


----------



## phr0styr

Thanks for these links! I personally found CS50 to be a good review of programming concepts, can't wait till I get some more time to work through the mobile app dev one though! Great find; thanks for posting.


----------



## tibbbbor

so rad!!!!


----------



## sgtguthrie

Also check out www.thenewboston.com for tons of free programming video tutorials. I'm working on the Java ones now, but he's got c, C++, javascript, python, and more! I'm learning a lot from this site! I highly recommend it...


----------



## Captainkrtek

Hahvahd blows, MIT OpenCourseWare FTW: http://ocw.mit.edu/index.htm
maybe im a bit biased ;-)


----------



## unkleduke

Updated the OP with a more direct link for MIT's programming course. Thanks Captainkrtek for the heads up! http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/


----------



## janorton05

Thank you so much. I never would of even imagined that they would have free courses like this. Exactly what I was looking for.


----------



## tcberg2010

Is anyone having issues getting #include <cs50.h> properly?
I downloaded both cs50.h and cs50.c from their ftp compiled to create a lib and moved to cs50.h to /usr/include and the lib.a file to /usr/lib with no luck. Any ideas?


----------



## unkleduke

tcberg2010 said:


> Is anyone having issues getting #include <cs50.h> properly?
> I downloaded both cs50.h and cs50.c from their ftp compiled to create a lib and moved to cs50.h to /usr/include and the lib.a file to /usr/lib with no luck. Any ideas?


If you use the course's appliance the CS50 library is already installed as a static lib, so you can just link it with gcc. To compile yourself, just follow the instructions in the header file. You can always just link the cs50.h and cs50.c files in your Makefile or at the command line with gcc.


----------



## SyNiK4L

thanks guys for these links time to start watching lol


----------



## mines_01

Thanks for sharing!


----------



## finch

Incredible post Thank You!


----------



## unkleduke

I updated the OP with some more resources. Please post any additional sites/resources that you find useful and I'll continue to add them. Also, I'd love to hear how some of you are progressing in your studies. Any tips for getting through hurdles or any "Ah Ha!" moments would be great.


----------



## gi812

ugh thanks =/ there goes so much of my time now lol but hopefully ill get something out of it! haha thanks OP and erryone else


----------



## TDubKong

Great news. Thanks for posting this. Since I will be starting college in the Winter quarter at the tender age of 42 I hope this helps me to get at least a bit of a jump on those with younger brains


----------



## bearsfan85

just bookmarked this page, thanks


----------



## unkleduke

I added a link to the OP for Stanford's Intro to CS. It looks like a good place to start, as it teaches Java and general CS. Harvard's CS50 was great, but only briefly touches on object-oriented programming.


----------



## droidvirzi

So what's the best for a beginner tht took algebra 3 times to pass??


----------



## unkleduke

I updated the OP with a link to http://www.codecademy.com



droidvirzi said:


> So what's the best for a beginner tht took algebra 3 times to pass??


I still recommend Harvard's CS50 for those with zero experience with computer science. There isn't much math involved beyond basic arithmetic.


----------



## Jaxidian

A resource with 200 videos for getting into Android development:
http://www.youtube.com/playlist?list=PL34F010EEF9D45FB8


----------



## unkleduke

Jaxidian said:


> A resource with 200 videos for getting into Android development:
> http://www.youtube.com/playlist?list=PL34F010EEF9D45FB8


Thanks, those videos are part of the New Boston, already had them on the OP.


----------



## Jaxidian

unkleduke said:


> Thanks, those videos are part of the New Boston, already had them on the OP.


Oh, didn't realize that.


----------



## unkleduke

Jaxidian said:


> Oh, didn't realize that.


That's cool. Have you checked out the videos? I'd like to start hearing feedback on all the links. Some pros/cons for each of these resources.


----------



## Jaxidian

Not yet. I want to but am probably a couple months away from having the time to get to it...


----------



## Easy

Thank you! this will be a great help on my senior project suwheeet :grin3:


----------



## overthinkingme

Bookmarked, thank you.


----------



## mikeric

I heard about this on episode 167 of FLOSS Weekly. http://twit.tv/show/floss-weekly/167.

http://htdp.org I think it fits in well and can be good for beginners.


----------



## AtomB

Wow awesome post.


----------



## Maximaniac

This is great! I actually started college as a CS major, but ended up switching during my soph year because I didn't like the workload of all of the math classes (i.e. I partied a little too much my freshman year and didn't allocate enough time for studying). I eventually graduated with a psychology degree, but I always wanted to get back into CS to see if I'm still interested. This will be perfect for me since I can go at my own pace.


----------



## kgbrown247

dope thread, thanks


----------



## whiteblazer00

Thanks for the info UnkleD!


----------



## rufflez2010

Thank you very much UnkleDuke


----------



## gamer765

Awesome resource for learning programming. Apparently they teach something new every week compared to my university, should definitely help me get ahead.


----------



## KevTN

Would this help with android programming too? Sorry no programming experience here. There is an app I want to develop for daughter softball. Thanks


----------



## bliynd

awesome, great finds!


----------



## Maverick39

"KevTN said:


> Would this help with android programming too? Sorry no programming experience here. There is an app I want to develop for daughter softball. Thanks


Yeah I think so, it does talk about Android is some of the video's.


----------



## Maverick39

"mKiller82 said:


> Wow thank you sir. I am starting UoP online classes in the fall for software engineering and this will help me get a headstart. Thanks again.
> 
> Sent from my Xoom using Tapatalk


How's the U of P working out for you?


----------



## Elvis_Marmaduke

omg this looks amazing, i'm definately going to jump on this. thanks!


----------



## AciD_LingK

Amazing Thank you soooo much. This is what I have been looking for.


----------



## Leeman1004

Thanks for this thread


----------



## knickles

Thanks unkleduke for the awesome thread. I myself have been going through Standfords course, for C++ with Professor Julie and also have the java one as well. But chose to learn C++ since Java and C# is born from it.
I also found this http://code.google.com/edu/android/index.html to very helpful as well. It's Googles University for programming. Also for us android users. I really like the app on the market called Lecture Viewer. It's awesome and you can watch some graet courses from it. 
I'm just a true begginner at all of this.


----------



## Trunkz

WoW!! This is great information.. Thankz..


----------



## unkleduke

Added Google Code University to the OP. Thanks.


----------



## 1stDayRookie

This is exactly what I've been looking for. Thanks again


----------



## unkleduke

Added Google's Android developer training link to OP.
https://developer.android.com/training/index.html


----------



## buddybird

Thank you for this info!! It is VERY much appreciated.


----------



## MR H3LLMAN

This thread just saved me dropping 140$ in books at Barnes and Nobles. Thank you!

Sent from my Galaxy Nexus using RootzWiki


----------



## Alex_Be

Thanks for putting all of this together, I appreciate it! MIUI tinny sound issues have motivated me to finally get pro-active about learning some dev languages.


----------



## unkleduke

I've added a link to my github, where I'll be posting my solutions to some of the courses' problem sets. So far I've completed Harvard's CS50 and Stanford's CS106A. You'll find all of the CS106A problem sets there and I'll try and post my CS50 solutions in a day or so. I've just started Stanford's CS106B, so I'll be adding those as I go along. These solutions are not perfect, as I'm still learning, but they may help you as a reference or if you get stuck. And, if anyone has any feedback or if you find bugs, let me know. Thanks.


----------



## awolin

thankyou so much. I've been so lost on how to start learning and what to learn spending $$ on books. thanks


----------



## cantIntoCode

Awesome, never seen codingbat.com before. Great way for a quick refresh / test yourself on some simple things


----------



## unkleduke

I posted all of my solutions to the java section of codingbat on my github. Check the OP for link. Glad so many people have found this thread useful.


----------



## yarly

I added http://stackoverflow...ogramming-books to the topic and http://learncodethehardway.org/ . Hopefully the OP won't mind me editing his post to do it 

Also for anyone wanting to learn how to develop games for android, http://code.google.c.../VideoTutorials has some good video tutorials for the libgdx framework (which is IMHO, the best free/opensource native Android framework for games). The creator of it also has a book out pretty cheap on Amazon for like 20-25 bucks.

EDIT: book is available here for $23.99. I don't want to sound like a fanboy for libgdx, but the community for it is also very helpful if you have questions.


----------



## unkleduke

That's cool. Feel free to add anything. I'd love to see more contributions here. There's too many resources popping up for me to track them all.

I finished Stanford's cs106b, so my solutions are up on my github. I'm starting cs107 now, so I'll be posting those solutions as I go. As always, remember my solutions are not perfect, so take them for what they are. And please report any bugs. Thanks.


----------



## PZ420

yarly said:


> I added http://stackoverflow...ogramming-books to the topic and http://learncodethehardway.org/ . Hopefully the OP won't mind me editing his post to do it
> 
> Also for anyone wanting to learn how to develop games for android, http://code.google.c.../VideoTutorials has some good video tutorials for the libgdx framework (which is IMHO, the best free/opensource native Android framework for games). The creator of it also has a book out pretty cheap on Amazon for like 20-25 bucks.


 thank you for posting this good info! Being unemployed this is the perfect opportunity to load up on knowledge!

Sent from my PC36100 using Xparent Blue Tapatalk 2


----------



## unkleduke

Added Udemy and Android Bootcamp. Also, I've finished posting my solutions to Stanford CS107 on my github.


----------



## kijp15

I did't mean to vote 1 star, I mean't to vote 5 stars on the forum. Lol. My computer was being gay & started lagging for some reason. But yes 5 STARS it is. Thanks you! I was looking for something like this to help me get started, I only know a few things here & there. >.<


----------



## unkleduke

Added Khan Academy to the first post. You can also check my github for a few simple open source android projects I'm working on. Pull requests are welcome for bugs and new features.


----------



## Klashblack

Thank you for posting this! I been a Musician for 13 years and been wanting to change careers and get into programming. Computers have always been my other love. With the music industry in shambles i been wanting out and change careers. I'm 34 now and was considering going back to school but the costs and debt scares me a bit. And i always been good at teaching myself stuff. I been using Lynda.com videos to start but these courses you posted are great! 
I also recently moved to the bay area as well and hardly know anyone in the tech field. So i been pretty much on my own here.

Thanks again!


----------



## Codenomics

Dont forget about http://www.udacity.com/


----------



## unkleduke

Codenomics said:


> Dont forget about http://www.udacity.com/


Added to the OP. Thanks.


----------



## unkleduke

Added coursera.org to OP


----------



## regidk

Wow, awesome. Thank release


----------



## unkleduke

Added saylor.org to the OP.


----------



## MassStash

Thanks bro, just found this awesomeness

~Viper4G 2.0.2 S-Off LTEvo; Finally got EvilZ working!
cpu0/1: 1.7ghz ¦ 192mhz ¦ sleep: 486mhz max
wheatly
deadline
mpdecision: off


----------



## unkleduke

I added my personal rant on learning to program at the end of the original post. I would love to hear other people's thoughts and experiences on learning programming.


----------



## shiznu

Damn just what I was looking for... Thanks a million!!! 

Sent from my Galaxy Nexus using RootzWiki


----------



## yarly

unkleduke said:


> I added my personal rant on learning to program at the end of the original post. I would love to hear other people's thoughts and experiences on learning programming.


Option one mostly leads to bad habits. It'll teach the basics, but few will ever learn why one data structure is more suited for things than another (or the performance of one to another). Beyond small apps, it'll just end up frustrating most people that don't understand why things are all the sudden much harder to control and organize (as they aren't aware of how to avoid such things through more advanced techniques basic tutorials usually fail on teaching). It is much harder to learn important object oriented concepts like polymorphism, inheritance, abstraction/encapsulation, coupling/cohesion, design patterns, code reuse/advanced debugging/unit testing/functional testing. I learned many from a combination of the traditional route through a brick and mortar university and my own projects and work outside of class. There's a lot to be said about the negatives in traditional teaching at large public university, but I wouldn't trade some of the better courses I took for any other way of learning when you have a great professor.

I never thought Java would be useful since I dreaded ever having to work for most companies that use it extensively (as the work with it can be rather dull and brain damaging), but then along came Android.

EDIT: think of programming in terms of learning how to write. You can learn how to write on your own probably so so, but it would be much harder to do so without former composition courses where you write in a structured environment as well as study literature as a whole. That positive and negative feedback you get from a classroom environment does help to avoid lots of bad habits and knowing what is correct/incorrect. Just the crazy amount of discipline, research and time to do so is above nearly everyone's threshold and would be better utilized by seeking out the advice and mentorship that comes with some direct professional help. That may not be at a traditional university, but learning only on your own is not the best route, imho.


----------



## ermacwins

I want to learn Java and a work colleage has suggested a book called Dummies guide to Java. Any other recommendations on where to start and is it worth doanloading ebooks to learn Java?


----------



## Maverick39

ermacwins said:


> I want to learn Java and a work colleage has suggested a book called Dummies guide to Java. Any other recommendations on where to start and is it worth doanloading ebooks to learn Java?


I have found a bunch of ebooks on Amazon.

Sent from my ADR6400L using Tapatalk 2


----------



## yarly

ermacwins said:


> I want to learn Java and a work colleage has suggested a book called Dummies guide to Java. Any other recommendations on where to start and is it worth doanloading ebooks to learn Java?


Read my profile.


----------



## monkeybeanz

great compilation...thanks


----------



## yarly

http://programminggroundup.blogspot.com/ a book that focuses more on computer science related stuff.


----------



## mikeric

I just started using edx.org. It has the MIT and Harvard classes on it. You can sign up for free and it is very well designed so far. Only issue is classes do have beginnings and ends if you want to submit stuff. The MIT intro programming started last week.


----------

