Computer Science Canada

The Perils of Java Schools

Author:  wtd [ Thu Jan 19, 2006 2:37 am ]
Post subject:  The Perils of Java Schools

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Author:  Martin [ Thu Jan 19, 2006 3:12 am ]
Post subject: 

TFA wrote:
All the kids who did great in high school writing pong games in BASIC for their Apple II would get to college, take CompSci 101, a data structures course, and when they hit the pointers business their brains would just totally explode, and the next thing you knew, they were majoring in Political Science because law school seemed like a better idea. I've seen all kinds of figures for drop-out rates in CS and they're usually between 40% and 70%. The universities tend to see this as a waste; I think it's just a necessary culling of the people who aren't going to be happy or successful in programming careers.


Yeah, that's me. Shit.

And see? I'm completely justified in enjoying C++.

Author:  wtd [ Thu Jan 19, 2006 4:29 am ]
Post subject: 

You don't need to use C++ to deal with pointers. Smile

Author:  Martin [ Thu Jan 19, 2006 7:02 am ]
Post subject: 

What language would you recommend? Ruby, perhaps?

Author:  codemage [ Thu Jan 19, 2006 1:20 pm ]
Post subject: 

I did
1st year = Java / Pascal
2nd year = C / C++
3rd & 4th years = language independent / misc
(which meant C++ for independent work, and usually java for group projects).

Author:  wtd [ Thu Jan 19, 2006 2:15 pm ]
Post subject: 

Martin wrote:
What language would you recommend? Ruby, perhaps?


If the goal is to teach pointers, and not a broader introduction to programming, then C is perhaps a better match than C++. While it lacks generics which are exceptionally useful for data structures, it's also a far simpler language semantically.

Pascal can also deal with pointers, and is perhaps even more straightforward for use in an educational environment.

codemage wrote:
I did
1st year = Java / Pascal
2nd year = C / C++
3rd & 4th years = language independent / misc
(which meant C++ for independent work, and usually java for group projects).


Have you worked with functional programming languages?

Author:  Andy [ Thu Jan 19, 2006 2:40 pm ]
Post subject: 

it pisses me off to see newb programmers play around with pointers randomly and finish their projects using tne.. when i started pointers we did it in c++, and if u sucked, you get the BSOD and you have to reboot ur system.. java is spoonfeeding way too much

Author:  rizzix [ Thu Jan 19, 2006 2:45 pm ]
Post subject: 

Nah not C, Cyclone and D

Author:  wtd [ Thu Jan 19, 2006 2:49 pm ]
Post subject: 

rizzix wrote:
Nah not C, Cyclone and D


Well, yes... but given the choice between C and C++ alone, C is the simpler language to teach and does just as much to explain how pointers work.

For it's safety, Cyclone is actually likely a bit more complex than C.

Author:  rizzix [ Thu Jan 19, 2006 2:57 pm ]
Post subject: 

well you don't have to teach them how to use @ and ? (avoid, non-nulls and pointer arithmetic, until more advanced courses)

the * pointer in Cyclone is pretty safe, since it does not allow pointer arithmetic.


edit: actually, maybe just stick to ?... since you have to use them for arrays.. so yea pointer arithmetic.. but at least it has runtime bounds checking... acutally u know what.. nvm.. teach everything.. it's all there for a reason.

Author:  wtd [ Thu Jan 19, 2006 3:02 pm ]
Post subject: 

Either way, I trust we can agree that understanding pointers is important. Smile

Maybe they're not something you should use much in production code when safer options exist, but just because you shouldn't do something, doesn't mean you shouldn't know how to do it. Wink

Author:  rizzix [ Thu Jan 19, 2006 3:06 pm ]
Post subject: 

well you definitely need to know how to do it, if you should not be doing it. Wink

Author:  wtd [ Thu Jan 19, 2006 3:08 pm ]
Post subject: 

Exactly!

Author:  Martin [ Thu Jan 19, 2006 11:24 pm ]
Post subject: 

Yeah, at my last internship myself and the other student gave each other nicknames. I was Martin "Memory Leak" Kess and he was Eric "Seg Fault" Lai. Good times.

Author:  Hikaru79 [ Fri Jan 20, 2006 12:27 am ]
Post subject: 

What's really cool is that article links to a page full of downloadable video lectures: http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/

Look at that first one, wtd Smile A lecture on Lisp! (it even comes with a free copy of the complementary textbook)

Author:  McKenzie [ Sun Mar 18, 2007 4:16 pm ]
Post subject:  Re: The Perils of Java Schools

Hey, no one mentioned Turing. Turing has pointers too Wink
I think you can learn pointers reasonably well with Java. It's actually one my biggest problems with Java though. Although when you read/hear about Java you read that Java doesn't have pointers. Once you get your feet wet you realize, of course it does, all references are pointers, you just can't play with them. The idea, of course, is that they operate "under the hood" and you don't need to worry about them. My problem is that this is "Leaky Abstaction." There are a number of very fundamental things in Java that you need to understand how pointers operate under the hood. This all gets back to one of the most common educational CS debates: What the best way to learn CS? "Objects First" or does your knowledge mimic the evolution of programming languages in general? I've heard passionate arguments on both sides of the fence. I'm not convinced that there is a clear-cut victor on either side.

Author:  ericfourfour [ Mon Mar 19, 2007 2:59 pm ]
Post subject:  RE:The Perils of Java Schools

Although, pointers and recursion are important for efficiency and what-not, why should an employer care if they are not needed to write a program? This person talks about OSs and compilers, but how many people are being paid to program those, compared to where pointers and recursion are not needed.

Also, if the language can take care of the memory for you and make life easier, isn't that good? That way you can worry about the task at hand rather than if you are freeing the right memory at the right time.

Its good to know all of the concepts this person writes about (and more), but society, in general, doesn't believe they are necessary to survive. That is why they are being phased out of colleges and the workplace.


: