Live data from Hacker News

Java in College: "You might as well be teaching Chinese to a monkey."

pshaw.wordpress.com

131–140 of 145 posts

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#131
post #33

Earlier quoted context omitted.

I have to wonder if a language with less syntax would be easier to pick up. Start people that are totally new to programming with something like Scheme or Ruby (surely there are even better ones than these) that requires less arcane punctuation to do things like hello world, then once they get the hang of things, slowly introduce them to more structured languages.

My university started the introductory course (for all majors, courses were common for the first 2 years) with scheme and most student seemed to understand it fairly well. We still had the 20% that were extremely fast because of having programming experience before (but learning scheme was a nice change compared to what they used to do) but the numbers of students completely lost seemed rather small. So I think schem…

The problem with Scheme is that it's very difficult to learn in a vacuum. You can do all sorts of interesting things with it, but if people can't use it to do real work then they quickly lose interest (I'm not talking about CS types who are interested in computing anyway, but others who would fine programming a useful skill in their "real" jobs). From that POV the best teaching language is something like VBA, awful tho' it is, because it gets people from zero to "look what I did!" very quickly. Or MATLAB or some other language that's looked down on by purists.

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#132

Earlier quoted context omitted.

Java's a horrible language for teaching. If you think this... System.out.println("Hello world"); Is easier to understand than this... print("Hello world") Then you've forgotten what it's like to be a beginner. Java's not even a good example of what OO is, and it has way too much syntax and special keywords (something like 50) for teaching. Python is a far better language for teaching, Smalltalk would be even better b…

I should also point out that your Java example won't even compile, you need to wrap it in a class and a main function to even attempt to compile and run it. Tell me again how simple this is.. class World { public static void main(String args[]) { System.out.println("Hello World!"); } } compared to this... print("Hellow World!")

Not to mention that you have to save it in a file called World.java and it will compile to World.class. If you change the contents of a file, the first line, you also have to change the name of the file. How does that make sense to a beginner?

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#133

Earlier quoted context omitted.

I can see how "X = X + 1" could be confusing to someone who has never been exposed to programming before. All your life you're taught in math classes that "=" means the things on both sides are "equal" at all times. Maybe replacing the "=" with an array while teaching would be helpful. Then once he understands the concept, try to introduce the "=" syntax.

This is why a certain language used := as the assignment operator and = as the boolean equality operator. It really doesn't make sense as written when compared to all of the maths people have learned up to the point they are introduced to programming. It's where learning about addressable memory and pointers compared to the values stored at those addresses actually made more sense to me than the optimized syntax (at…

This is one of the advantages of using Scheme as an introductory language: (define x 1) (set! x 2) (let ((x 3)) (1+ x)

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#134
post #18

Earlier quoted context omitted.

"I’m very skeptical of results that claim that some large fraction of the population is incapable of some mental feat like programming. 500 years ago the same was thought of reading, writing, and arithmetic." Yeah and the reason was that 500 years ago reading and writing was college level material. Now they start teaching the alphabet at what age 5? Then again most print material is targeted to a pretty low reading l…

Two illiterates can have a conversation a writer could transcribe. I'm pretty sure I couldn't represent the behavior or thought process of a computer-illiterate in code.

"I couldn't represent the behavior or thought process of a computer-illiterate in code."

That's what the job of a computer scientist is, translate from real world process to computer program. Maybe it isn't a one to one correspondence like spoken to written English but if someone tells you they need a program to track employee time and they need to sign in and sign out you can write that right?

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#135
post #25

Diagnosable mental defects aside, I refuse to believe that there exist students who genuinely want to learn Java with a private tutor who understands the student's mental model of the world. Students range from couldn't-care-less to passionate, not from stupid to smart.

I suspect students could be plotted on both axes, and probably several others (amount of background knowledge, for example) as well. It seems clear that smart/passionate will generally do well and stupid/CCL will generally fail, but that leaves smart/couldn't-care-less (know-it-alls who won't listen to anything in class) and stupid/passionate (who will probably need to put in extra time, but have a good chance). Ever…

stupid/passionate (who will probably need to put in extra time)

I think this view ignored the correlation between "put in lots of time" and "smart". All of the smart people I know have usually put in an extraordinary amount of time studying whatever they are good at.

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#136
post #107

Earlier quoted context omitted.

I taught Comp Sci 101/102 as a TA at a state university in the US. Yes, there are students who just don't get it. There was one student of mine who seemed to think as if the machine contained some weird little fussy creature, and if you somehow made nice to it in its unusual language, it would decide to like you and do you a favor and run your program correctly. Seriously. He couldn't comprehend: X = X + 1 To be fair…

one fellow grad student got exasperated at me in a study session and said, "I don't care about the principles, just give me the answer so I can get an A on the test!" IMO it's a serious bug in the educational system that people are able to pass by following that approach.

I think the bug is that finding the right answers is considered important. There is no such thing as a "right answer" unless you can prove it's right. If you don't understand the concepts, you can't know that you got the right answer.

(Then, in "real life", you are really on your own. If you are doing something new and original, you won't know if you are right immediately. You have to convince yourself by applying what you've learned. The answers to test questions, in this case, are completely meaningless. I don't think enough people realize that.)

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#137
post #25

Diagnosable mental defects aside, I refuse to believe that there exist students who genuinely want to learn Java with a private tutor who understands the student's mental model of the world. Students range from couldn't-care-less to passionate, not from stupid to smart.

Err, first sentence was supposed to end "... and still, the students fail".

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#138
post #122

Earlier quoted context omitted.

I can see how "X = X + 1" could be confusing to someone who has never been exposed to programming before. All your life you're taught in math classes that "=" means the things on both sides are "equal" at all times. Maybe replacing the "=" with an array while teaching would be helpful. Then once he understands the concept, try to introduce the "=" syntax.

I think that this is one of those areas that would be greatly improved by starting students with assembly. It's fairly easy to grasp what each statement does in a small instruction set like MIPS since there aren't these sorts of preconceived ideas. Then once students have learned assembly, teachers can explain statements such as "X=X+1" unambiguously with the assembly instructions the students are familiar with.

I disagree about starting students on assembly. Assembly exposes all the implementation details on how we got computers to work efficiently, and exposes none of the theoretical basis for computation. Obviously you need to know both eventually, but to get started, I think it's a better idea to build on the mathematics students already know.

Say you want to print 2+2. In assembly, you have to put a two in two certain registers, then call add, then call a routine to convert the number 4 to the string "4\0", then find a file descriptor, then signal the OS that you want to make a system call (fwrite), ...

That is not a good way of teaching how computation works. The details in this case are arbitrary and irrelevant; there is no reason a computer has to distinguish between the string "4" and the result of adding 2 and 2.

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#139
post #132

Earlier quoted context omitted.

I should also point out that your Java example won't even compile, you need to wrap it in a class and a main function to even attempt to compile and run it. Tell me again how simple this is.. class World { public static void main(String args[]) { System.out.println("Hello World!"); } } compared to this... print("Hellow World!")

Not to mention that you have to save it in a file called World.java and it will compile to World.class. If you change the contents of a file, the first line, you also have to change the name of the file. How does that make sense to a beginner?

How does that make sense to anyone?

I still think Java is just a cruel joke on the part of the authors. I don't think they really thought manifest typing was a good idea. I don't think they really thought that Java's OO system was any good.

I think we will be seeing a paper soon that has a title like, "How bad could a programming language be before people stopped using it? A case study on Java."

Re: Java in College: "You might as well be teaching Chinese to a monkey."

#140

Earlier quoted context omitted.

Two illiterates can have a conversation a writer could transcribe. I'm pretty sure I couldn't represent the behavior or thought process of a computer-illiterate in code.

"I couldn't represent the behavior or thought process of a computer-illiterate in code." That's what the job of a computer scientist is, translate from real world process to computer program. Maybe it isn't a one to one correspondence like spoken to written English but if someone tells you they need a program to track employee time and they need to sign in and sign out you can write that right?

A human and a computer are equally good at clocking one person into work on time.

A computer is probably much better at tracking the hours of 500 people, using this to estimate the probability of various inconvenient person-mixes (the foreman and backup foreman are both sick!), and using this to generate schedules.

A person is probably better than a computer at deciding whether or not it's better to clock out of work eight minutes early to surprise the wife with flowers.

Computers and people differ pretty wildly in their thought processes and abilities.

Post reply on HN