Lambda the Ultimate

inactiveTopic "My C++ Experience/Disaster"
started 2/23/2003; 2:31:13 AM - last post 2/27/2003; 3:24:48 PM
Ehud Lamm - "My C++ Experience/Disaster"  blueArrow
2/23/2003; 2:31:13 AM (reads: 2523, responses: 24)
"My C++ Experience/Disaster"
After studying C++ for almost a year (at an AP level, what ever that crap is worth), I can do nothing fancy: graphics or anything "cool." Well, nice talking to you, too bad you couldn't invent something more lame.

Excerpt from a letter sent to Bjarne Stroustrup.

Stroustrup's short reply: Thanks. I hope you feel better after having demonstrated your ignorance and bad manners.

I can totally sympathize with Stroustrup, and understand his curt response. The email is indeed very rude.

But still, I think valuable lessons are to be learned. First, how come a student doesn't realize the role of libraries, after taking an AP level course in programming? Yes, this does indicate a certain "incompetence of [the] teachers".

Second, we should all realize the students want to do cool and interesting things while learning computer programming. If the language doesn't allow beginners to do useful stuff, it may not be all that appropriate for beginners. But does the learning curve of industrial strength languages have to be so steep?

Finally, one wonders when universities (and after them highschools) will stop teaching languages based on market share, and instead concentrate on Haskell and Scheme, as we all know they should...


Posted to teaching/learning by Ehud Lamm on 2/23/03; 2:34:45 AM

Ziv Caspi - Re:  blueArrow
2/23/2003; 7:50:07 AM (reads: 1785, responses: 0)
On the other hand, he seems to have aced the exam on gravedigging...

tyler - Re:  blueArrow
2/23/2003; 8:28:02 AM (reads: 1771, responses: 1)
If you take a look at the rest of his site, you might come to the conclusion that the quality of the teacher probably played no role in his failure.

The more I read on his site the more I think it might all be a joke, because he sure makes a lot poorly informed statements. You might want to read his filesharing *essay.*

http://www.andkon.com/stuf/fileshare/index.html

And I fear I've spent far too much time on him.

Isaac Gouy - Re:  blueArrow
2/23/2003; 9:08:17 AM (reads: 1754, responses: 0)
At the least, we could say there was a mismatch between that student's expectations and the course content.

allow beginners to do useful stuff
Doesn't that mean playing with bigger building blocks? Adding dll functionality to Excel or writing a spam filter addin for Outlook or...

Spoken language teaching very quickly places the learning experience within the context of normal conversational situations. Could cs teaching place learning within an industrial context as modification to an existing large code base? Teaching programming-in-the-small within the context of programming-in-the-large.

stop teaching languages based on market share
For some institutions, that matches the immediate goals of both the institution and the student!
Others have different ambitions: M206 Computing: An Object-Oriented Approach (it teaches programming skills using the object-oriented language Smalltalk).

Ehud Lamm - Re:  blueArrow
2/23/2003; 9:26:41 AM (reads: 1802, responses: 0)
I considered the possibility that this is a hoac, and thought about posting this item to the fun department.

But I decided that even if it is a hoax, it is still worth discussing.

Tran Tuan Anh - Re:  blueArrow
2/23/2003; 7:26:56 PM (reads: 1647, responses: 1)
I took Scheme as the first programming language course in university. However, I was already a competent programmer at that time, since I wrote a lot of Pascal during my high school years.

Still Scheme gave me a hard time. Even I admit its elegance, but I don't believe that Scheme or Haskel is a good introduction lang. Think about how to write Scheme or Haskel code to get the input from keyboard :D I don't think the code is intuitive to beginners :) Those funtional langs have a very nice maths but don't give an intuitive way on how computers run the code. Keep in mind that the way of thinking about computers run step by step in code is the foundation for students to learn algorithms. ok funtional langs might be more declarative but it is not good for beginners.

Pascal is good for beginners but it is too old. recently I've tried out Python, pretty simple and easy to explain to beginners. However, it is script which does not have type.

