
#17 overallClassic
Introduction to Computer Science and Programming in Python
MIT OpenCourseWare
25 recommenders · 26 threads · recommended in 12 years, 2010–2025 · score 40.0
MIT's introductory computer science course taught in Python, covering core programming and computational problem-solving with lecture videos, problem sets, and the course textbook. It is offered free through MIT OpenCourseWare and was also run on edX as MITx 6.00.
Commenters repeatedly call it a very good, free introduction to CS and programming that teaches concepts transferable to any language, and several say it was the course that gave them real programming ability.
Algorithms & Data Structuresbeginnerfreevideo lectures#python#introductory cs#computational thinking#problem sets#guttag
Recommendations by year
20062026
Take the MIT Intro to CS with Python course. It's an introduction to using computational methods to solving problems. Then take the second course.
Then find problems to solve. Lots of them.
Find a mentor.
I had my 15 year old son take these courses (with me acting as tutor). There is no way to describe the transition he made. From wasting his time learning a bit about a language here and a bit about another language there to focusing on one, learning how to solve a range of problems, learning about data structures and more. He cam out of that swinging and capable of approaching real problems (still with a need for me to coach, but a huge step forward).
I have been learning coding in dribs and drabs for the past many years. I think if you have the itch, you can probably do it.
I have some strong opinions about what would get you the quickest results.
- doing practical projects that interest you
plus
- learning solid conceptual fundamentals, thoroughly
I would like to recommend, in the most enthusiastic terms, you peep this course called: MIT 6.00 Introduction to Computer Science and Programming
http://ocw.mit.edu/courses/electrical-engineering-and-comput...
Just do exactly everything in that course. Follow the lectures, if the lectures get boring do the homework while you're watching. Do all the homework. Google language syntax but not specific answers to the problems. Read the suggested stuff.
I swear, I kinda suspect a huge percentage of working coders do not understand or apply all the concepts in that intro course.
At the same time, just pick personal projects and do them. Complete them. All the way done. And move on, always to something a little outside your comfort zone. Like, first just build a wordpress site, or wherever your current skill level is.
If you do those two things and are having fun and sticking with it, you are golden, I say.
;-)
Been going through a similar process, here are some links
highly recommended - MIT OCW Python course
http://ocw.mit.edu/courses/electrical-engineering-and-comput...
Learning Python, Fourth Edition, By: Mark Lutz http://my.safaribooksonline.com/book/programming/python/9780...
Official docs and tutorial http://docs.python.org/tutorial/index.html
A couple of others http://personalpages.tds.net/~kent37/stories/00020.html
http://diveintopython.org/
Django - official docs and tutorial http://docs.djangoproject.com/en/dev/intro/tutorial01/
Have started some work with this Django book but jury is still out http://my.safaribooksonline.com/book/web-development/django/...
There's definitely a tension at top STEM schools (probably especially in CS) between assuming students have some baseline knowledge of whatever field and just tossing them into the deep end of the pool and figuring out the practicalities on their own.
I did take one of the MIT intro CS MOOCs at one point for kicks. Very good. But it was more or less learn Python on your own if you don't already know it (or how to program more broadly). That doesn't really happen in a lot of other disciplines other than some areas of the arts.
Wouldn’t a data science curriculum be more multi-disciplinary than a ‘statistics’ course?
Visualization, scripting, data collection, models, simulation. EDx had a great course by Guttag and Grimson. Add to this Scott E Page’s Model Thinking. Add EDx Data Analytics and Learning From UT Arlington. And some Tufte.
I say these because i work in the accounting field and brought scripting to my firm from my own self-study. It’s been a super power for me, and solved several problems which my colleagues had tackled using Excel alone.
I’ve also studied statistics, but found it less generally useful.
I don't know you, so I have no idea. Your employer and colleagues could give you a better assessment. But I can say that an average grade taking the top classes at school is much better than average grades in the minimum-to-graduate classes.
Education doesn't stop with the degree. Good engineers never stop studying to expand their expertise.
I've been working for several decades with other engineers. It's not too hard to see who are the good ones and who aren't. The "aren't" are the ones who solve problems using trial and error, and when they get it to work they don't bother figuring out why it's working.
The "are" engineers will do whatever is required to find out what is actually wrong, work to understand it, and will do a targeted fix.
What kind of engineer you want to be is entirely up to you.
One thing you can do is take the youtube MIT CS courses. It's free. I've taken some of them to fill in gaps in my education.
Hey Totaldude,
I taught myself programming over the course of a couple of years, having started from pretty much zero. Now I am working part time as a developer for a startup, and run a business of my own - having built not just the website and app for my business, but also developed the hardware and firmware!
Below are the classes that I took to get started along with a bit of a storyline:
http://learnpythonthehardway.org/ - I started this a while ago and never finished because I got distracted. It's kind of bare bones, but will get your wheels spinning.
https://www.edx.org/course/introduction-computer-science-har... - I started and got all the way through the last problem set. This course is EXCELLENT: wonderful lectures, challenging assignments, expansive community (facebook group, reddit.com/r/cs50, stackoverflow, etc). If there was only one class to pick from this list, CS50 would be it.
After CS50, I wanted to get good at a specific language and decided to learn Python. It is a very flexible and powerful language. It's very clean syntactically making it easier to learn. You can use if for data science, for little scripts, for web development, for pretty much anything.
https://www.edx.org/course/introduction-computer-science-mit... - i started this late (not self paced like the CS50), and played catch-up a good amount of the time. A solid class, mostly did it because I wanted to get good at Python. I got most of the way though this course as well.
https://www.edx.org/course/introduction-computational-thinki... - I started this class next because I wanted to use Python to crunch numbers, and eventually get into machine learning. I made it just a few weeks into this course before getting distracted with my own projects.
It's not just about learning a programming language, but learning to program. With two hours a day, you can churn through the CS50 course in a couple of months, during which you'll build a website & webapp. It'll definitely be a challenge (it took me a couple of tries to make it all the way through), but it's an amazing course - make sure to take advantage of the huge community.
for Python, I recommend the online Introduction to Computer Science 6.x by MIT. If you want a book, I would recommend the Python Crash Course.
Take a look at the minimum features you absolutely need to support on the project. You may be able to get away with plain JavaScript rather than learning an entire framework.
the MIT Introduction to Computer Science and Programming Using Python on edx is beginner-level, and I took it a few years ago, so it might not be best for the people who read HN---but it's really good. Best introductory-level MOOC in anything I've ever seen.
I recommend John Guttag's Intro to Computation and Programming Using Python to people interested in starting to code, as the accompanying video lectures are available on MIT OCW and the book itself is enjoyable to read. That book (+ the Django tutorial) might be a good way to get started before doing a boot camp.
As others have pointed out, there are other ways to learn the material, but it may be that the 'career day' activities, etc. are worth the price of tuition.
Recently completed MITx 600.001 which had a fair share of lectures along with a textbook. The lectures were mostly just a rehashing of what was presented in the book but there was something about watching the code run that really made a difference. I also think that having "finger exercises" after a short video explaining a concept is quite helpful. Although it seems that could easily be achieved in book format as well. The live feedback after submitting code was what helped me the most.
At the same time as this I took another course on a different website (coursera) Cloud Computing Concepts Part 1 which was entirely lecture based. The topic was extremely interesting to me and I have moved on to the next course in the series but I do find the all lecture format with quiz based homework to be less than ideal. I try to make up for the lack of a textbook by reading the documentation of concepts covered each week but often times it is hard to pick the most essential material.
The edx platform is really stunning in terms of engagement and feedback from a student perspective. It is easy to imagine a course presented on it with little to no lecture if a strong companion text was provided.
If he is serious of continuing developing software for many years and not just jump ship because the pay is good now, learning the basics of CS is my recommendation. There are a few coursera courses on intro to CS (I think using Python) that will be very valuable. Learning about how a computer works, how algorithms work, etc are very valuable (I'm not saying to know the exact O notation of 50 sorting algorithms, but the general idea of how they work)
If he just wants to make more money but doesn't care much about programming/developing software, just tell him to go to one of those Rails/iOS/etc bootcamps for a month or two.
From one non-programmer to another, I highly recommend Python + Django + a CSS framework to get up and running.
Python is a great language to get started on because the code is relatively simple to write and read (for very geeky reasons), and the MIT OpenCourseWare intro to CS for non-majors class is a great way to pick up as much "core" programming ability as you need. That class is taught in Python. Underrated perk: errors are easier to diagnose relative to JavaScript.
Once you have a rudimentary grasp of Python, do the Django tutorial and build yourself a sample app. Django is the way to get up and going with a modern-ish MVC (model-view-controller; you'll see what it means) app. It's very easy to get going as a developer and the only headache you'll find is the Virtualenv thing. Easier than getting Rails (which is Django for Ruby) going for the first time, because Rails has the potential for more version conflicts.
Lastly, to build out web pages, consider Zurb Foundation or Twitter Bootstrap. These are premade CSS components that make building pages faster (thus good for "rapid prototyping"). They also bring along browser compatibility and jQuery for added UI niceness.
If you want to animate things on the page, search for animate.css.
I did this a couple years ago to build my first app and now I have a side project that I coded myself. You can do it! :D
Harvard's CS50x has a very loose structure. It's open until April 23 and one can complete the exercises, problem sets, lectures on his own time.
MIT's 6.00x has a strict weekly structure.
Udacity's courses have all eliminated the schedule and are now always-open, self-paced.
Most of Coursera's courses are structured.
If you want your friends to actually become programmers I'd recommend that you push both an Intro course as well as codeacademy for language practice. Codeacademy by itself isn't going to get you anywhere. The tutorials don't provide a solid enough foundation to actually implement anything meaningful. As a beginner programmer I went through every Python tutorial in < 30 hours. I used them as Python language practice, which worked well as a supplement to the core Intro courses. Both Udacity and 6.00x use python so they work well with codeacademy's python tutorials.
I'm signed up for CS50x and 6.00x (Introduction to Computer Science).
6.00x has started and is great. It's taught in python, which I've had some exposure to before (having done the exercises in Learn Python The Hard Way). So far, I'm finding edX's delivery to be superior to Coursera's. I'm looking forward to starting CS50x.
My housemate started the 6.002x course last session, and said it was great (but did not have the time available to finish it).
No, this is 6.00, which sounds like it is aimed at non-majors. My 11 year old son wanted to go through it with me, and so far the first lecture was good for him. 6.001 is the SICP course.
I saw my first Unix prompt two years ago, nested inside of this editor called "Emacs." In my 23 years I had only programmed conditionals in Excel, and now I was responsible for using this system to maintain some of the most important econometric models in the world.
Fast forward to present day, where I'm writing linear classifiers in a Lisp dialect I had never seen before this weekend. I've previously built scrapers in Python, a website with Django, side projects with a bunch of technologies (R, JS, SQL, Redis, MongoDB, etc. etc.). I enjoyed working on all of these enough to start a graduate program in CS.
People start writing, running, painting, and working on other awesome trades at all ages. Coding shouldn't be any different. Click on pg's link to Codecademy, go check out MIT's introductory CS courses on OpenCourseware, and don't worry about how old you are!
I'd recommend "How to Think Like a Computer Scientist: Learning with Python" - http://www.greenteapress.com/thinkpython/thinkCSpy/thinkCSpy...
MIT introductory course that uses this book: http://ocw.mit.edu/courses/electrical-engineering-and-comput...
Also check out MIT's OpenCourseWare since they use Python in lower-level CS classes. Here's their non-major Intro to CS class, which comes with videos (YouTube or iTunes U), code, and a book or two in PDF form:
http://ocw.mit.edu/courses/electrical-engineering-and-comput...
Props to you for this, very commendable. I wish my biz dev people showed this kind of initiative
I think its doable. Because of the accelerated rate, you'll obviously miss some crucial pieces but those will fall into place if you, as you should, keep at least one personal project going at any given time.
Before you read all this, head over to MIT OCW and look up an intro to programming course. They sometimes have videos (thru itunes)
Step 1 is to get someone to explain to you what exactly is the computer doing when you write println'hello world'. This is so you get the big picture. Next step is to compile a hello world program. Then a lesson on strings and then on arrays. This should introduce you to them while providing a lesson in APIs - one of the more important things. This API lesson should have you look up documentation so you know how to read docs. This will take you 2 days...give it 5 - do lots of examples.
You can probably skip this but i'd recommend it - polymorphism, typing, properties...object oriented programming. This will probably blow your mind - not in an overwhelming kind of way but in a WOW, where was this till now kind of a way.
That is the essence of coding. You can now code and follow most examples on the net.
Next you need to become a software developer. For this, you'll take time as this is a blend of skill, knowledge, and experience. You will need to learn about things like data structures and recursion, trees and big o notations, algorithms and...stuff. EVERY programmer has to take a course called Algorithms and Data Structures. I'm sure you can find it on MIT OCW. If not, google 'ece250 uwaterloo' - they assume you don't know anything and start C++ from scratch.
And thats that.
I am also self-taught, although I dropped out of University two years into a CompSci/Engineering double major, so I will recommend some resources to you that helped me immensely. Each of these books has an associated MIT course with lecture video, notes, etc. available online.
First is Structure and Interpretation of Computer Programs[1], which you can read online, and the associated course at MIT, which is 6.001[2]
Second is the famous 'Dragon Book', Compilers: Principals, Techniques and Tools[3] and the associated course which is 6.035[4]
Extras would be the Python book 'How to think like a Computer Scientist'[5]. MIT course 6.00[6] uses the book as a reference, and the courseware is again available online.
Other than that - the usual suspects on learning C (K&R), UNIX (TAOUP[7]), the bash shell along with grep, sed, awk, more algorithms(CLRS[8]), functional programming and machine learning. Take your time, it takes years to build the relevant experience and knowledge and you are never done.
I love the MIT courses. Work and learn at your own rate. I feel that it is important to implement all the code yourself even if it looks easy in a lecture - there are little things you pick up as you write algorithms out.
Even though I had worked through SICP I still watched all the lectures again and implemented all the examples with benchmarks and unit tests. I usually set aside one day on the weekend to work on study, and usually an extra evening or two mid-week to read papers and books. Once you get into the routine it is great.
It might be the best approach to set yourself a timetable and weekly schedule, just like in UNI (ie. every Saturday plus Tuesday and Thursday nights) and work through the MIT courseware and associated books in order (6.00, 6.001, 6.035). The more advanced MIT courseware is an excellent bonus.
[1] http://xrl.us/sicp
[2] http://xrl.us/6001
[3] http://xrl.us/dragonbook
[4] http://xrl.us/6035
[5] http://xrl.us/thinkcs
[6] http://xrl.us/6000
[7] http://xrl.us/artunix
[8] http://xrl.us/clrs
If I went the Ruby/RoR route, I would learn Ruby then Rails. As well as LPTHW, another great resource is the MIT OCW course which teaches fundamentals using Python. Thanks for the help!
http://ocw.mit.edu/courses/electrical-engineering-and-comput...
If you're looking for intros to programming, 1.00 is also a fantastic course (it's what made me switch to a CS major) which uses Java. The materials are a bit older than for 6.00 though.
I'm learning how to code right now too and it's been frustrating to find resources that truly start at the beginning without assuming you know things from other languages. Right now I'm looking into using Google App Engine and python and these are the best resources I have found:
-MIT open courseware offers a FANTASTIC introductory course using python with video lectures which are nice since I get tired of reading 600+ page books. http://ocw.mit.edu/courses/electrical-engineering-and-comput...
-Another resource that I found very helpful is a book called Head First Java, I'm not really into Java but the first few chapters give a great overview of Object Oriented programming. I wasn't sure what the difference between a class and object were, and I was unsure about other very basic questions. This book answered all of those questions, and it's written in a very entertaining style.
-I'm also reading a book called "using Google app engine" also starts from the beginning, and introduces all the technologies that go into Google App Engine. I found that book on gigapedia.org btw.
-I tried zed shaw's learn python the hard way book. I've only done the first few examples so I don't have an opinion on it yet. But so far I think it's a good resource for short little exercises to learn your way around python syntax, but I definitely needed more of a programming background which is where all the other resources I mentioned above fill in the gap.
by the way i would definitely recommend python over other languages I've looked into because at least as a beginner, python syntax isn't complicated to learn. But if you are interested in learning say Java, there is a Stanford online course that might be good, so just look at their online course offerings.
A final python resource which I found was Guido Van Robot where you basically control a robot in a maze using python. I haven't looked at it too closely yet but it seems entertaining and helpful for the beginner. If you're familiar with Karel the Robot, Guido Van Robot is the exact same thing, except using python. http://gvr.sourceforge.net/
I heard the MIT OCW 6.00 python class on iTunesU is great too.
I would also suggest Introduction to Computer Science and Programming from OpenCourseWare: http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Compute...
It's the right approach, they teach you the concepts so that you can pick up any language and run with it. It uses Python but it's not about Python, which is a clean language that has a great support system (perhaps the most essential part in learning how to code).
There is front-end and back-end. I've been in the back-end for more than a decade already and haven't touched front-end once. Back-end is more of processing and preparing the data which will be presented in the front-end.
Also, thanks for recommending https://courses.edx.org/courses/MITx/6.00.1-x/1T2014/course/ in one of your comments; it looks quite interesting.
In this day and age, there is tons of data being generated in institutions like stock trading data for a stock brokerage company or call record data for a telecom company. Usually these data needs to be parsed, summarized or analysed etc.. so there is a lot of back-end work that occurs.
Back-end processing is usually either OLTP (online transaction processing) or OLAP (online analytical processing). With OLTP, it is about the software performing some repetitive task that supports a business function. For example, with Amazon shopping; the software needs to record the order, reduce available inventory of the product, etc..
With OLAP, there is usually some analysis on the data that needs to be generated like a report showing Amazon orders that match a certain condition.
I see a lot of negative comments on this thread. Fair enough. I have seen the good, bad and ugly of Udemy. I have never tried to publish a course (thought about it). I am sure the instructor-side view of reality is less than ideal. Frankly, this is true even of massive platforms like Amazon. Ask any Amazon seller what the world looks like from their perspective. It can be horrific and surreal.
Udemy (and Amazon) do not create value by developing top-notch back-end applications for instructors and sellers. Nor do they add value by having the best process for behind the scenes participants. Their value comes from what consumers see and experience.
Yes, Udemy has a bunch of junk courses. I probably bought a few hundred courses from them. I am very careful about watching as much of the free material as possible before making a decision. Once you've seen and experienced a few courses you get a sense of how to evaluate quality.
You can also do research on the instructors outside of Udemy. For example, a while ago I decided to take Robert Feranec's Altium Designer course on Udemy. I wanted a refresher. I use the software daily but I do so many things I haven't really kept up with the latest and greatest.
https://home.fedevel.com/other/about-robert
Robert's course is top notch. I really enjoyed it. I will likely take some of his advanced classes off-platform.
I've also had my kids go through various courses on Udemy. From software development to handwriting, math, languages and using GIMP. All great courses. No complaints whatsoever.
One of my kids is currently going through the excellent "100 Days of Code - The Complete Python Pro Bootcamp for 2021" from App Brewery. It is amazing to see just how engaged she is.
One of my other kids is currently going through MIT's 6.00.1x on EdX while simultaneously using the "100 days of Code" course on Udemy to shore-up holes in his Python knowledge. He is doing great.
From there I plan to move them to higher level courses on either (or both) EdX and Coursera. These kids are going to finish high school with actual marketable skills that will lead to nice jobs during college (rather than the useless shit they are being fed in school...don't get me started). If it was possible to take these courses for credit they could graduate high school and obtain a BS in CS within a year. Sadly the only path I have been able to identify has a starting age requirement of 17, which I think is ridiculous. They are a couple of years younger than that and can already code circles around most first and second year university CS students. Age is irrelevant.
Anyhow, I guess I am saying that there's a lot of good on the platform for learners. You just have to be careful about evaluating courses and instructors.
It's not true that one needs to pay for a reasonable computer-science education. One can learn wholly online for the cost of Internet connectivity.
The problem is that Lambda are vampires. Their model is completely superfluous. They do not add any value over self-assigned MIT lectures on Youtube. From what I have gathered, Lambda is the kind of setting where folks like me are supposed to show up and supplement the "teacher" and their lack of knowledge; normally, when I do that, I expect to be paid six figures per year.
I really like the resource but some of the courses I prefer some alternatives.
1. Programming - IntroCS by princeton - available on coursera with videos and graded assignments. If you require a slightly easier course, then you can check out CS61A from Berkeley or MIT's Intro course in python.
2. Algorithms and Data Structures - Princeton 2 courses in algorithms - coursera. Alongwith their book and booksite this was a very good resource for me with their graded assignments. I also would suggest CS61B from berkeley.
3. Databases - I started learning from Stanford Widom's course, but now I actually recommend CMU's course. I have heard good reviews for berkeley's course CS186 as well.
Side Note:
https://bradfieldcs.com/courses/ These are the makers of https://teachyourselfcs.com/. I notice that there are many courses, but at the same time $1800 per course is a bit too much considering USD conversion. So, I am looking for reviews if anyone has taken it, and whether the cost is justified. On the fence of joining it because of the cost.
Chances are that my framework of learning is going to be different than yours. I find that most materials distract me from my real task - getting efficient and productive with a new tool.
I like to learn by doing projects. I'll usually pick three projects that I find somewhat interesting and figure out how to finish them with the new tool. I usually progress like this:
1.) Build the first project. 2.) Build the second project. 3.) Go back, read the first project and refactor it using what I've learned. 4.) Build the third project. 5.) Add a new feature to the first project. 6.) Refactor the second project. 7.) Add a new feature to the third project.
By the time I've made it through those steps, I'm fairly confident with my skills. I likely don't have full mastery of the language and it's ecosystem, but I have found good resources, learned where to ask for help, and learned enough of the ecosystem's language to be able to ask for more detailed help.
I also try to confine my learning to one subject. For example, you mention that you'd like to start doing some data analysis. If you have advanced knowledge in math/stats, that might be a great way to learn. But, if you don't, you'll have to learn the underlying science while you're learning to use the tool. With the way I learn, that is setting me up for failure.
Here is the thing though. My method works for me and I'm using it now to learn a new tool. But, I'm a sample of one.
A fellow named Zed Shaw has written a set of guides to learning new languages. His Learn Python the Hard Way is quite well regarded. Learning a language like that doesn't work as well for me, but that might be the exact way that you learn. To learn more, check out https://learnpythonthehardway.org . If you like taking notes, this might be a good option for you. Only, you might find that your muscle memory improves faster if you type the notes into a computer!
Alternately, there are some great classes that you can take online. MIT offers Introduction to Computer Science and Programming in Python through MITOpenCourseware and ItunesU. I already knew Python when I listened to that series, but I learned one hell of a lot through the lectures.
You'll still have to practice and write lots of code, but hopefully one of those resources helps you progress to the point that you feel your practice is beneficial. The key is to find a style that works for you and keep at it.
Programming is hard, so keeping at it is the most important part. It doesn't much matter how you learn as long as you don't quit. You'll learn the most when you're most frustrated, so take frustration as a sign that you're getting better. Depending on how you motivate yourself, you might want to keep a learning journal so that when you feel dumb you can flip back and realize that you were significantly dumber a month ago. :)
Good luck! And don't be afraid to ask for help. We have all been beginners and most really good developers are all beginners in something. Have fun and kick ass!
This is actually where I started, with MIT's intro OCW. I began to worry, though, that I would be better served learning something directly relevant to the job market, and so half-way in I moved onto The Odin Project. My plan as it stands is to first get a grasp of web development so I can have a solid chance of getting a job after graduation, but I intend to go through a lot of MOOCs once I'm done with TOP. I've got a year and 2/3rds until graduation, which will hopefully let me learn a fair bit.
I see this as a major flaw in CodeAcademy. Running through the jQuery lessons with a few students today, I noticed that there was no mention of how to install the library or reference it on a CDN.
I've often recommended the less exciting, but excellent EdX courses, if you want to "get into programming'.
There's no one universally best way, but there are lots of available ways that are good, and you need to try some out and find which is best for you (self-study from books; traditional classes offered via, e.g., local community colleges; MOOCs like EdX, Coursera, Udacity, etc.; non-MOOC online interactive-learning tutorials like those offered by CodeAcademy, etc.; etc.) -- and there is no reason to limit yourself to one of these approaches. Try more than one, and keep doing more than one if you find they work together for you.
Whatever basic approach(es) you use, the most important thing is to take whatever you are getting through it and find ways of applying to problems that interest you -- that is, the most important thing to learning to programming is to practice programming.
Personally, I think the mix of convenience, structure, and cost (free) of the MOOCs is hard to beat; the self-scheduled nature of Udacity makes it the easiest of the big 3 MOOC providers to jump into an intro programming class since you can do it whenever you want. So, I'd probably recommend that as the first thing to try if you want to start learning right now. But the introductory programming offerings from other MOOC providers (particularly EdX's MITx 6.00x class) are also worth exploring, as are other approaches.
You need to take a computer science course , which will teach you how to think.
The Python exercises on codeacademy are there to strengthen your grasp of python syntax and practice for loops.
I recommend Udacity CS101 and/or edx 6.00x. Both are Intro to CS courses which use Python.
You first need some CS background ('CS', for lack of a better term. I don't mean Automata, just something deeper than, say, lynda.com!). Check out Harvard CS50 (cs50.tv), MIT OCW (ocw.mit.edu), see.stanford.edu, udacity, coursera, academicearth.org and Khan Academy (and in a few months, http://edxonline.org/). Start at the basic courses (CS50 is the best starting point).
That's the best thing you can do. Sure, you can start coding right now but you don't know what you're missing. You have the luxury of not having to worry about money in the sort term, so make the most out of it and educate yourself. You'll get nowhere if you don't know the fundamentals of how computers/web/operating systems/... work.