Sunday, October 21, 2012
Alternate Paths: MOOCs
It seems that a consensus framework is building for Massive Open Online Courses (MOOCs). I gather from these videos that an emphasis is made on community building and networking. I can certainly see how that would ease the transition into online learning for the new student. And, as emphasized in those videos, give them a dual take-away, in both knowledge and a network of like minded friends.
So ... I better take a MOOC to figure it all out. Ideally I'd find a MOOC starting up that is about MOOCs themselves. (I'm not sure why MOOCs have start and end times, and don't just have "class of X" starting every week. That's something to learn.)
Top MOOCs are: Udacity, Coursera and edX. Check 'em out.
Alternate Paths: Nand to Tetris
It is the kind of thing us old timers did, as we climbed from tiny 70's computers to next (for us) millennium monsters. Looks good.
Wednesday, June 27, 2012
Alternate Paths: Ken and the MS stack
Wednesday, February 8, 2012
Alternate Paths: O'Reilly School
Their blurb is:
Earn Your IT Certificate in 2012
Only with online courses from the O'Reilly School of Technology can you master in-demand IT development skills by using programming to learn programming.
It looks pretty good with a wide range of courses.
The front page is here: O'Reilly School of Technology. Check it out. I think I might, actually, for a little refresh on technologies I haven't used in a while.
Monday, January 23, 2012
Alternate Paths: Udacity
Felix Salmon has a really great report on the Stanford AI experiment:
Thrun told the story of his Introduction to Artificial Intelligence class, which ran from October to December last year. It started as a way of putting his Stanford course online — he was going to teach the whole thing, for free, to anybody in the world who wanted it. With quizzes and grades and a final certificate, in parallel with the in-person course he was giving his Stanford undergrad students. He sent out one email to announce the class, and from that one email there was ultimately an enrollment of 160,000 students. Thrun scrambled to put together a website which could scale and support that enrollment, and succeeded spectacularly well. Just a couple of datapoints from Thrun’s talk: there were more students in his course from Lithuania alone than there are students at Stanford altogether. There were students in Afghanistan, exfiltrating war zones to grab an hour of connectivity to finish the homework assignments. There were single mothers keeping the faith and staying with the course even as their families were being hit by tragedy. And when it finished, thousands of students around the world were educated and inspired. Some 248 of them, in total, got a perfect score: they never got a single question wrong, over the entire course of the class. All 248 took the course online; not one was enrolled at Stanford.
He follows with news of a new venture:
But that’s not the announcement that Thrun gave. Instead, he said, he concluded that “I can’t teach at Stanford again.” He’s given up his tenure at Stanford, and he’s started a new online university called Udacity. He wants to enroll 500,000 students for his first course, on how to build a search engine — and of course it’s all going to be free.
Looking out there now, I see a couple computer science courses. This could shape up well.
Tuesday, January 17, 2012
Alternate Paths: Raspberry Pi
In my sidebar I recommend using an old abandoned computer to learn the LAMP stack. If you, friends, or family, have such a computer sitting around, it's obviously the cheapest path.
The Raspberry Pi is a very similar and low cost alternative. As Roy Wood reports:
The Raspberry Pi system is a single-board computer based on the Broadcom BCM2835 system-on-a-chip. The specs include a 700MHZ ARM CPU, a VideoCore IV GPU, up to 256MB of RAM, an SD card reader, USB ports, and an optional ethernet port. The device supports common USB peripherals like mice and keyboards, can be connected to a TV or monitor, and will run Debian Linux. Oh — and did I mention that a Pi will cost a mere $25 or $35, depending on the model?
The Pi is just entering production. It is an alternative, but might be a little tight on memory, compared to the typical disused closet PC.
Monday, January 2, 2012
Alternate Paths: Code Year
Sunday, January 1, 2012
Alternate Paths: Scratch, Alice and Greenfoot
Alternate Paths: Google App Engine
Google App Engine
There are currently three languages options offered: Go, Java, and Python.
I did a little by the Python path, and liked it. I think Python is a better match than Java for a widely distributed cloud solution. It's just so much lighter to interpret a page, rather than launch an object-oriented runtime. If you take the Python path, the "stack" is HTML, CSS, the Python language, the Django framework, and then the AppEngine API.
I haven't tried the Go Programming Language and won't comment on that option ... other than to say it is probably a fine language, but wouldn't yet have the market potential of Java or Python.
Alternate Paths: HTML5
Saturday, December 24, 2011
Alerntate Paths: via Eric Raymond
That's a bit different than the order I suggest in my sidebar. I'm basically saying (using his numbers) do 2, then 3, then 1. Perhaps that's because I expect that people coming to my site have some small experience to programming and are committed to a long-term effort.
If you aren't sure, and are testing the waters, then I'm with Eric. Dabble with programming first, and then attack a software stack (like LAMP).
Friday, December 23, 2011
Alternate Paths: Processing
Wikipedia describes Processing as:
an open source programming language and integrated development environment (IDE) built for the electronic arts and visual design communities with the purpose of teaching the basics of computer programming in a visual context, and to serve as the foundation for electronic sketchbooks. The project was initiated in 2001 by Casey Reas and Benjamin Fry, both formerly of the Aesthetics and Computation Group at the MIT Media Lab. One of the stated aims of Processing is to act as a tool to get non-programmers started with programming, through the instant gratification of visual feedback. The language builds on the Java programming language, but uses a simplified syntax and graphics programming model.
It looks really good to me, as a first language, as does this Learning Processing site.
For someone looking for a first programming experience, and immediate graphic feedback, it looks pretty ideal.
Alternate Paths: JavaScript
What's not to love? Well there is a pretty interesting discussion here at John Resig's blog. JavaScript is kind of a messy language, evolved over time to get things done in web pages. That makes it a little hard for me to endorse for beginners. As comments at John's page show though, people have learned JavaScript as their first programming language, and they endorse it.
JavaScript is also used at Codecademy to teach first-time programmers. There are many happy reports coming from Codecademy students as well.
So perhaps this is a good first-step approach for many. It doesn't start at the low levels I prefer, it kind of starts at the top of a web-programming stack, but if you like programming after a JavaScript exposure, you can branch back down.
Update: Alternate Paths: HTML5
Thursday, December 22, 2011
Alternate Paths: Java
That said, I'm not sure that it should be a "first language" in this day and age. Java is a very formal and structured language, and requires some conceptual computer science thinking for efficient design and use.
Perhaps if you are in a CS curricula and Java is part of the course plan, you'll be fine. I'm not so sure that it is as easy to just Google "java tutorial" and the "java web tutorial" and build it up on your own.
I'd say go with PHP (sidebar), or Python, or Ruby as a first language, and then come back to Java if-and-when you need it.
Update: Greenfoot might offer a gentle Java introduction.
Alternate Paths: C++
I tried to like C++. I really did. I even bought Bjarne Stroustrup's book, "The Design and Evolution of C++." I'm sorry. That book just reads as an apology, a justification, for why C++ was such crap.
And C++ was bad. It was the C successor that broke the C dynasty. Apple went to Objective-C, a much better "Object C." Sun cleaned C++'s clock with Java, and when Microsoft did a fork, it was from Java to C#.
There was a time when C++ was more heavily supported, particularly as a Microsoft programming language, but that day is gone. I don't think there is much of a need for advanced programmers to learn it, and beginners should avoid the horror.
Alternate Paths: Ruby
I think Ruby works well for a beginning programmer's first language. It fills a niche similar to Python and shares many of the same strengths. I agree with Luke Maciak at Terminally Incoherent that either of these two languages avoid the initial complexity of a strongly structured and typed language like C++ or Java.
So, sure. Learning Ruby and then Rails is a perfectly valid path into programming.
You might Google some of the "Ruby versus Python" arguments before you begin, but as a first language it might not matter that much. Both are great.
(I put Ruby and Python as both more "advanced" than PHP, but whether that means you should skip PHP, or learn it first, is up to you. In my sidebar I assume the PHP path, as part of the traditional LAMP stack.)
Tuesday, December 20, 2011
Alternate Paths: Lisp
Vladimir Sedach suggests that:
Common Lisp is the best language to learn programming
I can see strengths and weaknesses in the approach. Lisp as highly regarded as a language, but doesn't have a tremendous job market. It might be very good to develop core skills, but I suspect that after learning Lisp students would look for a more common and marketable skill set.
I'd welcome comments from anyone who started with Lisp first.
Monday, December 19, 2011
Alternate Paths: Arduino
Sunday, December 18, 2011
Alternate Paths: Python
But if you just want to program, quickly, it's hard to beat Python, and in particular the Dive into Python resource.
The strength of it is that you'll do some programming soon, and get a feel for what the activity is all about. You'll get to see how much you like sitting with your butt in a chair, trying to make things work. You'll learn whether the intermittent triumphs make it all worth-while.
The downside is that knowing just Python doesn't buy you a huge solution domain. Yes, you can write small programs, and they may be useful to you, but it's hard to deliver pure-Python to other users. You either have to embed them in a web page (as in LAMP, above) or make a full blown program, with installer, for a target machine.
On the other hand, LAMP is used on millions of web servers world-wide, and any LAMP skills you have will play across all of them.
Perhaps you should Dive into Python, and then if you like it, go for the full LAMP tour.