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 college admissions expository writing English strategy MD/PhD admissions writing LSAT GMAT physics GRE chemistry biology math graduate admissions academic advice law school admissions ACT interview prep language learning test anxiety career advice premed MBA admissions personal statements homework help AP exams creative writing MD test prep study schedules computer science Common Application mathematics summer activities history philosophy secondary applications organic chemistry economics supplements research grammar 1L PSAT admissions coaching law psychology statistics & probability dental admissions legal studies ESL CARS PhD admissions SSAT covid-19 logic games reading comprehension calculus engineering USMLE mentorship Spanish parents Latin biochemistry case coaching verbal reasoning AMCAS DAT English literature STEM admissions advice excel medical school political science skills French Linguistics MBA coursework Tutoring Approaches academic integrity astrophysics chinese gap year genetics letters of recommendation mechanical engineering Anki DO Social Advocacy algebra art history artificial intelligence business careers cell biology classics data science dental school diversity statement geometry kinematics linear algebra mental health presentations quantitative reasoning study abroad tech industry technical interviews time management work and activities 2L DMD IB exams ISEE MD/PhD programs Sentence Correction adjusting to college algorithms amino acids analysis essay athletics business skills cold emails finance first generation student functions graphing information sessions international students internships logic networking poetry proofs resume revising science social sciences software engineering trigonometry units writer's block 3L AAMC Academic Interest EMT FlexMed Fourier Series Greek Health Professional Shortage Area Italian JD/MBA admissions Lagrange multipliers London MD vs PhD MMI Montessori National Health Service Corps Pythagorean Theorem Python Shakespeare Step 2 TMDSAS Taylor Series Truss Analysis Zoom acids and bases active learning architecture argumentative writing art art and design schools art portfolios bacteriology bibliographies biomedicine brain teaser campus visits cantonese capacitors capital markets 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 dimensional analysis distance learning econometrics electric engineering electricity and magnetism escape velocity evolution executive function fellowships freewriting genomics harmonics health policy history of medicine history of science hybrid vehicles hydrophobic effect ideal gas law immunology induction infinite institutional actions integrated reasoning intermolecular forces intern investing investment banking lab reports letter of continued interest linear maps mandarin chinese matrices mba medical physics meiosis microeconomics mitosis mnemonics music music theory nervous system