What should a computer scientist know? – by Andrew Hughes

This week, our very own Prof. Andy Hughes wrote an article that is thought-provoking. After reading it, I thought twice about how to approach my office hours with my instructors henceforth. Furthermore, it changed the way I thought about my major too. I hope you enjoy it as much as I did.

What should a computer scientist know?

Now that computer science has become so popular, there is a large population of students that enter the field without knowing exactly what it entails. Many come in with a narrow-minded vision of computer science based on their limited exposure to the field. Have you ever had someone ask you to fix their printer after hearing you study computer science? What about build a website? Or write an app? The images of computer science that are broadcast in media usually differ drastically from reality, generalizing computer science to all things computer and IT related. This leads to a rude awakening for some students when they set foot into their introductory courses and find that much of the foundations don’t require a computer at all.

Introductory computer science courses introduce students to the tools needed to start building solutions by teaching language to control computation. Simultaneously, they begin introducing techniques needed to decompose problems as instructions for computers; many of these problems are trivial to explain in English or perform by hand but become tedious or difficult to communicate to a machine. Once you know how to communicate these tasks to a machine, you know how to write code.

The ability to write code does not make one a computer scientist, though. It is only a tool used to convert solutions for a problem into implementations. You wouldn’t call yourself a chemist once you know how to weigh and mix chemicals to perform a reaction someone else provides to you. A computer “scientist”  should have an understanding of computing in order to design processes to solve problems. The design process draws heavily from mathematics and logic, the roots of computing. A program is only a verifiable experiment to realize your solution.

Is this topic relevant to me?

Due to the tight coupling with mathematics, there are fundamental reasoning skills introduced early on in the curriculum that serve as a cornerstone for many computing courses. Commonly, these are introduced on their own as a mathematical concept and are only motivated mathematically. When the relevance isn’t immediately obvious, disinterest grows easily. At the first signs of this, you should ask yourself or your instructor(s) how these more theoretical concepts could align with the interests you have.

It is important to keep a curious mind and ask questions based on your interests. For example, prime numbers are used on every secure browser session, probability and linear algebra contribute to recommendations on YouTube and Instagram, and set theory is heavily relied upon when searching and filtering through Amazon products (among other things). These examples are complex problems, so to approach these problems you must understand all of the bits from the ground up. Unfortunately, an introduction to the concepts fundamental to these problems only provides you with the most basic toy problems/applications so that they are more generalizable, as there are many other applications for these key ideas (like sets). Discrete structures is one such culprit but depending on where your interests lie, you can gain great insights into the course topics if you push beyond the scope of the coursework where it is introduced. Whenever you feel something is not relevant to you, ask your instructor to help provide more context. This is the best usage of office hours.

There is great benefit to knowing why something is relevant to you. It is much easier to learn something when you are properly motivated. Is this relevant to me becomes a question that can be easily self-answered with a “No” and is not nearly asked enough of instructors. When this question is asked along with sharing your interests and concerns, it may spark a discussion that grows insight and sheds light on connections that may otherwise be left in the dark.

So what is the right answer?

By now, I hope you are convinced that there is no general answer to what a computer scientist should know because the full answer is individualistic. There are common skills that all computer scientists should have, which come from core courses (algorithms, data structures, programming skills, mathematical reasoning). The question of “What else should I know?” may be one of the most important questions to be asking and reasking during your tenure in university, and beyond. You should be seeking the answer to this within the scope of your interests and, most importantly, always continue to ask more questions. This will best equip you to adapt to any problems that come your way.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.