Audrey Watters writes in Hack [Higher] Education that maybe it’s time for programming to join critical thinking and effective writing as part of the body of required knowledge for all university students:
But I will posit that all students should learn programming, whether they plan to become programmers or not. Many universities already require students take composition in order to graduate. Perhaps it’s time for programming — “the new literacy” — to become a requirement too?
I would second that notion pretty strongly, with the provision that “programming” be broadly interpreted as any sort of creative act that gets a computer to function in a way that is not totally obvious or already part of its built-in feature set. Under that interpretation, “programming” could include activities like writing a technical document in \(\LaTeX\), writing a simple web page in HTML, writing an Excel macro, and so on. There’s no reason why every student in a university cannot or should not learn skills like this. And if you want to think and act freely (hence the term “liberal” in the liberal arts), and not be a slave to the technology you use, there is certainly an argument to be made that all students need to learn about computing on a non-superficial level.
Programming is especially important for mathematics majors and minors. When I was first learning cryptography, I realized that I never really understood the mathematics of a cryptosystem until I tried to implement it in code. You certainly have to think carefully and critically, and write with absolute clarity, to correctly write code to do things like the Euclidean Algorithm or a simulation. And yet, many times math majors have one programming course in their entire curriculum, and it’s not connected in a meaningful way to their math classes, so guess what? It becomes an add-on and a hurdle. That ought to change, if nothing else. People who learn math at this level in the 21st century ought to be programming early and often.
Getting programming down into the foundation of a mathematics degree was the main goal of a curricular redesign I was involved with at my previous institution, and the main fruit of that undertaking was the inverted MATLAB class that I’ve written about here a lot, and which was taught at the freshman level and required for all students going on to Calculus 3. One of the main constituencies of that class were pre-service teachers, including elementary education majors seeking a middle school math endorsement. That was — to put it mildly — a tough sell. Which is why a broad definition of “programming” would make sense if we want a broad level of introduction and buy-in.
What do you think? Should programming in this sense be required of all students in college?