Degree or no degree, everyone should be a computer scientist

computer science
By Sian

If you were to ask someone why they didn’t want to be a computer scientist, their most likely answer probably would be: “I just don’t want to spend my life coding.” While coding is certainly a component of the life of many computer scientists, there are many who do not even touch code. I would even argue that the allure of studying computer science has nothing to do with coding at all.  

Students today want to be exposed to skills that will allow them to adapt to a rapidly-changing world. Skills such as questioning, collaboration, and independent thinking will never become outdated. Thankfully, computer science is a natural environment to learn these valuable, indispensable skills...

Algorithmic Thinking

The main goal of any code written is to solve problems. While these problems may scale in difficulty and complexity, such as landing a space shuttle on Mars or solving an integral, each task begins firstly with understanding the problem, brainstorming solutions, and deciding on the most efficient solution to execute. Before the student even begins to write up the solution in a programming language, they must first design a solution consisting of consecutive rules required to reach their end goal. Some of these steps may require additional dependencies or pose unreasonable constraints. When the student is required to deliberate all the intricacies necessary for designing an algorithm, they become more detailed-oriented and competent. These are critical skills for approaching any dilemma! In all areas of life, it's best to have the skills to think carefully about a problem, to consider plausible ways to solve it, and to execute the best idea given the constraints at hand. Computer scientists thus find themselves being natural problem solvers in their everyday lives. 

Dynamic Programming

Dynamic Programming is an algorithmic technique for solving a given problem by breaking it down into simper subproblems, utilizing the fact that the optimal solution to a problem depends upon the optimal solution to its subproblems.

Finding solutions to a problem can seem daunting, or even over-whelming. For example, if we want a space shuttle on Mars, then all we have to do is build a space shuttle, hire astronauts and have them fly the shuttle to Mars...right? Many times, the solution is not straightforward, and therefore each step in our algorithm needs to be treated as its own mini-problem to be dissected and assessed. 

Using our running Mars example, one subproblem is having trained astronauts on hand. Before we even get to Mars, our astronauts must be trained to acquire samples on Mars, fly the shuttle, carry out scientific experiments on the planet, and handle any emergencies that may occur. Now, we can take any one of these tasks and break it down even further: in order to fly the shuttle, the astronauts must be trained in aviation, so we would need to acquire experts in the field to train them. With the concept of dynamic programming, we would break down this task even further until the first step is entirely doable. We would repeat this process for all the others tasks necessary for our mission. 

Similarly, in life, it is easy to feel overwhelmed by all we must get done in order to finish a class, receive a promotion, or reach a goal. However, if we lean on dynamic programming and create sub-problems, sub-tasks, and sub-goals, achieving our overall mission can seem a lot more doable. 


We can see through our dynamic programming example that solving a problem involves countless moving parts requiring varying skillsets. The people who train the astronauts have very different skills than the people designing the space shuttle. Each role is equally important and vital to reaching a solution. A project always benefits from having multiple eyes on it so as to recognize hidden errors or elusive patterns, and to contribute to the diversity of ideas and skillsets . The best projects are thus often collaborative in nature, requiring cohesive teamwork to get to the best solution. 

With regards to programming, a multi-step project often requires multiple teams working on website design, databases, research, and model execution. Team members benefit one another by engaging with each other, learning new techniques or completely new skills in the process. Collaboration is essential to a well-functioning product. 


Programming can be incredibly time-consuming. Projects often span weeks, months, and even years with many new iterations or additions along the way. Hours can be spent debugging even the simplest of programs! Luckily, this experience develops patience and perseverance to tackle any adversaries in life that do not offer instant gratification. 

Now that I’ve shared some of the benefits of being computer scientist, I hope this encourages you to enroll in your first computer science course or try your first computer science project!


academics study skills MCAT medical school admissions SAT expository writing college admissions English MD/PhD admissions writing LSAT GMAT strategy GRE physics chemistry math biology graduate admissions ACT law school admissions test anxiety interview prep language learning academic advice MBA admissions premed personal statements homework help career advice AP exams creative writing MD study schedules Common Application summer activities test prep history computer science philosophy organic chemistry secondary applications supplements economics PSAT admissions coaching grammar mathematics research law statistics & probability psychology 1L ESL CARS SSAT covid-19 dental admissions legal studies logic games reading comprehension USMLE engineering Spanish calculus parents Latin verbal reasoning DAT PhD admissions case coaching excel mentorship political science AMCAS French Linguistics MBA coursework Tutoring Approaches academic integrity chinese medical school Anki DO English literature Social Advocacy admissions advice algebra astrophysics biochemistry business classics diversity statement genetics geometry kinematics mental health presentations quantitative reasoning skills study abroad time management work and activities IB exams ISEE MD/PhD programs STEM adjusting to college algorithms art history artificial intelligence athletics business skills careers cold emails data science functions gap year international students internships letters of recommendation logic mechanical engineering poetry resume science social sciences software engineering tech industry technical interviews trigonometry 2L 3L AAMC Academic Interest DMD EMT FlexMed Fourier Series Greek Health Professional Shortage Area Italian Lagrange multipliers London MD vs PhD MMI Montessori National Health Service Corps Pythagorean Theorem Python Sentence Correction Step 2 TMDSAS Taylor Series Zoom acids and bases amino acids analysis essay architecture argumentative writing art art and design schools art portfolios biomedicine brain teaser campus visits cantonese capacitors capital markets cell biology central limit theorem centrifugal force chemical engineering chess chromatography class participation climate change clinical experience community service constitutional law consulting cover letters curriculum dementia demonstrated interest dental school dimensional analysis distance learning electric engineering electricity and magnetism enrichment escape velocity european history executive function finance first generation student freewriting fun facts genomics graphing harmonics health policy history of medicine history of science hybrid vehicles hydrophobic effect ideal gas law induction infinite information sessions institutional actions integrated reasoning intern investing investment banking lab reports linear algebra linear maps mandarin chinese matrices mba medical physics meiosis microeconomics mitosis music music theory neurology neuroscience office hours operating systems organization pedagogy phrase structure rules plagiarism potential energy pre-dental proofs pseudocode psych/soc qualifying exams quantum mechanics relativity