I was reading this article a bit ago. In it Bjarne Stroustrup talks about the inadequacies of American CS education. One point he brings up resonated with me. I took AP Computer Science A and AB (in Java) in high school, and something we learned early on was how to make our code look nice. Ideally, we didn’t put comments on the same line as code, and in AB, we had to document each method with preconditions, post conditions, and a general description of the method. While occasionally (and especially on the final project), the better practices fell to the wayside, we wrote nice code. Right now, I’m finishing up my first semester of college (intending to major in Computer Engineering), and noticed a jump between how I was taught CS in high school and how CS is taught in higher education. I took a CS course that was taught in C++, but we never talked about code style. We were referred to the textbook, which had a couple pages on it, but these were mostly what to comment. There was none of the things I was taught in Java, about you keep class data private, and segment everything into easily reusable parts. We were taught to just bang out code. One of my friends at another school was learning Java for the first time, and he had to write a class that held temperature data. He didn’t know what getters and setters were, and why you keep data private. The main class and the utility class were so interwoven, it would be near impossible to separate them.
While most of us who took CS in my high school disliked how our teacher taught us, I now see why she went through all the little steps. People in my C++ class didn’t know why we used ints or longs, and what overflow is. All of us in AP CS could count in binary, and change bases at will. We didn’t learn about bitwise operations in high school, but when I read about them now, I know why you can divide by two with a bitshift. Thanks Mrs. C.