Posted: Tue May 09, 2006 12:28 pm Post subject: Nip it in the bud
I want to nip the issue of "I want to learn how to program" in the bud.
That's a pretty bold statement, so let me explain.
The "where do I start?" question is exceptionally common, and it usually sparks a debate, and ten different answers. Now, we cannot solve that problem for the entire world, once and for all, but maybe we can reach an agreement and come up with a guideline that people coming to compsci.ca to learn about programming can follow. I think this can be built from the input of the community as a whoile, rather than being an edict handed down from on high.
What follows is a list of initial ideas I have.
It should be available in PDF form for easy printing and thus, offline digestion. Sorry, but this should be just another post in the forums.
Technologies recommended in it should be freely and easily available. Sorry Turing and RTP fans, you'll just have to take that up with Holtsoft.
It should not assume any prior programming knowledge.
Each step should be built on the last.
Exercises, exercises, exercises!
It should feel free to cover multiple languages.
User-contributed material should be light and humorous, and not take itself too seriously.
Linking to external tutorials and exercises is fine.
The Turing Walkthrough is something to really look at closely as a model for this.
All other things being equal, languages with simple syntax and the possibility of being interactively interpreted should be preferred. Simple syntax is best demonstrated by languages like Lisp/Scheme or Io.
Sponsor Sponsor
Martin
Posted: Tue May 09, 2006 1:12 pm Post subject: (No subject)
I'm down with helping out if you would like. This is aimed at highschool students with no previous experience, right? It could be cool as a more interactive web application, where users could submit solutions to be graded by Mother Computer.
I think one of the keys to bringing programming to the masses is having an easy to use yet powerful graphics library for people to play with, which is one of the big areas in which Turing succeeds.
wtd
Posted: Tue May 09, 2006 1:19 pm Post subject: (No subject)
Well, my intntion is more for it to be aimed at anyone (regardless of age) learning on their own without some external guiding force (a teacher).
With that in mind, I think that more important than graphics is just to provide some kind of structure. Give independent learners some way of guaging their progress, and a clear indication that their efforts are building towards a better understanding of programming.
As for an interactive automated web app, the only problem I see there is that learning is not necessarily a binary task. It's not simply a matter of wrong and right. You can get something wrong, and yet be on the right track. I'm not sure such an app would be able to capture that subtlety.
Cervantes
Posted: Wed May 10, 2006 7:11 pm Post subject: (No subject)
I'm a bit confused as to what you want us to be doing.
Are we supposed to be openly dicussing which languages meet the criteria of a good teaching language, then building a tutorial that uses those languages to teach the beginnings of programming?
You've already thought a great deal on this, wtd, and you picked O'Caml last I checked. Regarding Martin's comment about graphics, O'Caml passes this as well.
O'Caml is a great language to learn early on because it encompasses so many programming paradigms. Learning it keeps one's mind very open to new ideas, and that is a fundamental necessessity of a good programmer/student.
Ruby is also a pretty good pick, though potential stumbling blocks are blocks and the quick introduction of OOP.
Some sort of imperative language should also be included, I'd say. Turing or Pascal?
wtd
Posted: Wed May 10, 2006 7:16 pm Post subject: (No subject)
I get the heeby-jeebies about Pascal for one particular reason. Way too many people are going to want to use their dad's 10 year old copy of Turbo Pascal.
md
Posted: Wed May 10, 2006 7:34 pm Post subject: (No subject)
If that's an issue then why not strongly recomend getting the Free Pascal Compiler. There's nothing you can do to force people to aviod turbo pascal; but giving them a good starting place goes a long way to helping them.
Cervantes
Posted: Wed May 10, 2006 7:44 pm Post subject: (No subject)
So for the imperative category:
Turing is out, since it's not free and is very limiting (both in terms of its power and HoltSoft and being Windows only)
Here's two more languages to throw into this category: Ada and C.
Ada, C, or Pascal. I vote Pascal, but my vote isn't too informed here.
Tony
Posted: Wed May 10, 2006 8:49 pm Post subject: (No subject)
the problem with C is that it assumes that the programmer knows what he or she is doing. It will often compile and run unsafe code without warning.
Posted: Thu May 11, 2006 7:14 pm Post subject: (No subject)
Guys, I think there's a problem here with your logic. You all seem to be assuming that the student is going to be stupid, which I think is the biggest problem with all of these start-to-program things.
A ton of absolutely brilliant programmers started out hacking around in C and C++ and all sorts of other ugly languages. Even though C may not be the nicest as far as syntax goes, it does a far better job than most other languages teaching a student what is actually going on.
So I think that the approach should be that there should be writing a good guide that moves at a fast enough pace to keep people interested, not to find the most idiot proof language out there.
For example, that person who posted his code using gets() in the C forums - who is to blame there? The person being dumb, or wherever they learnt how to do that from? My money's on the second.
rizzix
Posted: Thu May 11, 2006 10:14 pm Post subject: (No subject)
Haha you mean "the person asking the question or the person helping him?"
Anyway, yes you're right, there is no problem teaching an unsafe language, instead the problem lies in using it in actual development.
codemage
Posted: Fri May 12, 2006 8:32 am Post subject: (No subject)
If it's on the web anyway, you can explain the theory and show the code in a default language, and then allow the user to see the same algorithm in a different language.
wtd
Posted: Fri May 12, 2006 12:07 pm Post subject: (No subject)
Lots of excellent points here, guys. This is phenomenal.
Martin, I agree with you to some extent. A lot of really smart people have accomplished really fantastic things with ugly languages and poor tools.
However...
The Sphinx is an amazing work of art that has survived millenia. It was shaped with copper tools. Can you imagine working stone with copper tools? It's an incredibly cumbersome way of getting work done.
If you were an admirer of the Sphinx and its creators, and wished to recreate it in homage, would you really use copper tools? Or would you use something better?
I believe that we can look at the great accomplishments of the past, and embrace them selectively. We can see the good things, but avoid the mistakes they made. There are plenty more mistakes waiting to be made, after all.
wtd
Posted: Sun May 14, 2006 3:01 pm Post subject: (No subject)
Martin wrote:
I'm down with helping out if you would like. This is aimed at highschool students with no previous experience, right? It could be cool as a more interactive web application, where users could submit solutions to be graded by Mother Computer.
The more I think about it, the more I believe this is a good idea. However, I think that questions need to be something like multiple-choice or true/false. Anything else would simply be too hard to judge right or wrong.
Though later parts of it might work on the basis of passing test cases.
I think perhaps each section should be off-limits until the previous section's questions have been successfully answered.