[email protected] wrote:
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 B. 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 F. 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 N. 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 S. 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!