The Problem with Java
And why it shouldn’t be taught in introductory programming classes.
“Welcome students, to your first ever day of computer science! This is going to be a fascinating year, and I cannot wait to teach you all about one of the most relevant topics in the world today. Teaching computer science is my passion, and although all of you may not go on to be computer scientists, I do hope to instill you with deeper understanding of why computer science is so powerful. I hope that wherever you end up, you find a way to use it for the better.
Of course, today is just the first day, and we will start slowly. You will write your first ever program in Java! The learning goals for today are directly related to the program. They are as follows:
- Understand different input and output types for functions
- Understand how to read input from the command line
- Differentiate between primitive and reference types in Java
- Manipulate and work with arrays in Java
- Understand the programming paradigm known as object-oriented programming: Why do we make a function public? Why do we make it private? What is the difference between a static function and a non-static function? What is dot notation?
The first lab is linked on the course website. Good luck!”
Our teacher above (let’s call him Mr. Bit) seems wonderful at first. He is clearly excited about the topic and cannot wait to share his love for computer science with his students. Passion, after all, is an essential component of good teaching. Mr. Bit’s excited demeanor might even take some of us back to our own first computer science classes.
But then, things take a curious turn. Most, if not all, computer science educators would agree that the Mr. Bit’s lesson plan is a bit flawed. The learning goals intended for the first day of an introductory class — for the first exposure these students have ever had to code — are utterly ridiculous. For starters, these students likely do not even know what the command line is — how are they supposed to understand how to work with it? Additionally, arrays are a fairly involved topic, and usually don’t appear until Week 3 or 4 of an introductory class. And…