Wednesday, March 21, 2007

Best language to teach computer newbies

I have been TA-ing an elementary computer class for this term.  Initially I chose the class because I thought: "the basics of the basics, how tough (to mark the assignments) can it be?"  Turned out that I was very very wrong.

Well I have lots stuff to say but I will keep my mouth shut for now, until everything is done.  After all, I think I have not done a perfect job, although I tried to help the students as much as possible.

But recently the students (who are mostly computer newbies who are majoring in Art/Media Studies) are asked to do a programming assignment.  Guess what language they are asked to program in?

Choices:

A. Python (dynamic language, the one that I use for fun programming)

B. Scheme (default language to learn for MIT undergraduates)

C. Java (unfortunately the most popular language for now)

D. JavaScript (the backbone of Ajax and the language of tomorrow)

Answer: out of all the languages available, the students are asked to program in D!

Disclaimer: it has nothing to do with the instructor of the course.  He's a good man and does not have a choice.

Wow, I'm amazed by the foresights of McGill SOCS.  They must have read the Steve Yegge's Next Big Language and decided that Web+dynamic language+OO = the language that everyone should learn tomorrow!  Let's go with JavaScript.

Problem: the students don't even know how to host/where to host an HTML page and you expect them to know how to use JavaScript?  And program a Tic-tat-toe?

Honestly, I didn't know JavaScript maybe until last year (although it wasn't hard to pick up!)  Out of all languages that have runtime-environment, and more simplified data structure and syntax, why would they choose JavaScript!

If you really like the Java syntax then why don't just go for Java instead?  Well, yeah, the declaration is not something that you can learn in a day and most of the students would probably spend 90% of the time trying to compile the code.  And when they submit the assignment and it doesn't work, you have to deal the "but it compiles" questions.  And Java is pretty much useless for day-to-day use.  With JS at least if you have your own site you can do some small JS tricks or write a greasemonkey script to make your site better.  But, JS does not survive on its own and to use it the students will have to learn all the intricacy of HTML and DOM!  Not that they are hard to learn, but just not something you expect from students who just want to take an easy course for a good grade.

So... what's your language for teaching the basics of programming to newbies?  Do you agree with me?

1 comment:

Joseph said...

yay for TA's who try to help!

ummm, visual basic? or is it not really a language but a program? i forgot...