Archive for the ‘Learn Programming’ Category

Technical writing is hard

Monday, June 16th, 2008

Having spent a lot of time in the last 3 years writing programming education material, I recognize just about everything said here. (The section "Writing clearly" is the interesting one.)

Teach the (other) controversy

Saturday, May 31st, 2008

My programming education began when I took a C language course at the local community college. I can still recall how strange I found the language's rules about when I could and couldn't use a variable (e.g. variables declared in one function can't be read or modified in others), for ...

Look, ma, no lesson plan

Wednesday, May 21st, 2008

Just about everything I described in my talk about what goes wrong in education goes wrong at nearly every step in this 10-minute video. I don't mean to pick on this guy, but he's the top Google video result for "python tutorial", and that makes me sad. Sure, sure, I ...

Video of talk on Pigeon

Sunday, May 18th, 2008

Last month at LugRadio Live USA 2008 in San Francisco, I gave a talk discussing programming education and Pigeon, my learner's programming language. Videos of all the talks at LugRadio Live are going up. Below is my talk, which you can also download. (I occasionally mumble a few key words. ...

Little things add up

Tuesday, April 8th, 2008

A discussion of various little things about Python 3.0 that make it easier to learn than Python 2.x.

Subtlety hinders grokability

Monday, March 17th, 2008

Here's some nice paragraphs recycled from an old crappy post no longer worth reading. In C, the conceptual and syntactical distinction between definitions and declarations is blurred. This is a prime example of a misguided attempt at conceptual unity in design. I think what goes on in designers' heads is that they ...

if !johnny.canRead() then…

Monday, February 4th, 2008

The state of educational programming languages. Ideally, a proper programming education would start with a thorough discussion of how data is represented as bits, followed by a brief tour of encryption, compression, information theory, data structures, search/sort algorithms, and machine architecture. Unfortunately, students are just too impatient to start their education ...

Poorly explained aspects of Java explained not so poorly (part 1)

Saturday, October 20th, 2007

Most Java instruction materials fail to make certain basic things as clear as they could be, so here's a FAQ-like rundown. What are the types of values in Java? Java divides its types into what it calls 'primitive' and 'reference' types (this terminology is unique to Java): The primitive value types consist ...

Lost in translation

Thursday, July 12th, 2007

A learner's guide to the terminology and concepts of software build processes. What's the difference between an assembler, a compiler, and an interpreter, and what's a linker? Assemblers Let's start with the clearest case. An assembler is a program which translates 'assembly language' code into processor instructions (a.k.a. 'machine instructions'/'machine code', a.k.a. ...

Singletons considered harmful

Wednesday, July 4th, 2007

Alex Miller, Steve Yegge, and this poster explain. Among the reasons given: Singletons are most commonly used as excuses to have global variables and functions. As Steve puts it, "using the Singleton is usually just a sign of premature optimization..." . Singletons make it difficult when later you decide you actually need more than ...