Showing posts with label alternate-paths. Show all posts
Showing posts with label alternate-paths. Show all posts

Sunday, October 21, 2012

Alternate Paths: MOOCs

I've long been a fan of online education. The origin of these pages was my past experience self-educating on the web. I don't think it's that hard, if you just do it. Hence the fairly straightforward sidebar to the right. I recognize though that it is hard to know you can just do it, until you've done it once or twice.

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

"Here [via boing-boing] is an absolutely inspiring TED Talk showing how 'self-organized computer science courses' designed around students building their own PCs from scratch engaged students and taught them how computers work at a fundamental level."

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

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

Code Year is a very interesting concept. It is a promise to send "a lesson a week" by the Codecademy folks. They don't give too much more info, do they? ;-)

I'd guess that it is a JavaScript-first programming path, based on Codecademy lessons.  As I mention on in my JavaScript page, Codecademy does have many happy users.

So if you like the JavaScript path, and weekly emails sound like the structure you prefer, go for it!

(Hat Tip Red Sweater Blog)

Sunday, January 1, 2012

Alternate Paths: Scratch, Alice and Greenfoot

I was just flitting about the webs myself, and came across this discussion of three recent educational languages.  The age targets are interesting:


I'd say Greenfoot comes closest to my target for my hypothetical audience (mostly 15-25, mostly male).  Greenfoot is a visual programming environment for Java which gives a jump-start to the interesting bits, with what looks like great visual feedback.

I kind of suspect that if you ended up here, you have an interest in programming for production (be that personal, open source, or commercial use).  For that kind of goal a Greenfoot and then Java path wouldn't be so bad.

Check out Alice and Scratch if you feel they better fit your profile.

Alternate Paths: Google App Engine

Can a new programmer jump right in and program the cloud?  It could be.  Google does have good documentation and tutorials at their main page:

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

In the narrow sense, HTML5 is just a new generation of the HTML markup language. In the broader sense though, HTML5 is an application programming environment. It is possible to deliver useful programs using that broader bundle of technologies (HTML5, CSS3, JavaScript, etc.). The key advantage to a HTML5 learning path is that you can write (and deliver!) programs without becoming an operating system or database expert.

We are perhaps at a bit of a juncture.  MobileBeat claims HTML5 will kill the native app.  It may, but that may not be something a beginning programmer needs to worry about.   I think it is enough that the technology is popular, current, and growing.  It's a good start.

Jochen Voss gives a quick overview in How to Write an HTML5 App?

Google "HTML5 tutorial" and "learning HTML5" for the latest, best, pages.


Saturday, December 24, 2011

Alerntate Paths: via Eric Raymond

Eric Raymond won infinite geek points with his essay The Cathedral and the Bazaar.  It at once cataloged the Open Source dynamic and gave it direction.  Slightly less known is his document How To Become A Hacker.  It is worth reading in full, but one interesting bit is the ordering of his road map for "Basic Hacking Skills:"


1. Learn how to program.
2. Get one of the open-source Unixes and learn to use and run it.
3. Learn how to use the World Wide Web and write HTML.
4. If you don't have functional English, learn it.


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

In contrast to all the other computer languages I've discussed so far, JavaScript is a client-side language. It can run purely in a web browser, which makes initial tinkering pretty easy. Assuming some simple HTML chops, the student can show off some real programs pretty quickly. It can be done on any PC with a text editor and a web browser. JavaScript is a web standard. If you program long, you probably will want some JavaScript skills.

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

Java is a fine computer language.  It currently finds application in devices ranging from cell phones, to enterprise commerce systems, to supercomputers.  By some measures it is the most popular programming language now in use.  For that reason it's probably fair to say Java is a language every serious programmer should learn, even if it is just to have a Java perspective.

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++

Just say no!

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

As mentioned previously, Ruby is a popular web-programming language.  There are many on-line resources for learning Ruby and its associated framework, Rails.

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

Lisp is an ancient computer language, born in 1958.  It has retained a following and respect for the last 50-plus years, particularly in the artificial intelligence community.

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



The Arduino (wikipedia, arduino.cc) is a little hobby and prototyping board.  It is programmable, but doesn't normally drive a screen or connect to the internet (though, it can).  The typical use is as a playground for simple programming and interfacing to the real world.

In my sidebar I'm big on Google searches for tutorials.  Search "arduino tutorial" and you'll see many, wonderful, things.

It provides a perfectly acceptable path to learn computer programming.  In terms of the "solution space" it provides ... well, you'll be able to do many small projects around the house, and you may join the Arduino ecosystem as a hardware or software developer.  There is a good argument that "the internet of things" is a big, coming, wave.

So, it may be a good fit for you.

Sunday, December 18, 2011

Alternate Paths: Python

In my sidebar I take you through the LAMP stack.  That is a bottoms-up approach, with a lot of learning along the way.  If it isn't a world tour of programming, it is at least a solid road trip.

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.