benjohn / fysh.org wrote:
> Jeremy Tregunna wrote:
> 
>>If you can teach someone to program, learning a new language isn't
>>going to be a big problem. Your decision should be less about the
>>language and more about the concepts you need to be teaching. Scheme
>>is an excellent language for teaching people how to program. Sure,
>>most of them are unlikely to use scheme much if ever in day to day
>>operations on the job (if they choose to go down this path and stick
>>with it), but it's an excellent language to teach programming concepts.
> 
> 
> I completely agree with the above.

Now that I think about it, I suppose that the language is not that 
important. I won't be teaching a bunch of people who are interested in 
programming as a hobby, nevermind professionally.

The Programming I course is part of a program at my school called the 
Academy of Information Technology. The purpose of the program is to 
expose students to lots of career possibilities in the IT field. That 
means we get lots of half-year courses. The full run of the academy 
lasts three years, sophmore to senior, and covers a quick run through 
computer history, programming, relational databases, systems support, 
networking, and a full year of Microsoft Office (woo).

I'll be lucky (luckier than a lucky stiff!) if I get one or two people 
who are actually interested in programming. So maybe it would be 
detrimental if I were to get 'too' geeky/in-depth. My target audience 
will probably use the concepts taught in simple Excel formulas.

I'm completely torn on the issue of Scheme or Ruby now. I've seen a 
major point on each side of the debate:

A. Scheme, if unelegant looking, does have simple, consistant syntax, 
allowing people to focus more on learning 'programming' as opposed to 
learning Scheme.

B. Ruby offers many ways to do things, syntax-wise. Only one way could 
be taught and stuck to, and those interested could explore on their own. 
All the same, it would be easy to get caught up in Ruby syntax instead 
of programming.

James Britt wrote:
> A big part of programming is understanding the world you live in.
> 
> There is nothing spooky about the command line, even in Windows.
> 
> Don't treat people like children, or they'll start acting like children.
> 
> Assume the best, and let them show you otherwise. 

I suppose I have to agree with you. That said, we *are* children, and we 
do act like children (some a good deal more than others).

I think one of my school's biggest problems with all of its classes 
involving computers is that teachers ignore it when you screw around on 
MySpace or Miniclip all class. Students no longer take the class 
seriously, and are not there to learn, but to check their e-mail. Of 
course, a typical American teenager's (lack of?) desire to learn is a 
whole nother topic.

Keith Fahlgren wrote:
> Now, if you're learning programming in Ruby, an IDE may not be as 
> important, but it's probably useful to remove as many barriers to entry 
> as possible--you want the kids to be learning the language, not :wq or 
> CTRL-X CTRL-C.

This is my reluctance to open up the Windows command line. James, 
however, put that reluctance away by pointing out that programming is 
about understanding your world. I guess introducing people to such a 
beast does have a place in Programming I, even if its just to better 
farmiliarize people with their Windows environment.

All the same, a DrScheme-like frontend to irb would be a big convinience 
to everyone. Less typing == less errors == less confusion == less 
frustration-in-an-already-challenging-situation. IMHO.

Christian Neukirchen wrote:
> Of course, that's a question of time.  If you only have a half or a
> full year, you need to stop digging deeper pretty soon; depending on
> what you really want them to learn.  Give foundations for figuring out
> on their own.

Matthew Smillie wrote:
> This has slightly confused me, but I'll admit that it's been a while  since I've dealt with this sort of thing, so jump in with corrections  as required.
> 
>   - A language has first-class functions when a function can be  assigned to variable, passed to or returned from another function,  and so on.  In Ruby, a = lambda { |x| x + 1 } for example.
> 
>   - The distinction between Lisp-1 and Lisp-2 that the latter has a  separate namespace for functions, in Ruby, for example, def a(x) x +  1; end can exist alongside a = lambda { |x| x + 1 } (and there's a  corresponding hoop to jump through to call the lambda).
> 
> What I don't understand is how it follows that being in a different  namespace implies that Lisp-2 doesn't have true first-class  functions.  The only reason I can think of is the circular one that  "only Lisp-1 has true first-class functions", which gives it the  distinct flavour of an age-old Lisp holy war (if that's the case,  consider me uninterested).

Nothing holds less truth than the phrase 'there is always a better 
wizard than you'.  I'll admit that I've never had any formal CS 
training, and until recently, my experiences have been limited to 
PHP4/MySQL/Oracle stuff. (I'm a self-taught sixteen year old with some 
obscene amount of time invested in fiddling with PHP, then had my 
education greatly sped up when I was recruited as a web app developer 
for a small ISP.)

No object stuff. Limited technical vocabulary. I'm not qualified to 
teach the class, but (all ego aside, really!) I am probably more 
qualified than one of our business teachers, who has no experience with 
programming. So I suppose I have some learning of my own to do before 
the '07 schoolyear. :-)

I am very grateful to you all for your inputs. I did not anticipate such 
an overwhelming response. Thanks!