Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What features are important in a programming language for young beginners? [closed]

I was talking with some of the mentors in a local robotics competition for 7th and 8th level kids. The robot was using PBASIC and the parallax Basic Stamp. One of the major issues was this was short term project that required building the robot, teaching them to program in PBASIC and having them program the robot. All in only 2 hours or so a week over a couple months. PBASIC is kinda nice in that it has built in features to do everything, but information overload is possible to due this.

My thought are simplicity is key.

When you have kids struggling to grasp:

if X>10 then <DOSOMETHING>

There is not much point in throwing "proper" object oriented programming at them.

What are the essentials needed to foster an interest in programming?

Edit: I like the notion of interpreted on the PC as learning tool. Due to the target platforms more than likely being somewhat resource constrained, I would like to target languages that are appropriate for embedded work. (Python and even Lua require more resources than the target likely to have. And I actually kinda like Lua.) I suppose that is one of the few virtues BASIC has, it has been ran on systems with less than 4K for over 30 years. C may not be a bad option if there are some "friendly" tools available such as Ch.

like image 883
NoMoreZealots Avatar asked Mar 25 '10 19:03

NoMoreZealots


3 Answers

The most important is not a lot of boiler plate to make the simplest program run.

If you start of with a bunch of

 import Supercalifragilistic from <expialidocious>
 public void inherited security model=<apartment>      
    public : main .....

And tell them they "not to worry they aren't supposed to understand that" - you are going to put off both the brightest and the dumbest.

The nice thing about python is that printing "hello world" is print "hello world"

like image 94
Martin Beckett Avatar answered Oct 22 '22 20:10

Martin Beckett


Fun, quick results. Capture the attention span of the kid.

Interpretive shells like most scripting languages offer (command line) that lets the student just type 1 or 2 liners is a big deal.

python:

>>> 1+1
2

Boom, instant feedback, kid thinks "the computer is talking back". Kids love that. Remember Eliza, anyone?

If they get bogged down in installing an IDE, creating a project, bleh bleh bleh, sometimes the tangents will take you away from the main topic.

BASIC is good too.

Look for some things online like "SIMPLE" : http://www.simplecodeworks.com/website.html

like image 20
codenheim Avatar answered Oct 22 '22 20:10

codenheim


A team of researchers, beginning at Rice, then spreading out to Brown, Chicago, Northeastern, Northwestern, and Utah, have been studying this question for about 15 years. I can't summarize all their discoveries here, but here are some of their most important findings:

  • Irregular syntax can be a barrier to entry.

  • The language should be divided into concentric subsets, and you should choose a subset appropriate to the student's level of knowledge. For example, their smallest subset is called the "Beginning Student" language.

  • The compiler's error messages should be matched to the students' level of knowledge. If you are using subsets, different subsets might give different messages for the same error.

  • Beginners find it difficult to learn the phase distinction: separate phases for type checking and run time, with different kinds of errors. For this reason, beginners do better with a language where types are checked at run time, i.e., a dynamically typed language.

  • Beginners find it difficult to reason about mutable variables and mutable objects. If you teach pure functional programming, by contrast, you can leverage students' experience with high-school and middle-school algebra.

  • Beginning students are more engaged by an interactive programming environment than by the old edit-compile-link-go model.

  • Beginning students are engaged by splash and by interactivity. It's good if your language's standard library provides built-in support for creating and displaying images. It's better if those images are supported within the interactive programming environment, instead of requiring a separate player or viewer. And it's even better if your standard library can support moving images, or some other kind of animation.

    Interestingly, they have got very good results with just 2D images. Even though we are all surrounded by examples of 3D computer graphics, students seem to get very engaged working with just two-dimensional images.

These results have been obtained primarily with college students, and they have been replicated at over 20 universities. However, the research team has also done some work with high-school and middle-school students. The first papers on that work are just coming out, so I'm less aware of the new findings and am not able to summarize them.

like image 5
Norman Ramsey Avatar answered Oct 22 '22 19:10

Norman Ramsey