While programming will indeed usefully equip one better to understand computer scientific discourses, it should NOT be taken as the necessary precondition to engaging with the computer sciences and all who consider themselves scholars of the humanities should realize that the discourse of programming is only the technical jargon with which computer scientists address many of the very same questions that one encounters every day in the humanities. Thus, students should learn to program, but they should not let their inability to program prevent them from engaging with the computer sciences.
A “Hello World” Apart (why humanities students should NOT learn to program) by Evan Donahue
After engaging in the class debate about if Digital humanities students should learn how to code, and through it with my person experience as a CS major, I would reject the premise that humanity students should learn how to code, with the basic question of what exactly is coding, and how do you interpret the process of learning and how do you define learned.
Most people perceive coding as writing plain texts such as java and python, and using these lines of codes to write programs that could be running. My first experience with this type of coding was in high school, when I took AP Computer Science and learned Java with my physics teacher who also just learned Java several months ago. Apparently, the experience was painful. Even though I understood some logic of coding, I was very confused on why we need to put the functions in the main function to make it run, and why do we have to write the main function with public void static main(), instead of just main(). I didn’t understood these syntaxes until I learned data structure in college as a potential CS student. As I am gradually taking CS classes to fulfill my major requirements, I learned to write in more languages, but there is still difference confidence levels for me regarding writing in different languages. The hardest part is to write the logic and thoughts into codes and make them bug free, and debugging can possibly take hours to figure out.
However, besides just straight forward writing the code, there’s also something called block language which I started to use since middle school. We used the block languages to build the routes of where a robot should go, but without writing exact codes. Later when I was learning Unreal Engine 4, the block language Blue Print was also pretty useful and quite flexible in terms of make different effects. To me, the basic of computer science is not the syntaxes that varies a lot for different languages, but the logic that can handle every situation that might happen and how to deal with it. If you define coding as just writing those functions and make it run as a program, there are already many well written ones on the internet with different languages. (Not encouraging plagiarism nor academic integrity here, but basically, if the logic is the same, what is the difference from code to code except for different variable and function names.) Block languages give chances for people who don’t know how to write plain code a chance to code themselves, but can we really define block language as a type of coding? I am supportive for everyone to learn block language, since it also practices your logic in the same time. Meanwhile, I don’t think knowing how to write code in a certain language is required for digital humanities students. “Coding” here is not defined quite well, so it is hard for me to directly throw an answer.
The key thing that I think supports every aspect of computer science, is to know the whole structure of the program and the logic behind it, for example, when to use for loops and if else commands, and how these functions build together to achieve the whole feature. Here, I would address the second question, which is the definition of learning how to code, and the definition of coding skill learnt. If you simply define learning how to code is to write out every single function without looking at any syntax cheatsheet and with good enough logic, it is better for the students to study computer science instead of digital humanity. If you define a leaning how to code is to read and write a single language, which is intro class in Carleton does, it might be too much for a humanity background student to learn the syntax of the language and spending a lot of time debugging just because a semicolon is missing. Since I mentioned the logic is the most important part, I think it is necessary for students to learn the logic that construct a program. But in the same time, does the gain of logic thoughts really needs to be learned through computer science? Many other STEM subjects are also full of logic, especially math and physics. Therefore, the vagueness of “learning code” refrains me to really give an exact answer to the question (even though both authors from the readings somehow addressed these questions on their level, I am still more focused on the question itself instead of how each of them interpret it).
Therefore, I reject the premise because there are too many vague words for me to give an exact answer.
sample code:
<pre>
class helloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
</pre>
I think you make a good point with this post. One of the reasons I believed that one should learn coding is that it does teach a structured, logical way of thinking that’s very helpful. But as you state, clearly learning to program is not the only way one can learn skills like that.
Logical thinking is essential for any discipline.