Live data from Hacker News

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

pshaw.wordpress.com

91–100 of 145 posts

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

#91
post #78
post #63

Earlier quoted context omitted.

Then you've forgotten what it's like to be a beginner. Not just that, but what programming should be like. Hello-world shouldn't need more than two elements.

I think judging a language by "Hello-world" is a mistake. Sure, some languages have a fixed overhead for creating a program. Some have needless syntax fluff that doesn't do all that much, but it's actually a good skill IMHO to be able to identify and see through that fluff to the core elements of the code. When we pick up a book do we judge it based on the index at the back and the preface and the publishing info at…

Like I said earlier, you've forgotten what it's like to be a beginner or you've not had much experience with teaching them. Beginners don't need to be able to see through fluff, they can't, the fluff needs to be gone entirely.

They need to be taught with languages that have no fluff so they learn the basics of thinking logically, algorithmically. They aren't ready to deal with the complexities of dealing with a particular languages quirks and learning to please its compiler with voodoo incantations like int, char, string, long, etc. They aren't even ready to understand that there are differences between languages, so their first language needs to be one that teaches concepts that apply to all languages.

They need to learn what functions are, what conditionals are, what loops are, what recursion is, in their simplest forms, and more than anything they need to see immediate success and running programs or they won't maintain interest long enough to get anywhere near the harder optional stuff like types and compiled languages. As soon as types come into play, you've advanced to an intermediate level, way over the head of beginners.

Beginners and manifest/statically typed languages do not mix well. The closest a student should get to Java, is JavaScript, but they'd be much better off learning Python, Scheme, and Smalltalk before getting anywhere near any of C's bastard children.

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

#92
A couple of suggestions…

Start with a visual programming language for the noobs- maybe something for kids like Scratch and then something where you can make real apps quickly like VB6. My 5 yr old can do programs in Scratch. She hasn’t learned recursion yet, but loops and events are clear to her. She did learn about the shift key in preschool computer class this year though, so she’s probably ahead of some of your students.

Grade people based on how far they get, don’t make them go forward with the rest of the class if they don’t grasp week one. Let them keep iterating on those concepts until they get it. The tragedy of group education is that you are forced to move and it is very hard to ever catch up. I would computerize the whole class and make it self-paced if there is that much variability.

For the non noobs, the Java 2D stuff is useless. It’s completely useless to learn that API. Make them write programs they can use in their life. Do a simple data model for their budget and use Ruby on Rails to turn it into a web app.

PASCAL, Ada, and Modula-2 suck. I hated programming when I was using those and thought it was useless BS. When I was a student, I liked learning c and asm because you learned about how computers work and I liked learning high level languages with easy graphics libs because you could make useful things quickly. I liked Matlab too, because I could use it to check my math problem sets.

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

#93

Earlier quoted context omitted.

I'm not so sure about that gear theory. I think you can have new gears installed. When I took some higher level courses that required new kinds of thinking, I didn't get it. I looked and felt retarded for a while, because no matter how it was explained I didn't get it. Then by continuing to study, and thinking about things, eventually I was able to see it, and it started to integrate itself into my thinking. It's alm…

Yeah, for me it's always been struggling through. Stepping away and then coming back to it. Then I get it. Same with piano lessons as a kid. I had chopsticks down pat after a few weeks. Then it was time to play a triad (a 3 note chord) and I just couldn't do it, pushing three keys at once with one hand. Spent a whole lesson with my teacher literally just pushing my hand down on the piano while I looked on in horror a…

Thats how i learned driving. I couldn't get it, my instructor tried to teach me, but i couldn't do anything right. My instructor was pretty good and knew that it was normal and the next day after a good nights sleep i was starting to get good at driving. After a while of driving with mixed success i stopped for a week, and when i got in the car again i was really good. I got my license, but didn't drive for a month and today i got in a car and after a few minutes of remembering, i was good at it, it was all easy, you couldn't tell that it was my 30-th hour in a car, and i haven't driven THIS car ever before, so i had to 'learn it', and get used to it. The mind is an amazing thing, learning is one of the strangest things we are capable of.

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

#94
post #56

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." Exactly. At birth we are basically no different from someone born 100, 500, 1000 years ago. People in the past we not stupid. In fact, the giants who's shoulders we stand on now are from the past. This isn't to…

There are people who attain native-level proficiency in foreign languages as adults. It is true that children more often do it, but it also seems to take them longer. How many hours a week did you study German in college? I think children growing up in Germany typically study it about 70 to 90 hours a week if their parents are foreigners, or 110 hours a week otherwise, and it takes them about six or seven years to re…

I knew someone would say this ;)

It is true some adults can learn language almost as easily as children, but that's the exception. The main point is that as you get older (for the vast majority of people), learning a new language becomes more difficult. A similar effect may be happening with programming.

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

