Why are hardware and software both important in computer science?

In this blog post, we’ll use smartphone route planning as an example to explore the types of problems computer science addresses, examine the relationship between hardware and software, and see how they contribute to the advancement of computers.

 

Most people probably have an app on their smartphone that displays a subway map, like the one shown below. You’ve likely used such an app to find the shortest route to your destination. However, you’ve probably never stopped to think about how your smartphone actually finds that shortest route. You might think, “Can’t I just look at the map and find it roughly by intuition?” but you know that relying on intuition isn’t always the right answer. This is because there are definitely cases where a route that takes a longer detour—even if it involves several transfers—actually takes less time than a direct route. So, who solves this puzzle, and how should applications be designed to enable smartphones to solve such problems?
Neither physics majors, economics majors, nor art majors specialize in tackling these kinds of problems. Solving them using machines is the job of those working in computer science. As the very mention of the word “science” suggests, solving these problems isn’t something that can be done by simply mulling it over for a few hours. The correct answer must be derived through airtight logic and concrete, precise evidence.
Generally, when people think of computer science majors, they imagine them having detailed, comprehensive knowledge of every single component inside a computer, and being able to identify the cause of a malfunction and fix it in a matter of minutes. That’s not entirely wrong. However, the assumption that computer science majors study only topics directly related to such machines is also not true. Computer science utilizes mathematics and logic to find algorithms that can quickly and accurately solve problems—both large and small—closely related to real life, such as the shortest path problem mentioned above, and to identify efficient data structures that make optimal use of the resources required to solve these problems. In fact, computer science borrows and applies a significant portion of the theories discovered by mathematicians.
Of course, since all tasks are performed by computers, not only must the execution process be efficient, but the performance of the computer itself is also crucial. Factors such as processing speed and heat dissipation must be optimal. Even if a college student prioritizes the flood of major-related assignments that come during the semester and allocates time efficiently for each task, it is all in vain if the student lacks the necessary major-specific knowledge and experience to complete them in the first place. The same applies to computers. No matter how effective an algorithm may be, if the computer lacks a processing unit capable of executing it quickly or the ability to store previously used data and retrieve it when needed, any improvement in performance will inevitably be minimal.
Thus, the mechanical components of a computer are referred to as hardware. Conversely, the programs that utilize the computer as a machine to perform tasks are collectively called software. If a college student’s knowledge is the computer’s hardware, then the process by which the student determines the sequence for tackling assignments can be considered software. The application that finds the shortest route on the subway map mentioned at the beginning of this article also falls under the category of software.
Although hardware and software have distinct names and appear to be two sets with no overlap, they are in fact inseparable because software runs on hardware. Someone who is simply skilled at programming and building applications might be able to develop countless smartphone games, but they may face limitations when it comes to fundamental research aimed at improving computer performance.
Conversely, someone who has little interest in developments in the software field and is skilled only in hardware may not know which software is widely used or gaining popularity; as a result, they may find it difficult to provide users with “good computers” that meet changing demands and trends. Anyone working in computer science must understand both hardware and software to properly contribute to the advancement of computers.

 

About the author

Cam Tien

I love things that are gentle and cute. I love dogs, cats, and flowers because they make me happy. I also enjoy eating and traveling to discover new things. Besides that, I like to lie back, take in the scenery, and relax to enjoy life.