Computer Science – A long and gargled Explanation

Prologue:

Computer Science has been getting a lot of attention in the past few years, especially due to media coverage. The 21st century began with a lot of optimism of Computer Technology transforming the lives of humanity for the greater good. However, there has not been a sudden boom of interest in the field of Computer Science and it may be due to the lack of understanding of the field along with the Dot Com Bubble near the beginning of the 21st Century. But there seems to be this revival in the field that many students are being encouraged to go study Software Engineering and Computer Science by their parents, teachers, and by society since “programming” is the future. This revival can probably be attributed to our increasing reliance on technology and especially due to the introduction of smartphones, fast growth of the internet such as social media, and the revival of Artificial Intelligence and Deep Learning. But not many have a good understanding of what Computer Science is.

The motivation for this blog came from a video I watched from MindaRyn, a Youtuber I subscribed to. For those who do not MindaRyn, she is a Youtuber from Thailand that does music cover that focuses mainly on J-Pop and anime. The video was a response to the frequent questions she receives from curious humans who want to know what program she studies at her University. The reason why the video sparked this post was because of her comment about coding. MindaRyn at the time of the video release was a 4th-year Software Engineering Student at Kasetsart University in Thailand. MindaRyn stated that those in Software Engineering cannot avoid coding. This statement was very funny to me and also reminded me of my orientation back when I was going into University. The reason why I found this funny is because coding is an essential component of Software Engineering and the word Software is literally in the name of the program. Although Software Engineering is more than programming, at the end of the day, the purpose of the program is to design, create, and test software through programming.

Anyways, the video intrigued me to write a comment about what I was told during an orientation held by the Department of Computer Science, Math, and Statistics at the University of Toronto Mississauga back when I was in first year. I was told that I cannot avoid Math and so I was expecting MindaRyn to say that instead of coding. Unlike Software Engineering, Computer Science focuses a lot on Math and not on learning the process of designing software from an Engineering perspective. It makes me laugh and also frustrated how many people do not understand what Computer Science is but I was once also guilty of this.

Anyways, the video intrigued me to write a comment about what I was told during an orientation held by the Department of Computer Science, Math, and Statistics at the University of Toronto Mississauga back when I was a freshman. I was told that I cannot avoid Math and so I was expecting MindaRyn to say that instead of coding. Unlike Software Engineering, Computer Science focuses a lot on Math and not on learning the process of designing software from an engineering perspective. It makes me laugh and also frustrated how many people do not understand what Computer Science is but I was once also guilty of this.

Introduction

Many people do not understand what Computer Science is. Often times we get mistaken as students striving to be IT Technicians. However, this is not the case. I often get from people questions and requests to fix their everyday IT problems such as why is the Internet not working, why is the computer not connecting to the projector, or even why a particular website is down. Computer Scientists are not IT Technicians but we do have enough technical and analytical ability to learn ourselves, in theory, to be able to do what IT Technicians can do but that is not our focus. An increasing number of teenagers are able to fix their everyday basic IT problems since teenagers are more exposed to and spending more time on the computer these days. The problems I get asked about occur due to the lack of understanding of how to use technology at a rudimentary level. IT Technicians are experts at their particular role but often get bombarded with simple problems from family, friends, and customers.

Computer Science is the study of problem-solving and understanding computation system is one way of defining what Computer Science is. The problem of Computer Science is that there are many definitions of it and it is actually very hard to explain what Computer Science is in a clear and concise way that doesn’t overshadow the true meaning. Computer Science is also very broad and so the act of giving a singular meaning leaves out a lot of sub-discipline of Computer Science.

So what exactly is Computer Science?

As stated earlier, there’s no way we can define Computer Science in a clear and concise manner. I like the approach that MajorPrep, another youtuber, explains what Computer Science is in a two part series where he doesn’t give a clear and concise answer but describes the study of Computer Science. Here are three videos from Major Prep I would highly recommend for you to watch to have a general idea of what Computer Science is at a typical University (the videos will also be embedded below as well):

What is Computer Science Part 1:


What is Computer Science Part 2:


The Math Needed for Computer Science:


In fact these three videos are sufficient enough for me to end this blog as these three videos highlight the major points of what Computer Science is in a nutshell. But I’ll continue on with my rambling as I like to do in my blogs.

Math in Computer Science

One may ask, how important is Math in Computer Science. Well the answer varies depending on what aspect of Computer Science you are looking at. To program or design a website does not require a lot of Math but rather logic and creativity. Programming is the art of breaking your ideas into a computational manner. But programming is only one element of what Computer Science is. Programming is a tool in which Computer Scientist use to solve problems and does not require a rigorous academic studying to learn how to program. A student in High School can simply pick up a book or learn from Youtube to learn how to program. But the Math and analytic skills required for Computer Science cannot be simply be self taught.

The short answer is yes you need to be good at Math to consider yourself a great Computer Scientist or at least in problem-solving. Math is central to all sub-fields of Computer Science. The Math that is integral to all sub-fields of Computer Science is Discrete Mathematics. This is a type of Mathematics that is often not taught in High Schools and is not very familiar with most people. However, it is crucial for Computer Scientists to have a strong foundation in Discrete Mathematics as it is needed for analyzing and proving data structures, algorithms, and Computation. There are other types of Mathematics that are also crucial to Computer Science but the depth of knowledge varies depending on what field of Computer Science you wish to specialize in. Math (and Statistics + Combinatorics) is needed to analyze and create efficient algorithms, data structures, prove and understand many theories such as Complexity Theory, machine learning, visual computing (i.e. linear algebra seems to be important in this field), and many more topics. If you are specializing in Artificial Intelligence and Deep Learning, then you would want to also know a great depth of Calculus and Statistics. If you are into Robotics and Visual Computing, linear algebra and calculus are very crucial to know.

A good passage I found from Quora about math in computer science is:

A thorough grounding in logic notation, proof methods; induction, well-ordering; sets, relations; elementary graph theory; integer congruences; asymptotic notation and growth of functions; permutations and combinations, counting principles; discrete probability, recursive definition, invariants and generating functions

Subfields in Computer Science

There are tons of Computer Science fields so I’ll list a few fields below and also a video that shows a great overview of different subfields in Computer Science with an explanation of each field. But before I list different fields, I want to note that Computer Science is a very broad field that can be found to be useful in every subject of study and in every job sector.

  • Applied Mathematics
  • Digital Image/ Sound
  • Artificial Intelligence
  • Microprogramming
  • Bioinformatics
  • Networks And Administration
  • Computer Architecture Networks
  • Cryptography
  • Computer Engineering
  • Operating Systems
  • Computer Game Development
  • Robotics
  • Computer Graphics
  • Simulation And Modeling
  • Computer Programming
  • Software Development
  • Software Systems
  • Data Management
  • Web Development
  • Design Databases
  • Parallel Programming
  • iOS Development
  • Mobile Development
  • Memory Systems
  • Computational Physics

List from https://www.internationalstudent.com/study-computer-science/what-is-computer-science/


Conclusion

I hope you learn and have a basic understanding of what Computer Science is. I’ll write another blog about my initial view of Computer Science and my experience in Computer Science at my University.

Twitter, Facebook