December 04, 2007
Java and Computer Science
I recently saw a blog entry on whether Java belongs in a university computer science curriculum. I think there are deeper issues than Java to consider.
I studied computer science at the State University of New York at Stony Brook in the late 1980’s. I began my studies with courses on discrete structures (which included topics like logic and set theory), problem solving, calculus, and computer architecture, before I wrote one line of code. My first course that included writing code was on data structures, where we used Pascal for all of the assignments.
The remainder of my studies began with an abrupt shift to C (C++ was not offered as it was very new). I recall that I shared much frustration with my fellow classmates, as we had to quickly, and on our own, apply all that we learned in Pascal to the C language just to complete our assignments. Perhaps if we started out in C, things would have been smoother, but I think a valuable lesson was learned that has remained with me through the years: as a software developer (or anyone in the computer industry), your ability to adapt and accept change will set you apart from the rest. Being able to learn at a quick pace, on your own, and then apply what you’ve learned, will help bring you success in this industry. Add to this the ability to share with and teach others around you what you’ve learned the hard way, and you’ll gain the respect of your peers also.
To the point of whether Java should be taught in college courses, I think the answer is yes. However, it shouldn’t come at the expense of the other lessons that need to be learned before ever writing a line of code. Good problem solving skills, an understanding of the theory behind computers and software, and a willingness to learn, must all precede gaining intimate knowledge of any computer language.
If you look at C/C++ as a meta-language, Java is simply an implementation of it. After all, these languages share so much in common syntactically and even conceptually that learning one does not come at the expense of the other. Today’s students that use Java have a big advantage that I didn’t have when I was in college: write-once-run-anywhere (WORA). I was stuck sharing time with other students in a university computer center because that was the only place I had access to an approved C compiler, with the ability to email my assignment to the course professor when complete. Today, students can use Java (and even GNU C compilers if they happen to have a C project) on their laptops, and then email the assignments straight from their dorm rooms. And it doesn’t matter whether they run Linux, Windows, or Mac OS X; My choice was limited to a time-shared PDP-11.
To summarize, the use of Java provides students:
-The flexibility to write code on almost any computer available to them
-A variety of integrated development environments (IDEs)
-The ability to learn and apply data structure concepts
-Object-oriented programming
-Concurrent programming
-Real-time programming
and so on…
Happy coding,
EJB
Posted by Eric Bruno at 09:52 AM Permalink
|