Rethinking the Java Curriculum: Goodbye, HelloWorld!
Subject:   Confusing two different things
Date:   2002-08-23 07:48:58
From:   davetron5000
As many have pointed out, and the like is for learning two things:

1. The development cycle for programming anything: write code, compile code, run code, repeat
2. To verify that your environment is set up.

I feel that schools do not spend enough time on "how to program" and too much on theoretical discussions about non-applicable things. Articles like this make me think that there is even more removal of "how to program" knowledge from the students.

I also feel that Java should not be the introductory language for students, because it robs them of the chance to learn about resource allocation and management (namely memory), which is very important in helping them PROGRAM COMPUTERS, which is what they are being trained to do for the most part.

Additionally, once you are in your methods of your well-architected objects and all that, you are writing a procedure. A method in the real world EVENTUALLY boils down to a procedure for acomplishing some task. That is where programming should start.

The first programming language I learned in school was Karel the Robot, because it taught me how to problem solve and write a robust procedure to accomplish something. From there you expand.

OO is a tool. Not all of it is good. XP is a tool. Not all of it is good. The ability to solve a problem and tell a computer EXACTLY what to do IS what programming is all about. This should be taught in school, and it should not be intermingled with the teaching of various techniques/theories/etc.

Full Threads Oldest First

Showing messages 1 through 1 of 1.

  • Confusing two different things
    2002-08-23 15:05:50  blrfl [View]

    Well said. I have to agree.

    The education system has stopped turning out developers who can construct a solution that is thoughtfully-designed, well-engineered, efficient, elegant, understandable and maintainable. Sadly, as time marches on, I see more and more code in the flavor-of-the-month language which does the job but makes use of few of the language's features and has all of the appeal of a stomach pump. Sure, it's OO because the environment dictates it, but what's inside is still procedural in nature, and a lot of what I see in those procedures is of pretty low quality.

    Part of the problem is that our tool boxes have much more complex tools in them than when I started writing software (23 years ago). I've been fortunate in that I've been able to grow along with the industry and absorb new concepts gradually. Maybe in our zeal to turn out programmers who can get a job using the latest language, we're trying to cram in too many things too early on. Maybe because of the amount of material, it should take six years to get a CS degree instead of four.

    The solution? Don't use Java as an introductory language. I don't think someone who's never written a program in his life is ready for it. Start with a nice, strict procedural language that's good for introducing the foundation concepts. And don't forget a little assembly, so students can understand what's going un underneath all of those calls to system.out.println(). I find that few do these days. (Wow! You mean the machine actually has to send out one character at a time? Whoa!)