Slashdot Mirror


Professors Slam Java As "Damaging" To Students

jfmiller call to our attention two professors emeritus of computer science at New York University who have penned an article titled Computer Science Education: Where Are the Software Engineers of Tomorrow? in which they berate their university, and others, for not teaching solid languages like C, C++, Lisp, and ADA. The submitter wonders whether any CS students or professors would care to respond. Quoting the article: "The resulting set of skills [from today's educational practices] is insufficient for today's software industry (in particular for safety and security purposes) and, unfortunately, matches well what the outsourcing industry can offer. We are training easily replaceable professionals... Java programming courses did not prepare our students for the first course in systems, much less for more advanced ones. Students found it hard to write programs that did not have a graphic interface, had no feeling for the relationship between the source program and what the hardware would actually do, and (most damaging) did not understand the semantics of pointers at all, which made the use of C in systems programming very challenging."

5 of 1,267 comments (clear)

  1. About the Authors by etymxris · · Score: 5, Informative
    Gee, wonder why they're praising Ada so much.

    Robert B.K. Dewar, Ph.D., is president of AdaCore and a professor emeritus of computer science at New York University. He has been involved in the design and implementation of Ada since 1980 as a distinguished reviewer, a member of the Ada Rapporteur group, and the chief architect of Gnu Ada Translator.

    Edmond Schonberg, Ph.D., is vice-president of AdaCore and a professor emeritus of computer science at New York University. He has been involved in the implementation of Ada since 1981. With Robert Dewar and other collaborators, he created the first validated implementation of Ada83, the first prototype compiler for Ada9X, and the first full implementation of Ada2005. Maybe Ada is helpful for learning concurrent programming and safe typing, but I'll wait for the opinion of a slightly less partial party.
    1. Re:About the Authors by Col+Bat+Guano · · Score: 5, Informative

      I'm a slightly less partial party. I've taught Ada to first year students, and our school replaced Ada with Java. Some observations are...

            Students found Ada a relatively simple language to start with (if you choose an appropriate subset)
            Java can have more overhead for a beginning student
            Lecturers are often tempted to push a lot of "stuff" in intro subjects
            Java GUI motivates some students to get more involved
            Many of my students regretted that Ada would no longer be taught in first year (having quite enjoyed it)

      No matter what you start with, teaching students to be better programmers takes more than just a language. Each language allows you to teach a specific set of skills, and Ada is not bad for teaching some important SE skills (IMHO).

      I think pointers are overrated as a first year concept, and can wait for later years.

  2. Biased? by silverhalide · · Score: 5, Informative

    This might be obvious, but take a close look at the authors of the article:

    Dr. Robert B.K. Dewar, AdaCore Inc. (President)
    Dr. Edmond Schonberg, AdaCore Inc. (Vice President).

    The article by some weird coincidence slams Java and praises Ada.

    Salt, please...

    PS, Ada is mainly alive in the Military/Aerospace industries where projects can last 20+ years.

  3. Re:Pointers, References and Performance by Mr2001 · · Score: 4, Informative

    And because it's like that, you have heap allocations for every non-atomic data type, which is really the opposite of performance. Need a simple int[2] for the pipe(2) syscall? (let's just assume it, even if Java does not have)?

    try {
                    int fds[2] = new int[2];
                    pipe(fd); /* still check return value */
    } catch (memoryAllocationErrorOrSo) { ...
    }

    Why does this need to be so complicated [...] It doesn't. You've made it more complicated than it needs to be, by putting in an exception handler. What are you going to do in the unlikely event that there is an exception, anyway - fix it somehow? Free up another 8 bytes of memory to make room? Just remove that try statement, and let the exception be caught by your top level handler.

    And then there is this garbage collector that professors swarm about. Does it handle circles? Yes, it does. It's not a reference counter, it's a garbage collector. It collects garbage, i.e. any heap object that can't be reached by following a chain of references from a root reference (like a local variable, a static field, or an instance field of any non-garbage object). A modern GC won't be fooled by two garbage objects holding references to each other.
    --
    Visual IRC: Fast. Powerful. Free.
  4. Re:tasty by StarvingSE · · Score: 5, Informative

    I think there needs to be a distinction between learning concepts and the tools you use to learn them. I graduated from uni within the past 5 years, and they taught first year CS students in Java. They used these languages to teach data structure (ie stacks, dictionaries, etc) and some simple algorithms like sorting. At the same time, they taught us proper object oriented skills since that is what the industry is demanding.

    During the second year we took a class that taught C/C++ which basically taught pointers and memory management. In my upper level courses like operating systems and graphics, it was all C and C++ from then on. I think this gave me a pretty well rounded education.

    When I was done, I had used a number of tools (languages) to learn a variety of CS topics, and felt that I was well prepared for the industry.

    --
    I got nothin'