(Apologies for the late post.)
I took my first course on programming in my first (“freshman”) year in college. It was absolutely terrible. This is the story of any poorly designed course, and I’m sure you have all sat through at least one. But I chose this one because as part of this class (SWC instructor training), we’re in good position to analyze what went wrong with this course and how to fix it.
We don’t need this
Our lecturer didn’t waste any time explaining to us why we needed to learn to program.
We were a class of Mechanical Engineering majors, so we just assumed that it wasn’t relevant to us. Someone in the administration probably thought it was a good idea for everyone to learn C, and here we are. This, to me, was the course’s biggest failure.
No context
The course was fairly comprehensive. We were taught about variables, values, statements, loops, conditionals, functions, structs, and all the stuff that makes a solid foundation in programming. But never, ever in context. Most of our assignments needed us to predict the value of var
after a loop executes, or create a struct structA
. If we were lucky, we’d have a question in the exam about Employee
or Customer
, but that was about as much
context we were going to get.
Disinterested lecturer
There were no attempts from our lecturer to make the class interesting. It was almost as if they were tired from teaching this class too many times and simply didn’t want to make the effort. At this point, I should mention that our lecturer was something like in their late twenties — so that was likely not true! We had different lecturers for classes and lab sessions.
Best Practice? No Practice.
We had one lab hour for every four hours in the classroom. There were no assignments. Lab sessions counted for 20% of our grade. The lab sessions and class work progressed at different paces. There was no mention of good programming practice. We learned how to separate our code into header files and source files. But no one told us why we should.
We learned to write functions, but not how to write good functions. The focus was always on the rules and syntax, and not on the concepts themselves.
Blame it on the language
I came out of that course with a hate for C, and if anything, that is something I’m still bitter about. When I took a class on MATLAB, it was easier, more relevant, and far more enabling. This naturally led me to believe that it was somehow a more “superior” language. I know better now, but I wish I did earlier.
Fixing it
As I mentioned, we were a class of Mechanical Engineers. And something as simple as renaming a variable to temperature
, or a simple function to calculate_force
,
would probably have motivated us more to learn programming. We could have also done with better evaluation: frequent assignments and more emphasis on lab sessions. The course needed focus on design, not semantics. We needed a lecturer who played a more active role, drawing connections between lab sessions and class lectures. Finally, and this might be a matter of taste, I’d teach that class in a friendlier language, like MATLAB or Python.