#95
post #44

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.

I think the problem with those languages is they're too different for a starting course. Scheme is obviously very powerful, but its syntax is wildly different than most popular programming languages used today. As for Ruby, don't even get me started. There's practically no syntax at all; merely reading it agitates me. I think, in the beginning, people are most likely to understand concepts like Objects (Circle, Squar…

>>Also, since Java is statically typed, I think it makes >>things appear to contain less "voodoo".

No way. It's better to learn other programming concepts without the distraction of having to maintain types. Duck typing makes a lot more sense to new people, in my experience. Most of the popular languages with non programmers (PHP, VB, JavaScript) fit this mold.

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

#96
post #78

Earlier quoted context omitted.

I think judging a language by "Hello-world" is a mistake. Sure, some languages have a fixed overhead for creating a program. Some have needless syntax fluff that doesn't do all that much, but it's actually a good skill IMHO to be able to identify and see through that fluff to the core elements of the code. When we pick up a book do we judge it based on the index at the back and the preface and the publishing info at…

Like I said earlier, you've forgotten what it's like to be a beginner or you've not had much experience with teaching them. Beginners don't need to be able to see through fluff, they can't, the fluff needs to be gone entirely. They need to be taught with languages that have no fluff so they learn the basics of thinking logically, algorithmically. They aren't ready to deal with the complexities of dealing with a parti…

I disagree completely.

One of the best skills to learn is to see through fluff and understand what is going on. I'd actually say that the best first language to learn would be assembly language. It's insanely simple, but there's a lot of fluff, so you have to learn how to 'read' code in terms of overall structure/flow instead of focusing on each individual instruction.

I'm still not convinced learning in classes is going to produce anything but mediocre programmers though.

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

#97
post #78

Earlier quoted context omitted.

I think judging a language by "Hello-world" is a mistake. Sure, some languages have a fixed overhead for creating a program. Some have needless syntax fluff that doesn't do all that much, but it's actually a good skill IMHO to be able to identify and see through that fluff to the core elements of the code. When we pick up a book do we judge it based on the index at the back and the preface and the publishing info at…

"I think in these sorts of classes it'd actually be a good idea to spend several weeks looking at other peoples code and analyzing what it does." I think that would just result in a lot of students dropping out. As a beginner, it's nice to get the computer to actually do something - even if it's just printing out a stupid message.

"I think that would just result in a lot of students dropping out."

Good. Perhaps there would be less mediocre/bad developers around.

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

#98
post #9

I don't believe that programming is something you need to just get. I've seen a lot of people struggle on assignments like these as a TA. Usually, it's that they're missing certain concepts, but they don't know which ones and they can't debug themselves. If you know 70% of basic Java, you won't be able to create a working solution. You'll get tripped up on a type mismatch error that just makes you bonkers until you g…

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.

I don't think syntax is the problem the problem is getting people to understand that programming is about changing what's going on in memory. In math when you solve (X + 7) = 15 the value of X does not change but when you say X = 7 the value of X changes.

IMO, the only thing which would help most into students "get coding" is using an inline debugger to step though their code and understand what's happening. Because people don't get the idea that software is a dynamic thing once you run it.

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

#99
post #44

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.

I think the problem with those languages is they're too different for a starting course. Scheme is obviously very powerful, but its syntax is wildly different than most popular programming languages used today. As for Ruby, don't even get me started. There's practically no syntax at all; merely reading it agitates me. I think, in the beginning, people are most likely to understand concepts like Objects (Circle, Squar…

Forth, Factor, and Io are languages that come to mind that have "no syntax". Ruby is certainly at the "more syntax" end of the spectrum.

    puts(("foo #{bar} %s %s" % [bat, baz]) * 2.+(0b0010))
There are a huge number of syntax rules in that line.

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

#100
post #96

Earlier quoted context omitted.

Like I said earlier, you've forgotten what it's like to be a beginner or you've not had much experience with teaching them. Beginners don't need to be able to see through fluff, they can't, the fluff needs to be gone entirely. They need to be taught with languages that have no fluff so they learn the basics of thinking logically, algorithmically. They aren't ready to deal with the complexities of dealing with a parti…

I disagree completely. One of the best skills to learn is to see through fluff and understand what is going on. I'd actually say that the best first language to learn would be assembly language. It's insanely simple, but there's a lot of fluff, so you have to learn how to 'read' code in terms of overall structure/flow instead of focusing on each individual instruction. I'm still not convinced learning in classes is g…

Learning to see through the fluff is not a beginner skill. I'll just stop here and say I think you'd make a poor teacher because you show little if any empathy or awareness of what it means to not know something or how important it is for a beginner to have small successes and working programs right from the start.
Post reply on HN