Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Education Programming IT Technology

Followup On Java As "Damaging" To Students 626

hedley writes "A prior article on the damage Java does to CS education was discussed here recently. There was substantial feedback and the mailbox of one of the authors, Prof Dewar, also has been filled with mainly positive responses. In this followup to the article, Prof. Dewar clarifies his position on Java. In his view the core of the problem is universities 'dumbing down programs, hoping to make them more accessible and popular. Aspects of curriculum that are too demanding, or perceived as tedious, are downplayed in favor of simplified material that attracts a larger enrollment.'"
This discussion has been archived. No new comments can be posted.

Followup On Java As "Damaging" To Students

Comments Filter:
  • Re:@_@ (Score:5, Informative)

    by M. Baranczak ( 726671 ) on Monday January 21, 2008 @11:16PM (#22133548)
    Exactly. If I recall, he was mainly talking about the fact that low-level system concepts aren't being taught. Java was only incidental to the argument, but the /. summary made it seem like another stupid language flamewar. Java is a high-level language: of course you won't be using it to write kernel code.
  • by ZombieRoboNinja ( 905329 ) on Monday January 21, 2008 @11:28PM (#22133650)
    They're pretty up-front about it, but it's worth noting that the authors here work for AdaCore and have a vested interest in getting people to use their language. (Notice how they keep talking about the importance of teaching "languages like C++ and Ada" and the section about why Ada is the best programming language ever.)
  • Re:Truth (Score:3, Informative)

    by ScrewMaster ( 602015 ) on Monday January 21, 2008 @11:34PM (#22133680)
    IMHO any self respecting programmer needs to at least KNOW how to operate close to the metal, if only so it makes them a better coder at the higher levels.

    Well, a lot depends upon your eventual focus. Me, I started out in life on a Rockwell PPS-4 4-bit micro, eventually graduating to an 8080 and then the 6502, 6800, 6809 ... didn't get much closer to the metal than that. I agree with you that, as a general principle, knowing the low-level stuff can make you a better programmer. With C/C++, I'd say that knowing assembler (several assemblers) is a definite plus, really a prerequisite, especially if you do embedded systems work with limited resources.

    However, given the level of abstraction in more sophisticated programming languages (Java and .Net in particular), knowing how to use pointers and memalloc probably doesn't buy you all that much. You'll never use them directly, and you're so far from the underlying constructs you're better off just learning the best practices for the language of your choice. Otherwise, you're just guessing at what's going on under the hood.
  • And this is why... (Score:4, Informative)

    by theJML ( 911853 ) on Monday January 21, 2008 @11:56PM (#22133838) Homepage
    This is why things are getting more and more bloated. I learned in basic and was quite glad when I got to c that I was learning something closer to what actually goes on. I had 3 Pascal classes in HS and shortly into them I found out just how powerful Assembly really is. Luckily I had a teacher that let me use that knowledge with inline statements on assignments. Things just worked, and worked quickly.

    There are trade offs to be made. Sure you can probably hack something together using less lines in Java or .NET, but I know for a fact, there's no GOOD reason to have to install a 120MB .NET install for some of the simple control panels and apps that are out there (ATI, I'm looking at you...). I remember when people tried to make their programs smaller and more efficient, finding ways to both put it on a floppy, and run quickly on slow hardware. Now these young whipper snappers use some high level interpreters and say screw the extra cycles, Proc's are cheap. Corps aren't worried about running quickly, or taking up small amounts of memory with elegant programs. They just want it released. Now. No time to dilly-dally on making "good" code, just gotta keep cranking it out. If it's slow, just up the requirements. I long for the days of assembly and low level programming...

  • by Anonymous Coward on Tuesday January 22, 2008 @12:40AM (#22134146)
    It is a Karnaugh Map(http://en.wikipedia.org/wiki/Karnaugh_map), not a "carnal map". Mechanics get an ASE certification(http://en.wikipedia.org/wiki/Automotive_Service_Excellence), not an ACE certification.
  • by Anonymous Coward on Tuesday January 22, 2008 @12:41AM (#22134150)
    The main problem today is there is confusion between Computer Science and Programming. Computer Science as it's supposed to be is for learning algorithms to solve complex problems in a logical and optimized way. While the practical side of this indeed involves programming, many theoreticians go their entire lives without coding one single thing on a computer.

    The problem lies in this notion that Programmer == Computer Scientist. Which isn't and shouldn't be the case. I could go on, but what really needs to change is the perception around what is to be expected from a computer scientist versus a software engineer versus a computer engineer versus someone who's taught how to program. Indeed there are curriculum based in hardcore coding in C/C++ and then there are others where are based in theory and use Java. It really depends on the school, its research focus, and its quality.

    I'll stop rambling here.
  • Re:@_@ (Score:3, Informative)

    by wellingj ( 1030460 ) on Tuesday January 22, 2008 @01:00AM (#22134280)
    I don't know about that. I work on an embedded team of 4 people, and we enforce OO in C. We get along just fine. Most days.
  • by beckje01 ( 1216538 ) on Tuesday January 22, 2008 @01:26AM (#22134438) Homepage Journal
    At my undergrad during my last year they completely redid the structure of the CS program, and looking at it now I very much like it. I am currently a CS PhD student and a software engineer doing everything from medical device programming to web development, so I've seen the gambit of the low level coding to the high level all the way to the CS research. When I see entry level classes taught in C and Java I think its just wrong. What are you trying to teach in the first 2 semesters? How to compile code and get things to work or are you trying to teach data structures and problem solving? My undergrad has moved to teaching the first two semesters in Python and I think it was a great move. Not only is it quick and easy to get into those people who would like to learn a little CS to help out in basically any science now get a tool that they can easily pick up and use later in life. (Also forces proper indenting.) After the two starting classes the 3rd course in the entry series is Java and all kinds of things you should know in CS that fall through the cracks. The profs went around to the seniors and asked what things were lacking in the current classes, so things like regular expressions, version control, and other very useful but overlooked items were added into this new class. I think its a good plan I'm not 100% as the first students should be coming out soon so we'll see how they turn out. After seeing the vast differences in low level programming to high level programming I almost see a need for a separate degree but all I'm seeing is companies hire EE people for embedded programming and hire CS for the higher level tasks. All well eventually schools will work it out and there will be a real distinction between Computer Engineering Degrees and Computer Science Degrees. Also to make it a bigger headache don't forget there are both Computer Science BAs and BSs. I actually have a BA which makes job interviews interesting sometimes but it hasn't seemed to hurt me yet.
  • Re:@_@ (Score:3, Informative)

    by Lally Singh ( 3427 ) on Tuesday January 22, 2008 @01:59AM (#22134612) Journal
    I see where you're coming from (at least I think I do -- you're the ultimate judge on that), but I respectfully disagree.

    The advantage to java is that it's safer to make errors there. Screw up with a reference, and you get a nice stacktrace. In C/C++, your program just dies (you can get a debugger on there, sure, but 1st year students are rarely taught debugging skills).

    That said, Java's good for getting someone into the proper habits of programming. Let them cut their teeth there - make their typos, basic logic mistakes, etc in a safer sandbox. Teach them how to print out debug statements early to understand what's going on, and to identify what mistakes they often make. When they know how to properly type in a loop construct and declare/invoke a function, then let them play with pointers.

    And then you let them use C++. Not the big scary version of C++ everyone in /. is afraid of (IMHO unjustly so), but just the C with classes version. Let them use that for their data structures course. People still have to take a data structures course and write their own implementations of the basic data structures! It's what we do here and it's not too bad an idea -- the kids should get trained on more than one language.
  • by starfishsystems ( 834319 ) on Tuesday January 22, 2008 @02:28AM (#22134804) Homepage
    Java and C don't map so well. There are some things for which only C makes sense currently, such as driver development. Java is a virtual machine.

    To be precise, Java is a language specification. It's typically implemented as a virtual machine, but there's no fundamental requirement to do so.

    Let's consider Lisp instead for a moment, since Gosling, Steele, et al used it as a conceptual basis for Java. It has an extremely rich history. Lisp predates Java in being implemented as a virtual machine. The dialect was Interlisp.

    The Xerox model 11xx AI workstations used Interlisp as the system language. Lisp device drivers and network stacks were also implemented for the MIT Lisp Machine and its commercial derivatives based on variations of MIT Lisp and later Common Lisp. Note particularly that Lisp is running in silicon on these systems. There is no virtual machine.

    These systems were not a great commercial success, because they entered the market as very exotic and very expensive research workstations at exactly the same time as commodity microprocessors were experiencing exponential growth. The various Lisp systems just couldn't keep up with commodity growth effects on price/performance. There was nothing functionally lacking with them, and I can say from firsthand experience that it was a pleasure to work on their operating systems.

    I'm not convinced that I would enjoy working with an operating system written entirely in Java, but there's no reason such a thing couldn't exist. If a JVM can perform acceptably on top of a foreign processor architecture, it should only perform better without the virtual machine overhead.

  • Load of Crap (Score:2, Informative)

    by Heembo ( 916647 ) on Tuesday January 22, 2008 @07:09AM (#22136234) Journal
    These guys are shills for the "Ada industry" and are not really crying about "damaging to students", but rather how difficult it is to find Ada programmers in support of their personal financial interests. And they do so hidden behind academic titles. Depressing. The world of programming for new grads is mostly about web development which is either Java, PHP or .NET. A CS program "rich in Ada" is not very beneficial to grads. OO Java Development is an excellent teaching language and is very pertinent for a bachelors of science in CS education.

Prediction is very difficult, especially of the future. - Niels Bohr

Working...