"the course inadvertently taught what happens to any badly run coding project: deadlines will be missed"
There, fixed that for you. Not all projects are late.
A free Computer Science 101 course that planned to launch in February 2012 will now launch on 23 April. Stanford Lecturer Nick Parlante announced the class in late 2011 and explained, in this video, that it would include some rudimentary coding. Intentionally or not, the course inadvertently taught what happens to any coding …
There are two spin-offs from Stanford's experiment (three courses, started on time back in october); the other one offered two courses including a CS101 (using python) that're having finals this week. Their next few courses will start halfway april. The spin-off this one is part of is currently running some six courses, though they did get delayed at the start as well. Would be interesting to know why; time for an interview and some background information, maybe?
Then there's MIT, they've also started a free online course and are looking to expand. Having done the first three (and a little overworked now with the next batch), I did get a "statement of accomplisment", basically a PDF saying how many points I managed and that it's not worth any official credit in any way. The lack of official credit disappointed some, but I for me am already pretty happy to've finished the courses with good marks. See class-central.com for an overview of what's on offer and what's coming. As time sinks go, this is one of the better ones.
People sign up, partake, get a "certificate of accomplishment" that currently has no formal value but does record that they partook and their score. The company is left with a database full of people with newly-acquired skills, thousands of them. Skim off the top N, place them with employers for fees that undercut recruiters a bit.
Now this mightn't be all that great for a CS101 course, but they're not stopping there. In fact they didn't even start there; the first three courses given were all a bit more advanced. CS101 is just a nice way of reeling in the interested, getting them enthousiastic, and teaching them more.
I think it's a good bet that even just a few placements will allow them to host their courses and record new ones. I can see why they're willing to bet a company on it, even if it sprung from the sheer sense of achievement having taught a class of thousands in the earlier experiment.
JavaScript has to be the language of choice for a course intended for absolute beginners today. It may not enforce the use of rigid structure but the same was true of BASIC when it was found on every micro computer in the 80s and it didn't stop people learning. Most importantly, just like BASIC in those days, every computer has the tools there already to begin learning JavaScript. In any case, it is still possible to write poorly structured code in languages that expressly try to prohibit it like Java.
I recall being really upset on a number of occasions when about 10 or 11 years old that after a huge amount of work, I still couldn't resolve a bug in my poorly written spaghetti code. I restarted a few projects from scratch. Each time, while I hadn't recognised the significance, I was putting right mistakes in the code structure.
Maybe I was a bit slow off the mark but through these repeated frustrations, I eventually joined up the dots and recognised that I needed to plan a structured layout to my code before I began any project. I think this is the most important lesson any programmer will ever learn and I'm sure most do, eventually at least. But I REALLY learnt it. Would beginning with with Java prevent learning the significance of this lesson?
As a lecturer in a university, I have found that the problem with C++ is that the students spend most of their time trying to get to grips with the language itself. You spend most of the course trying to teach them the language. With Python they don't have to worry too much about the intricacies of the language. I can concentrate on teaching techniques that can help them think like a computer scientist which is adaptable to most other mainstream languages. I have been using the MIT's Introduction to Computer Science course, although I have had to adapt it to Python 3.
The only thing I hate about Python is the inability of keeping variables as one type! I wish Pascal was still popular! I miss Turbo Pascal 6.