So, I'm walking this edge right now with a few middle schoolers. At the beginning of the (school) year, we started doing a programming class using scratch. The operative theory was to be able to explore, get the cause/effect thing going, some debugging, and be able to build something that they could distribute and have other people play. It was a success for a while, within a class or two, pretty much everyone had something that was more than just basic behavior. There was some animation, some 'cat chases mouse', and other basic games. But they quickly hit the wall where scratch is just…
Okay, here are the basics. Sorry for the delayed response; I'm used to reddit with its handy orangered envelope.... For the past dozen years, I've taught in a very traditional way. I'd give a lecture on a programming concept, then assign several small programming assignments of increasing difficulty to practice the new concept. Once most of the class is fine with the new thing, move on. Rinse, repeat. This year from day one I had all 130 assignments up on a class web page, each worth anywhere from 5 points to 400 points (most in the 30-100 range, though). I spent a couple of days…
Set up a Linux computer (Ubuntu Linux is the easiest to set up), and spend the summer learning to program in Python. Here are some of the best online Python tutorials, including a link to videos and course material for MIT's introductory computer science course, which uses Python: http://www.quora.com/How-can-I-learn-to-program-in-Python/an... Build something that you want to use so it will be meaningful to you. Do you have a blog? That's usually a good first exercise. It's easy to do using Flask -- follow the tutorial (http://flask.pocoo.org/docs/). Here are some tips to get you…
Kids who do have their own laptops available are going to be gently hampered by choice-paralysis. What programming language do they learn[1]? Where do they start? What do they need to get to start? They're also going to be gently hampered by having various incompatibilities - the programming environment will cause some stuff to not compile and while that's a great learning experience it's not what you want someone to be faced with on their first "Hello World" example. Note that all those home computers that people started on, typing listings from magazines, did not have those…
I wrote this: http://learnpythonthehardway.org/book/ It's free. Do this: 1. Use your current computer. It doesn't matter if you have Linux, OSX, or Windows. What matters is that, right now, you want to learn to code, so you should go learn to code, not learn to setup a new OS. 2. Just use gedit. Don't use vim, vi, emacs, or any "hardcore" editor. On a Mac if you're using a non-English keyboard, use Textwrangler. Learning a new editor is not learning to code. 3. Start now, do what I tell you in the book. Type code in, do not copy-paste, make it run, fix it until it does, do the…
I've been in the process of teaching/pointing in a general direction a couple of friends on how to program. "Learn Python the Hard Way" was far too boring, and wasn't practical enough for my friends. If you're used to and good at learning in a school format, MIT OpenCourseWare is excellent. My friends also liked the videos better than learning by book. http://ocw.mit.edu/courses/electrical-engineering-and-comput... I would go in this general order for beginners. Do all the assignments, and don't cheat. Ask for help on explaining the solution. These courses help in building good…
A quote from Learn Python the Hard Way: "Warning Windows is a big problem for Python. Sometimes you install Python and one computer will have no problems, and another computer will be missing important features. If you have problems, please visit: http://docs.python.org/faq/windows.html (http://learnpythonthehardway.org/book/ex0.html). Why waste time messing with it? In the time you spend fucking around with Windows, you could have set up a Linux system. And Linux is the OS more commonly used by startups and physics labs (which is why the OP wants to learn how to program).
The official Python, http://docs.python.org/tutorial/, written by Guido van Rossum himself, is one of the most concise introductions to Python I've read. Just skip the first few chapters. Other good books are: * Learn Python the Hard Way -- http://learnpythonthehardway.org/index * How to Think Like a Computer Scientist/Think Python (now Python for Software Development) -- http://www.greenteapress.com/thinkpython/ Dive Into Python is good, but IIRC (from Dive Into Python 2), Mark Pilgrim tends to use very convoluted solutions to simple problems. The solution might be superior in terms of…
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…
> If you truly believe that learning PHP as a first language is bad for a new programmer, then you shouldn't bite your tongue. But you should be prepared to explain why and present a good alternative and maybe even offer some hands-on instruction. I routinely recommend python for this, and somewhat more aggressively to people who are making php noises. Not because I'm a massive fan of python, but because it has relatively little syntax and tends to fail in very obvious ways, which is exactly what you want here. On rare occasions I'll offer some direct tuition, but usually I just point people…