A Tale of Two Courses

With one week left in my final semester at UNF, I thought I'd point out a few things I realized this semester. For better or worse, UNF is a Java school and both courses I took this semester (COP3503 and COP4610) use Java to execute concepts covered in class. While some people seem to have negative opinions about using Java heavily in a CS curriculum, I've never really understood why. As I found out this semester, there are some very good reasons to be wary of courses that utilize Java.

On the first day of my Operating Systems (COP4610) course, the professor dusted off the overhead projector and pulled out his collection of yellowed paper notes. It was at that point I knew the course was going to be enjoyable. Instead of focusing on teaching with technology (PowerPoint, Eclipse, etc.), the class focused on the core concepts behind operating systems. Java was an afterthought, only used in homework assignments to show understanding. To me, this is exactly the way every course should be taught. The language used in the course should be irrelevant.

Completely opposite of COP4610, my Computer Science II (COP3503) class was horrific. When I first walked into class, the professor was speaking in absolutes. I'm fully aware that this is a personal pet peeve, but I despise the use of absolutes, especially when teaching. When students hear things like "you should always write a toString method for your objects" and "checked exceptions are wonderful" coming from a professor, they tend to believe it. While the professors understanding of Java seemed strong, he commonly stumbled over the material and failed to elaborate where necessary. A student once asked if it was possible to do something like the following in Java:

public static <T implements myInterface> void testMethod();

When the professor said that it was not, he failed to explain that when using generics in Java you can specify an interface where you would normally specific a class. For example:

public class test {
    public static void main(String[] args) {
    }

    public static <T extends myInterface> void testMethod() {
    }
}

interface myInterface {
}

I attribute the failure of this course to its reliance on the Java programming language. It was more like Learn Java in 21 Days and less like the intended OOP concepts and fundamentals.

EDIT: Removed professor names as they were irrelevant. The point of the story was to compare the effectiveness of two different approaches taken by professors teaching courses that relied on Java.

The professor who focused on the course material could've used any language to teach his course and it would've been just as effective.

The professor who focused on the Java language itself opened himself up to making silly syntax errors and other similar mistakes, not to mention some of the stuff he was teaching could be obsoleted in the next release of the language. If he would've focused more on the course material, he could've saved himself a lot of grief and reduced his chance of making mistakes.

blog comments powered by Disqus