Week 0: This is CS50
Computer Science is often the defined as the science of computation; however if I were to define it, I would define it as the science of connectivity. A little over a week ago I tuned in to my first live lecture from Harvard University’s CS50 – Intensive Introduction to Computer Science. CS50 is Harvard University’s largest class in recent years as well as it’s most difficult introductory class. To a certain extent it is baffling why an introductory computer science class is the largest class at a University acclaimed for it’s humanities and law studies. However once the class began, the reason for its massive enrollment was painfully apparent. CS50 is different.
The class’ first section was opened by a live DJ performance; about the furthest thing from what anyone could have anticipated. More of a host than a professor, David Malan teaches his class in an engaging and nontraditional way. While meeting for only two hours a week; the class voluntarily gathers daily for puzzles, lunch with industry leaders such as Steve Balmer and Mark Zuckerberg (who have both lectured for the course). It is this mindset that grew CS50 to the extent that Harvard cannot host it alone – partnering with Yale to purely to have enough space to host the lectures. Anyone who is even remotely interested in the pedagogical aspects of Computer Science has heard of CS50. Often talked about in hyperbole on message boards and chat rooms; CS50 is the gold standard of introductory Computer Science.
My Academic Career has always folded in Computer Science in some way. Sophomore year, I enrolled in a Computer Science Math Elective taught by Tom Gilbert. While it was an incredible class; it focused mostly on the social implications of Computer Science with the majority of the coursework focusing on the ethical and moral implications of the unsavory elements of networking. My favorite nook of Computer Science is focused on building systems. There are few things more satisfying then seeing something that you have designed from the ground up come together in a final project. This is passion was found while working with Westtown School’s robotics team. On the team, members need to know the robot from the ground up in order to be effective contributors. It is not enough for a programmer to know the syntax and how to write the code, they must work directly with the build and design teams. During my years in the Robotics program, I have discovered a passion for building almost anything. This summer I did just that as an Industrial Automation Engineer at an aerospace contractor, Rieker Inc.
Rieker assigned me tasks that formerly had to be completed manually (e.g. applying glue to a circuit board, melting and bending a glass tube) and was challenged to automate them. Often in the programming industry, computer scientists are just copy writers – They are given a defined architecture by a software engineer and then transfer the diagrams into code. This was not the case at Rieker – we were given problems without any guidance. It was my responsibility to take that idea to hardware, software and then produce a real world solution. It was incredible how satisfying it was to solve a problem from the ground up. I challenged myself to learn new skills including circuit and hardware design. I produced several automation products while at Rieker which can be found here. If any readers are interested these products, each includes a nontechnical description, the software itself and it’s hardware diagrams.
So where does CS50 fit into my studies? To me, CS50 means that I am immersing myself in a subject that I love for the first time in a structured, academic setting. So far, all of my programming knowledge is self taught. While I am certainly proficient in the execution and design of programming challenges; I have never had a formal academic introduction to the subject. For awhile, I have been able to skirt around the gritty details of programming such as data structures, the heap, and the stack. It is about time that I finally manage some of the lower level concepts that’s Ive been avoiding with layers of abstraction and obfuscation.
CS50 is a 12-week high intensity crash course to the technical study of computer science taught at the absolute highest level. It will also force me to evaluate my skills as a programmer, a mathematician, and most importantly assess what role Computer Science will play in my future.
Onto week one we go!
All images from CS50.Harvard.Edu