#48 overall
CS253 Web Development
Udacity
11 recommenders · 11 threads · recommended in 5 years, 2012–2021 · score 11.2
CS253 is a Udacity web development course taught by Steve Huffman, co-founder of Reddit, in which students build a web application covering HTTP, cookies, databases, caching and password hashing. It was built on Google App Engine and has since been discontinued from Udacity but remains available on YouTube.
Commenters call it an excellent, high-quality course that explains the theory and reasoning behind web development rather than just tools, and say it made the broader picture of how web parts fit together clear.
Recommendations by year
20062026
Man your blog post brought back so many memories. I went through just about the same learning path, and in 2012 as well. Like you I'd done CS in HS and taken one class in college, but couldn't build anything real if my life depended on it.
To me what really made me transition is their WebDev course In all seriousness, though, is their CS253 the greatest course ever or is it the greatest course ever?! Huffman was just brilliant in providing a nice framework with which to think about development. After I took that course, it was if Googling my way through problems and learning from the available resources on the internet became that much easier, because now I could see how all of these little parts fit into a broader context.
That's one thing that definitely disappointed me about how Udacity has grown. That course taught by Huffman was so good in that he explained so much of the theory and reasoning, and not just tools. Peter Norvig's advanced Python course is another one of their offerings which feel very similar. Lately, though, I think their courses have resembled much more what you find on CodeAcademy or places like that: A lot more focused on tools, content, etc., and less so on the broader picture.
I strongly recommend CS253. The course has just the right level of depth. Unless it's changed, it uses Google App Engine, but don't worry about that because it teaches you all the concepts about web development that you need to know to move on. This course was one of the biggest things that led to me becoming a professional developer (the other was http://www.ccs.neu.edu/home/matthias/HtDP2e/ although I didn't finish it completely)
I strongly recommend Udacity's Web Development Course:
https://www.udacity.com/course/cs253
I heard about udacity on the radio and by chance picked Intro to python and then CS253. I still have a little Twitter app running on GEE. Mind was blown. Great courses, shame CS253 has not been kept and updated.
I particularly remember the story in the course of him having a list of all his users usernames and passwords unhased on his laptop and it was stolen. He said he was embarrassed and emailed them all to let them know. Lesson was to hash passwords. Cant remember if that was for reddit all some other project he did.
Short path:
- "Learn Python the Hard Way" by Zed Shaw. 52 exercises to teach you just enough Python to be able to continue.
- Next, an excellent course by Reddit's co-founder, Steve Huffman, CS253. It was discontinued from Udacity, but is available on YouTube: https://www.youtube.com/playlist?list=PLAwxTw4SYaPlLXUhUNt1w...
It will take you through the basics of the internet, HTTP, browsers, requests, cookies, databases, caching, hasing, passwords, by having you build a web application. Granted, it's on Google App Engine, but still, most of the router syntax out there is similar (webapp2 from web.py, similar to Flask, Tornado, and others).
You will learn a lot, and you'll see the result right in your browser by having a live web application. You can then take that knowledge and develop tools for yourself and others and put them online for all to access and use.
If you want to do it better and "leap-frog", read Brett Slatkin's "Effective Python: 90 Specific Ways to Write Better Python". This book will make you write code as if you had been coding for years... But, that's only doing it "right", you need something to do right in the first place: you've been in business, strategy, and operations, and you've been trained in mechanical engineering: I think you are in no shortage of ideas and things to code, so have a it.
You're in an excellent position of having been at the intersection of a bunch of cross pollinated fields, and you'll have a new skill to bring them together and do wonders. All the best!
For anybody who doesn't need this much detail, there's a great intro to this topic in the Web Dev course on Udacity: https://www.udacity.com/course/viewer#!/c-cs253/l-48666069/m...
I think the main reason why any reasonably complex grader is not allowed to run after the course has officially finalized is cost(s).
While for users it's free to take the course, the offering company probably has to pay fees to whatever IaaS they're using to run the grader(s). I would imagine to make it 'cost-effective' for their purposes, they'd be interested in as many people as possible benefiting from the grader's functionality if they're being charged by the hour for example or some other block-allocation unit.
I would suggest giving Udacity a try as well. Most of their courses do not have deadlines.
For example, here is a great course they offer on web development: https://www.udacity.com/course/cs253 , co-authored by one of the Hipmunk and Reddit creators.
you can absolutely pick up programming on ur free time. many of the best programmers are self-taught. i recommend completing udacity cs101 and the udacity cs253 to have a strong foundation in programming and web app development. after you complete these courses i'm sure you will be confident enough to pick up a web framework tutorial like django or ruby on rails and continue from there.
consistent learning every few days for a few months will set you to mastery in a year or so. good luck with learning!
I know exactly how you feel! Every day I read HN and bookmark a ton of stuff, and I had been wondering how I'm going to go through it all. But what helped me the most were two things:
1) I explored around enough to find the particular technologies and problems that interest me. Basically I reflected upon all my bookmarks and tabs and though, "this must be what I'm drawn to!"
2) Create a project to serve as the basis for learning. I had been spending a lot of time reading and evaluating possible things, but I hadn't really sat down and worked on a project. Not only does working on a project solidify your knowledge, you will be exposed to new techniques as you solve your problem which can lead you into other areas of interest. While you are adding more things to look at, you at least have a path where your knowledge is interconnected.
Here's how my own story has gone so far: I had taken the web development course on Udacity (it's in Python and you learn how to make a simple blog and wiki; I highly recommend it). But as I played around with things I realized that functional programing mapped really well to the way that I solve problems.
I sing byzantine chant, and realized that there's no standard and open file format to exchange notation in. I got something working decently, but then realized that at my current level it was a bit too big of a project for me! But my point is that you should examine your hobbies and interests outside of programming, because they could lead you to a particular avenue of inquiry.
Even if you don't "complete" your project, you will learn a lot in the process, and it will give you a path to follow through a network of technologies. And it also doesn't have to be something that nobody has made before; I also play sax, so maybe something to help learn scales might have been a more straightforward project. And if you get stuck on something that somebody else has already made, you can always hit up Github to see how someone else solved it. :)
While I put that project on hold, my friend came up with the idea to work on a poker visualization program. He's a professional programmer so he has been able to serve as a guide for me for things that I don't know much about, like algorithms and statistics. After a lot of hard work and with help from him I was able to get things working. The domain of the problem mapped well to functional programming, and his desire to have it run in a web browser led me to the right technologies (Clojurescript with C2 for visualization). So if you don't have some hobby or interest that can map to a problem that you can work on, see if you can find someone you know or someone online to help serve as a guide.
That being said, one thing that I specifically recommend learning is version control. It took me a while to wrap my mind around Git, but once I learned it it has become indispensable for me. It lets me explore different avenues with my programs besides creating 10 copies of the same file, and also lets me roll back when necessary. This tutorial helped me out a lot: http://www.vogella.com/articles/Git/article.html
I apologize if any of this is unclear; I'm recovering from a concussion so my writing (and coding) hasn't been the best.
The web application course is taught by Steve Huffman (creator of Reddit) and the first lesson is actually to write a "Hello World" script and publish it on App Engine.
For anyone new to Python, I highly recommend Udacity. It's still a little unbelievable to me that it's free.
*edit: I should have mentioned that this course uses app engine throughout it's entirety. Not just the first lesson :)
I'm still a student myself and won't pretend to know which is best, but I can share the resources I've been using.
There are two great interactive courses on Udacity.com that will be helpful if you choose Python. The first course teaches you how to build a basic search engine while learning the Python language. Sergey Brin even makes an appearance. The second course is on how to create a web app using Python taught by a co-founder of Reddit (Steve Huffman). Both are totally free and incredibly high quality.
Codecademy.com will teach you Javascript for free. The Javascript tutorial is really great, but the jQuery tutorial has mixed reviews.
Finally, the de facto place to learn Ruby on Rails is railstutorial.org. The content is freely available as HTML, but the PDFs and screencasts are well worth the money.
Good luck!
Do the Udacity course on Web Application Engineering (CS253 http://www.udacity.com/overview/Course/cs253/CourseRev/apr20...). It just started a few days ago and goes for the next few weeks. It will likely provide you with the baseline skills to build a small project of your own before your next semester starts.
true, but sounds incomplete! check this video's https://www.youtube.com/watch?v=zmeDzx4SUME, it's called "Growing Reddit - Web Development" and in the description, they say "This video is part of an online course, Web Development. Check out the course here: https://www.udacity.com/course/cs253." but can't find it in the Intro to backend course https://www.udacity.com/course/intro-to-backend--ud171