Java which is a popular choice now is bad too :(

Michael Vanier - Re:  blueArrow
2/23/2003; 11:30:22 PM (reads: 1606, responses: 1)
After reading the article and poring over some of the other articles on the author's web site, it's pretty obvious to me that the author is a crank. The article itself (assuming it isn't complete fiction) says nothing substantive about C++; it merely demonstrates that the author was the victim of appallingly bad teaching. He doesn't seem to understand anything about programming or about why C++ is the way it is. Given that, I'm impressed that Stroustrup's response is as mild as it is.

Ehud Lamm - Re:  blueArrow
2/24/2003; 12:26:20 AM (reads: 1634, responses: 0)
Sure. But this really isn't the interesting issue, I think.

We don't need his input about C++, I guess we all know the language.

Ehud Lamm - Re:  blueArrow
2/24/2003; 3:05:46 AM (reads: 1605, responses: 0)
Well, the HTDP do nice things with Scheme.

Personally, I prefer statically typed languages, but that's just me.

Anyway, the Haskell and Scheme thing was a bit of a troll. I am not sure I would really use either of them for CS1 these days.

Michael Vanier - Re:  blueArrow
2/24/2003; 3:48:57 AM (reads: 1554, responses: 2)
We use scheme for CS1 at Caltech, with pretty good results. A lot of other universities do too. The idea, as I'm sure you know, is to concentrate on concepts without getting buried in syntax. Why wouldn't you use scheme?

I myself wouldn't use Haskell for CS 1 because it's too far from the mainstream. It's one thing not to encourage mutation, quite another to forbid it entirely. Disclaimer: I *like* Haskell a lot. It's good for more advanced courses.

Ehud Lamm - Re:  blueArrow
2/24/2003; 4:01:56 AM (reads: 1585, responses: 1)
My main problem with using Scheme is that all the textbooks used in later courses use imperative Pascal-like or C-like syntax, and I don't want to confuse students.

Two reasons why this may not matter: You may have more than one intro course (two semester, perhaps?), and/or better students.

And laziness is what kills Haskell for CS1.

scruzia - Re:  blueArrow
2/24/2003; 10:33:23 AM (reads: 1555, responses: 0)
And laziness is what kills Haskell for CS1.

Yeah, CS1 students are often quite lazy ... :-)

Michael Vanier - Re:  blueArrow
2/24/2003; 1:06:29 PM (reads: 1420, responses: 0)
My main problem with using Scheme is that all the textbooks used in later courses use imperative Pascal-like or C-like syntax, and I don't want to confuse students.

I guess what you see as a negative I see as a positive. I like the fact that students can see a language with a deliberately unusual syntax, so that they can divorce themselves from the misconception that syntax is one of the more important features of programming languages (and that "all syntaxes are basically the same", which they clearly aren't). Also, the scheme syntax is so simple that you spend much more time dealing with concepts. That said, it does take most of our students 2-3 weeks before they get comfortable with s-expression syntax.

And laziness is what kills Haskell for CS1.

To me it's the absence of mutation and hence the need for advanced concepts like monads. To split hairs, laziness leads to both of these ;-)

Paul Snively - Re:  blueArrow
2/24/2003; 5:40:29 PM (reads: 1401, responses: 1)
I should also add that if, on one of my family's forays to Indiana University when I was in high school, I hadn't stumbled across the SRI edition of "The Little LISPer," I probably would not have chosen to study Computer Science when I later wound up at Indiana University.

Now, of course, since I was at Indiana University, I had access to amazing resources. Dan Friedman did more to instill the sheer joy of programming in me than anyone else in my life, period. And Douglas Hofstadter did more to stretch my mind than anyone else in my life, period. Not everyone who's exposed to Scheme as an undergrad has these same benefits, to put it mildly.

I wonder to what extent using Scheme is only a good idea if you're at MIT, Indiana, or Rice? That is, in environments with extremely strong Scheme cultures and professors?

Michael Vanier - Re:  blueArrow
2/24/2003; 5:51:27 PM (reads: 1390, responses: 0)
I think having a strong Scheme culture is a huge help. We're building one here at Caltech, and it's been painful. This year was WAY better than last year; our TAs were actually competent ;-)

BTW Dan Friedman is a heck of a nice guy. I emailed him once with a question about one of his books and his reply was incredibly friendly and helpful.

Paul Snively - Re:  blueArrow
2/24/2003; 6:45:01 PM (reads: 1386, responses: 0)
Michael Vanier: BTW Dan Friedman is a heck of a nice guy. I emailed him once with a question about one of his books and his reply was incredibly friendly and helpful.

To say the least. Several years ago I posted something complimentary about "The Little Schemer" on comp.lang.scheme, and the next thing I knew, a copy of Scheme and the Art of Programming was on my doorstep, with a card: "Compliments of Dan Friedman." But that's Dr. Friedman: unusually generous. And his whole style is very much represented in "The Little Schemer:" the playfulness; the use of real-world examples that we can all relate to, e.g. FOOD!; the periodic reminders to take a break and try to digest the material, but not all in one gulp.

I think the thing I appreciate so much about Dr. Friedman is that he treats his students, whether face-to-face or not, like human beings. I can't recall ever having another professor that said anything remotely like "Hey, this is a lot of new stuff. Let's stop here. Maybe it'd be a good time to make a sandwich." That and his obvious sense of actual joy over CS. I mean real, in-your-face, jumping-up-and-down excitement. He really, really loves CS. And he really, really loves revealing it to 17-year-old minds. And his love affair with Scheme is, of course, legendary. As it should be.

Michael Vanier - Re:  blueArrow
2/24/2003; 7:35:18 PM (reads: 1377, responses: 1)
Several years ago I posted something complimentary about "The Little Schemer" on comp.lang.scheme, and the next thing I knew, a copy of Scheme and the Art of Programming was on my doorstep, with a card: "Compliments of Dan Friedman."

Some people take this "nice guy" thing entirely too far ;-) Hey, *I* posted a glowing review of TLS on amazon.com, and where the hell is *my* free copy of SatAoP? Dan, are you listening? ;-)

