Learning to Program Benefits Everyone

There are a number of pedagogical ideologies that take a stance on what information is most valuable, and on who should learn what. Liberal arts institutions strive to deliver instruction and experience across a wide gamut, whereas vocational schools are narrowly focused on presenting the skills necessary to perform a job. I avidly subscribe to the liberal arts philosophy for a number of reasons. Among those, I believe a liberal arts education teaches you not only fundamental material, but imparts you with the skills and broad perspective to think critically about the world. Learning to program is a skillset that serves multiple purposes and should be pursued by every student.

Coding allows for a unique perspective of the world. Patterns that no human can expediently discover can emerge swiftly from effectively using programming. Many disciplines of the humanities, such as sociology, revolve around the collective human experience. With more data available, scholars can make conclusions from more robust data sets that better represent the entire human experience; to process this data efficiently, however, often requires the use of a programming language. University of Maryland English Professor Matthew Kirschenbaum writes in his article “Hello Worlds (why humanities students should learn to program):”[c]omputers should not be black boxes but rather understood as engines for creating powerful and persuasive models of the world around us.” Understanding the basics of coding allows for one to peer into that black box.

Not everyone agrees with this sentiment, however. Although then student Evan Donahue agrees that everyone should learn how to program, he does think that it is not necessary to learn programming to leverage the tools that computer science offers. In his blog post “A “Hello World” Apart (why humanities students should NOT learn to program)” he writes: “…[S]tudents should learn to program, but they should not let their inability to program prevent them from engaging with the computer sciences.”

Many of us, even those with doctorate degrees in computer science, do not fully understand all of the technologies that are encompassed within the domain of computer science. Yet, many of us greatly benefit from their use. In this sense, I agree with Donahue in that people should take advantage of the existing technology, even if they do not understand it. Ultimately, however, I believe learning about the underlying technology is valuable in and of itself and is a valuable pursuit that all students should strive for.

The exercise of learning to program itself has great benefits that can extend to any and all areas of study and pursuit. In the words of Steve Jobs: “Everybody in [the United States] should learn to program a computer, because it teaches you how to think.” In CNBC’s article entitled “Apple CEO Tim Cook: Learn to code, it’s more important than English as a second language” Jobs’ successor Tim Cook articulates a similar perspective: “Creativity is the goal. Coding is just to allow that. Creativity is in the front seat; technology is in the backseat. It is sort of the blend with both of these that you can do such powerful things now.”

In the end, technology itself is not as glamorous as what people do with it. By learning to program, anyone can achieve those glamorous results. This belief prompted me to begin coding: I wanted to create an iOS app, and I soon discovered that I’d need to learn how to code.

As I navigated the path that would eventually lead me to my first iOS app, I encountered my first language, C, while in middle school. I knew eventually that I would need to learn Objective-C to develop for iOS, so after I quickly zoomed through some C tutorials, I proceeded to learn Objective-C with my admittedly shaky foundation in C. In later years I learned Swift, and then learned Python, Java, and (most recently) Scheme at Carleton. Along the way, I gained exposure to HTML, CSS, and JavaScript. I still remember just how perplexed I was by the idea of calling a function, and that what I thought of a word or a sentence was called a string, and in some cases a number a float.

While I faced a steep learning curve early on, I found the benefits of being able to program profound. I’ve loved the journey, and think I’ve benefited a lot from it. Despite being an integral piece in computer science, it is something for everyone to learn and benefit from, regardless of one’s area of study.

Here’s some excerpts from Python code that I wrote to help me process open source data from a Chinese-English dictionary so that I could append dictionary definitions to my existing list of vocab words. I was able to use this programming language to help me out immensely with learning more detailed definitions of words that I was studying in Mandarin Chinese.

	for entry in entriesList:
		primaryList.append(entry.split("["))
		primaryList[entryCount][0] = primaryList[entryCount][0][:-1] #delete the space that follows the simplified character
		#print("primaryList" + "[" + str(entryCount) + "]" + "[0]" + "'" + primaryList[entryCount][0] + "'")
		secondaryList.append(primaryList[entryCount][0].split(" "))
		tertiaryList.append(primaryList[entryCount][1].split("]"))
		tertiaryList[entryCount][1] = tertiaryList[entryCount][1][:-2] # delete the new line representation "\n" that follows the defn
		tertiaryList[entryCount][1] = tertiaryList[entryCount][1][2:] #delete space and / that proceed defn
		
		preMasterList = []
		preMasterList.append(secondaryList[entryCount][0]) #add traditional character to the preMaster list
		preMasterList.append(secondaryList[entryCount][1]) #add simplified character to the preMaster list
		preMasterList.append(tertiaryList[entryCount][0]) #add pinyin to the preMaster list
		preMasterList.append(tertiaryList[entryCount][1]) #add definition to the preMaster list
		
		masterList.append(preMasterList)
		
		
		entryCount+=1
	return  masterList

def deDuplicate(mergedList):
	concatenatedList = []
	for entry in mergedList:
		present = False
		for concatenatedEntry in concatenatedList:
			if entry[0] == concatenatedEntry[0]:
				present = True
		if present == False:
			concatenatedList.append(entry)
		if present == True:
			for concatenatedEntry in concatenatedList:
				if entry[0] == concatenatedEntry[0]:
					#concatenatedEntry[0] = concatenatedEntry[0] + entry[0]
					concatenatedEntry[1] = str(concatenatedEntry[1] + "......" + entry[1])
					concatenatedEntry[2] = str(concatenatedEntry[2] + "......" + entry[2])
	
	return concatenatedList

Author: John

Leave a Reply

Your email address will not be published. Required fields are marked *