Home Introduction to CT Biography of Alan Turing Reflection Have some fun

Reflection

Before taking this module, I used to think, "modern computes are so fast, is the algorithm really needed?" Through learning of this module, I realized that the core of a computational thinking is algorithm. As a matter of fact, there will never be a computer that is fast enough since new kinds of applications are created daily. Moore's Law does tell us that the computing power of computers is getting doubled yearly with a dropping price, but at the same time the amount of information to be processed is growing exponentially (Shalf,2020). In modern digital world every user creates data (photos, videos, voice, text, etc.) on daily scale. The advanced cloud and storage mean make the amount of information of each of us increase explosively. The information flow and log capacity of the Internet are also growing rapidly. In scientific research, with the progress of research methods, the amount of data has reached an unprecedented level. Whether it is 3D graphics, massive data processing, machine learning, speech recognition, it requires a huge amount of computing. In the network era, more and more challenges need to be solved by excellent algorithms.

In addition, the performance of computer hardware is the same, the software algorithm plays a nearly decisive role in the speed of opening a software and running a software. All computer software and hardware programming require algorithms. Even though we don't use algorithms when compiling a hello world program, it is an algorithm when compiling it and running it and then displaying it on the screen. Algorithms are the core of computers and even the nature. If we know the algorithms of human brain, we can make software of artificial intelligence.

When writing a high-level language program, in order to reduce the running time, we need to consider several issues: the strategy of mathematical algorithm selection, the scale of the problem, the quality of computer code generated during program compilation, and the speed of computer executing instructions. Different compilers and computers will affect the running efficiency of programs. Therefore, program efficiency cannot be measured in absolute time units. In addition to objective factors such as computer software and hardware related to program operation, the selected algorithm has become the largest determinant of program operation workload. It is a more applicable method to reduce program running time and improve program execution efficiency by optimizing algorithms. Therefore, mathematical algorithm is the key step of programming optimization.

In order to improve the efficiency of the program, we must choose the appropriate algorithm. To evaluate the quality of an algorithm, we need to consider the time complexity and space complexity. There are many algorithms for a problem. When selecting an algorithm, the first consideration is the algorithm efficiency. Based on the algorithm efficiency, we should streamline the program, so that the algorithm can effectively combine with the program, find the maximum balance between program simplification and algorithm rationalization, find the optimal algorithm, and ensure that the algorithm in the program can meet the purpose of actual operation. This has made me obsessed in diving into the further research and work on algorithm design, for solving real world problems from a computational thinking.

References

Shalf, J. (2020). The future of computing beyond Moore's Law. Philosophical Transactions of the Royal Society A, 378.