Seriously, TLS is an insanely great book. Any book that can go from counting to the Y combinator in a few chapters is awesome.

Ehud Lamm - Re:  blueArrow
2/25/2003; 12:06:15 AM (reads: 1401, responses: 0)
Quite. I am an all around nice guy, and I can't get my hands on a copy of SatAoP...

Your stories match my experience. When I started working on EOPL, I made some comments about missing topics, I got an email telling me about the second edition, and yes the book also arrived on my door step well before our library managed to get its hands on a copy.

Ehud Lamm - Re:  blueArrow
2/25/2003; 12:26:49 AM (reads: 1394, responses: 0)
NEU also has some Scheme gods on the faculty.

Paul Snively - Re:  blueArrow
2/25/2003; 4:37:36 PM (reads: 1254, responses: 0)
Ehud Lamm: Your stories match my experience. When I started working on EOPL, I made some comments about missing topics, I got an email telling me about the second edition, and yes the book also arrived on my door step well before our library managed to get its hands on a copy.

Hey! I had to buy BOTH editions of EOPL out of my own pocket! ;-)

Naturally, I was happy to: as I think you pointed out before, Ehud, the first edition is probably better-suited to self-study, but the revised material on CPS in the second edition is must-have.

Paul Snively - Re:  blueArrow
2/25/2003; 7:56:04 PM (reads: 1252, responses: 0)
Hey, BTW: isn't there a well-regarded CS text using Haskell that actually is about cool graphics and whatnot? Ah yes, here it is: The Haskell School of Expression.

David B. Wildgoose - Re:  blueArrow
2/27/2003; 2:01:23 AM (reads: 1211, responses: 1)
I began with "The Haskell School of Expression" when I decided to learn functional programming via Haskell. It's a good book, but totally unsuited to self-study if you have no experience of FP to begin with.

As for the "student", (is this accurate? - He obviously didn't "study"), well I think this is evidence of a wider problem. I visited my old University tutor a little over a year ago because I heard he was retiring. He told me that modern students were nothing like those in my day. (Cue Monty Python sketch).

To begin with, the relentless pressure caused by the massive expansion of UK higher education has meant that the entry criteria had been relaxed from "Advanced" Level mathematics to just the basic GCSE qualification usually gained at 16. They were getting students who wanted to do computing because it was a well paid career, but who simply didn't have the basic ability to understand what was required.

He also complained that they now had to use Java, which he thought to be completely unsuitable as a teaching language.

The problems he was referring to are obviously pretty widespread.

Ehud Lamm - Re:  blueArrow
2/27/2003; 4:36:13 AM (reads: 1239, responses: 0)
I'd be interested to hear more about how people feel about the SoE book.

Vlad S. - Re:  blueArrow
2/27/2003; 3:24:48 PM (reads: 1200, responses: 0)
I think one problem with getting away from C++ (and Pascal, believe it or not) in the high school AP cirriculum are those 'programming competitions.' It would be extremely difficult to get all the high school and college regent boards to add another language (and then you've got to consider that a lot of these contests are international as well). At least here they have a sort of justification for doing so - in Pascal, everyone is capped equally.

I spent my first year of high school at Stuy, where the introductory CS elective was taught by Mike Zamansky in Logo and Scheme. It was a really neat introduction to CS that I think discouraged a lot less people from pursuing CS further than some syntax-thumping printf lesson. I really must give 'Z' credit for the excellent introduction to recursion (after that it was like riding a bicycle - I never forgot how). When I first read it, I was surprised to find that a lot of the examples and assignments used in the course are remarkably similar to parts of Flake's "Fish and Chips Book". That's probably the best way to describe the character of the class, the quality of instruction and the enjoyment I derived from it. Interestingly enough, he didn't stress Scheme's 'lispiness' at all, and it wasn't until years later (by which time I had pretty much given up on CS) when I found Structure and Interpretation that I realized how powerful the language really is. I think this is the key to teaching Lisp (or whatever language you're a rabid follower of) correctly - let the student have the pleasure of finding the pearl her/himself, and for this I am indebted to Z for his wonderful teaching style.