What is Computer Science? – by Steven Pitarro

A new week is upon us and so is a new article. From someone new. Not me, not faculty, but a fellow student. Remember when I mentioned you are going to hear from a lot of different people? Well, this week, our fellow student in the CSE program wrote an article that I think is not only timely, but also insightful. I meet lots of people who tell me they want to do computer science because they want to learn how to hack, or when they are being honest, they say they want to code like they see people in the movies. On a more serious note, many people, including the students in the program, might not understand what Computer Science is about and fortunately, this week’s article starts to bring some insight to a much bigger conversation and topic that I hope we can expound on as time goes on. So, if you feel inspired after reading this and want to share your views with us about this same topic, please write to me at nekesame@buffalo.edu. Also, if you have more questions about the program, feel free to reach out too. If I can’t answer your questions, I will be sure to point you to someone who can. I look forward to hearing from you and enjoy the rest of your week!

What is Computer Science?

What are some things that you think of when you hear the words “Computer Science?”  Words like code, programming, systems, algorithms, and so on often rise to the surface whenever Computer Science is mentioned.  While all of those things are important, there is more to computer science than just those things. Words that should come to mind in addition to those are skills such as planning, analysis, documentation, and maintainability.  

On the surface, Computer Science seems like only programming and not much else. After all, this is what is shown in the media.  Movies and TV shows like to depict computer scientists as people who are with their computers all day, constantly writing things and always knowing how to respond to every situation.  They never show things like the planning of systems and the comparison of ideas on how a system should be developed. In reality, those things are just as important as programming.  

Think about this: when you receive a problem or an assignment, do you jump right in and start working on the questions? Or do you look at the questions and take time to plan out what your solution will look like and whether or not it will be correct?  Planning your solution to whatever problem is a crucial part of Computer Science. You can sit at a computer for hours trying things and developing your solution to wind up with a mangled mess of code that, while functional, not very practical. However, you can take those same hours to plan out your solution and save yourself some stress by working out those potential problems before even opening up an editor rather than in the middle of development.  Anybody can write a program, but not everybody can plan a program.  

Program maintainability is probably the most important part of writing good code, as this illustrates the difference between a programmer and a computer scientist.  Programs are not a one-and-done thing; they evolve over time, which is why maintainability is important. If code is a mess of logic and various other components, it might work for what it was meant to do, but it can never go through evolution because nobody can understand where to begin deciphering what is going on. You might be thinking ‘Well, I know what is going on so I can just explain it to people if they need to use it,’ but think about what would happen if you wrote code like this in the workplace.  If you write this kind of code and then leave the job, you can no longer explain that program to people. This may cause the company to spend time and resources deciphering code that they already have, just to be able to modify it to work for another kind of problem. This can be solved by planning your programs, and providing good documentation on what everything you are writing means. Anybody can write a program, not everybody can design a program.

Documentation is the most essential thing to writing maintainable code.  If somebody were to need to use your program to figure out a task they were working on, the first thing that they would look at to figure out what you wrote would actually be your comments of the code, not the code itself!  The only things that people will care about when they go to use your program are:

  1. Whether or not your program does what it needs to accomplish.
  2. Whether or not your solution is efficient.

The goal of writing documentation is to communicate information effectively and efficiently to the potential user of it, as well as communicating how to use it.  Think about this: if you are developing a program and have the option of using two pre-written programs as part of your solution, would you use the one that takes you a few minutes to read about, or would you spend an hour or so looking through the code trying to figure out what it does? People think in different ways as well. Two people can be given the same problem, yet think about it in completely different ways.  Documentation can help somebody who does not think in the same way you do in order to understand what you wrote. Anybody can write a program, not everybody can understand another person’s program. 

Analysis of your programs and algorithms is also an essential part to why computer science is different to programming.  This is due to a number of reasons, the most important of which are run time and space usage. Efficiently writing a program involves making the most efficient use of space and saving the most time possible while maintaining the functionality of the program.  If you were a hiring manager at a company, and two candidates were applying to the same job, would you take the one that answered all of the problems with a program that works, or would you take the one that provides an efficient program that works for all of the problems posed to them?  Anybody can write a program, not everybody can write a good program.  

In conclusion, being a computer scientist is not just about knowing how to program; it is about being able to effectively write a program that works efficiently through thorough analysis and planning of how to write the solution. The program should be easy to understand through documentation, and that is able to evolve as the need arises.  I hope that this helps you to better understand what computer science is.  

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.