We realize this is a curriculum, not the best curriculum. We'd love your feedback on whether this is useful, and what we might change or add.
Also if you’re so inclined, we’d love feedback on our product SlideRule itself (a Yelp-like catalog of online courses), which you can access it by clicking on “COURSES” in the header.
EDIT (based on some of the comments):
We're very encouraged to see the response to this.
1. On which other subjects would you like to see such Learning Paths?
2. If you're interested in helping us build more learning paths (on any subject), we'd love to hear from you (in comments here or at email@example.com)
For me the biggest hurdle by far is deployment. It's honestly impossible to describe how much of a gulf there is between those who see it as a completely trivial matter and to those who don't know what's going on.
What part of the deployment process are you having difficulty with?
I want a tutorial that starts with "You want an app to do X with your friends, like an imitation of Doodle for planning Dungeons and Dragons sessions? The real way? Set aside $X money/month, book a domain name, and we're going to set up a real website, incrementally, and publicly available at every step along the way."
Stuff like Heroku people make sound like it's a one stop shop but it feels like it hides too much and you don't have access to your files like you do in your desktop. It's an environment conducing to pushing out stuff quick, not learning.
I'm trying to teach a friend of mine web-development, but she struggles with OOP. Also I teached programming at a company I worked last year and all the trainees had problems with OOP.
Somehow the basics of OOP came to myself rather easy. I only had problems with the applied stuff, because all tutorials about OOP where with animals and cars.
The people I try to teach mostly have problems with the basic concepts.
Actually the optional piece where he went through a derivation of OOP at the end of the Scheme portion was also one of the most helpful things for me.
The only difficult part was some of the implementation. Function calls on "self" took a while to get used to.
While it's not explicitly an OO tutorial it was really helpful for me, coming from a web development background, to better understand how ideas like inheritance play out in a real application. Seaside is a component-based framework, so ideas like instances and subclassing objects with different features were very concrete. On top of that, when viewing the site in your browser in dev mode you can click on any component and explore its state.
Of course one also has to pick up Smalltalk for this to work out, so it does require a particular commitment! But Smalltalk itself is a great way to learn OO, as it's based entirely around objects and messages, using a very simple syntax. Even if other OO languages don't fully adhere to this idea, it's still helpful when moving on to other ones. A great way to learn Smalltalk is Pharo by Example. http://pharobyexample.org/ Actually, one could just use this on its own to learn OO. But playing with Seaside was a lot of fun!
Otherwise, I found the OO portion of Learn Python the Hard Way to be quite good, and that's probably the better choice for pretty much everyone. :)
Separately, I'm curious -- which bootcamp did you attend and how was your experience?
Also, checked out your profile. Domi sounds like an awesome idea with tons of potential!
Great project though!
I do think 80+% of this material (maybe everything but the "learn to code" piece) is covered in Michael Hartl's Rails Tutorial: http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
That book singlehandedly took me from "crappy C programmer" to "someone with enough knowledge to be dangerous" as a web dev.
It was written to prepare beginners for Michael Hartl's book.
We'll be sure to check out the book for the Ruby version of the Path.
That said, this is just one web-dev path and doesn't in any way claim that Python is superior to the alternatives. There can be so many more - on RoR, Node or even more recent ones like scala .. hope experts will help us build those. If you are interested, please write to us at firstname.lastname@example.org!
You have to structure your stuff good, so most of it can be automated. Doing this later can be a real PITA.
"My apologies if you found that disorienting! You are right that CS101 becomes a prerequisite for CS253 (if you don't know python already). The reason I started with CS253 is because, personally for me, it helped a lot to know the top level concepts of "How web works" and the front-end (because that is what a normal user sees) and then go into concepts of server side languages which might seem too involved and dry to a beginner."
I do really admire and appreciate what you're doing. I'm a self-taught web dev, and the most overwhelming part was just figuring out what to learn next. I'm glad someone is trying to solve that problem for others!
I actually deliberately didn't use Django specifically because it's so complicated for beginners (and for pros, IMHO). I was trying to avoid magic. Webapp2, which is the web framework GAE users, and what we used in the course, is about as simple as you can get without starting from scratch.
That said, the webapp2 decision is by far my biggest hesitation in recommending it. Webapp2 just doesn't have the community support; whether django is too "heavy" or flask too "light", they're both popular, which means they have great support, plugins, help on SO, and a lot of developers familiar with them.
Webapp2 also hasn't seen a release since 2012.
I write this having recently completed a small consulting project where I helped a team on GAE move from Webapp2 to django. The productivity gains just from using django plugins and builtins was insane. They had been on webapp2 because their dev learned webdev on your course, and I think he would have been much happier had the course included a more widely used framework. Lock-in on Appengine is also a major issue; the work to move off can be enormous, especially if you're using a framework designed for GAE.
Again, I totally understand the decision to use webapp2 and the course is still a huge net positive. But if you ever think about revising it, I'd recommend considering another framework, and possibly even using Elastic Beanstalk.
EDIT: I understand django can take a little more to get up and running, but most people learning Python are going to have to learn it very soon anyway. I learned how to program by doing the django tutorial, and didn't find it burdensome at all.
I personally don't like working in frameworks of that size because I find myself fighting them to do what I want.
For the course itself, I really wanted the students to get as close to the server as possible. Then, when some of them switch to the heavier frameworks, they'll have a better idea of what the framework is doing and what is possible. The course had a time constraint on it as well.
All in all, your anecdote reenforces my feelings on the topic :)
Whatever people might say about webapp2 and App Engine, I think they were the right choice for the course. I had no problem moving on to other frameworks or moving away from App Engine, having gotten a solid understanding of the concepts from your course.
Once again, you have my sincere thanks.
The django docs in particular are intuitive to follow and pretty comprehensive. Then stack overflow is good for the stuff that's not in the docs.
I'd love to help/contribute to the marketing related courses if you decide to expand your subject offerings.
Checked out your profile. I'll be in touch if/when we decide to expand to marketing.
As a theoretical, how about medicine, pharmacology, every flavour of engineering, fine art, music, architecture.
Coding, graphic design seem to have a few things going for them that make them a very natural fit for self learning online. Part of it is not needing much outside of a laptop and an internet connection, but math needs even less and you find far fewer autodidact mathematicians.
I suspect that not needing a curriculum is actually a part of it. I don't dispute that having a curriculum available to you can be useful and that following a curriculum will get you from start to finish will probably give you a relatively efficient, high success rate path. But, I think that the more self contained and small an effective quanta of learning is, the more suited it is to self learning.
That said, we're in this for the long haul, and we definitely want to try and push the boundaries in areas other than software/technology down the road.
We'll work on structure / organization and release an updated version later this week.
BTW, as a side note. I think a great idea for a data course would be
Learn to make http://xkcd.com/980/ as its starting point.
Where does he get this data. How does he work with it. Why is it represented like this.
Are you planning on adding a feature like this?
It's another really good list of courses :)
It's in beta but it's pretty great from the looks of it.
I ended up buying Manning's Node.js In Action. It's not bad and I'm about halfway through it. I'd like if it included some exercises instead of the follow along approach.
Do you have any recommendations?
You need some digging to find the courses that interest you, but it's well worth it.