Two Lessons in Education: Structure and Pace
Version 0.91
Two Computer Science Departments
In high school, I participated in a summer program at a university that is consistently tied for the best computer science department in the world. One of the courses I took was Introduction to Computer Science focusing on the C programming language, but at the end of the course there was an option to take the final exam for the version of the course CS majors take. The deal was, if you took that test you had to accept your grade. A handful of us studied for this while the rest of the students were enjoying a closing ceremony event. I earned an A.
The college I ultimately attended did not have a highly ranked computer science department. I thought I could transfer the credit. They declined. I asked an administrator directly: “no.” Finally, I had a meeting with the dean, and he told me to just take their Introduction to Computer Science course. I begrudgingly agreed.
He was right. It is one of the few schools teaching mainly in Lisp, and they teach it well. You’d learn recursion, tail recursion, and how to write code that had no state.1 Brilliant. Despite this school not being competitive it was an incredible education in computer architecture, programming languages, compilers, formal verification, and research.2 The top schools have a lot of smart students and professors learning and teaching in python3, but I’d take this education any day.
Two Introduction to Java Courses
The next lesson was during my tenure as an undergraduate assistant helping with an introduction to Java course. I did this for two semesters. For the first semester, the professor had students build a graphical game. These are not computer science students; there’s a high likelihood that this was their first time coding. Neither before then, nor since then, have I seen office hours packed with as many students as during that first week. It was hot, sweaty, and students were overflowing from the room. The professor had assigned them a task of drawing the game board or some unbelievable task of that nature.
The following semester had a different professor teaching introduction to Java. He started out with the basics, hello world, and receiving input from the console and manipulating it. Near the end graphics were introduced. Office hours were a free study period for me that semester.
There’s a bit of bias since some students dropped the first semester and enrolled in the second semester, but overwhelmingly the first group of students were better off. This makes sense. A psychological study known as the Yerkes-Dodson Law showed that there is a sweet spot for stress. Too much stress is bad. Too little stress is unproductive. You don’t benefit unless you have a little fire under you.4
-
My first job out of college was programming in Lisp. I really liked that job, but was disappointed that they used so many (for ()) loops. ↩︎
-
I had my name on a research paper or two. ↩︎
-
In any computer science program you are going to learn more than one language. We also did Java, C, 68000. ↩︎
-
If you find yourself procrastinating on some project, artificially add some stressors to force yourself to achieve your goals. ↩︎