Computer science and the art of problem-solving
Computer science is the study of problems, problem-solving, and the solutions that come out of the problem-solving process. Given a problem, a computer scientist’s goal is to develop an algorithm, a step-by-step list of instructions for solving any instance of the problem that might arise. Algorithms are finite processes that if followed will solve the problem. Algorithms are solutions.
Solving problems is the core of computer science. Programmers must first understand how a human solves a problem, then understand how to translate this “algorithm” into something a computer can do, and finally how to “write” the specific syntax (required by a computer) to get the job done. It is sometimes the case that a machine will solve a problem in a completely different way than a human.
Computer Programmers are problem solvers. In order to solve a problem on a computer, you must:
- Know how to represent the information (data) describing the problem.
- Determine the steps to transform the information from one representation into another.
Computer science can be thought of as the study of algorithms. However, we must be careful to include the fact that some problems may not have a solution. Although proving this statement is beyond the scope of this text, the fact that some problems cannot be solved is important for those who study computer science. We can fully define computer science, then, by including both types of problems and stating that computer science is the study of solutions to problems as well as the study of problems with no solutions.
It is also very common to include the word computable when describing problems and solutions. We say that a problem is computable if an algorithm exists for solving it. An alternative definition for computer science, then, is to say that computer science is the study of problems that are and that are not computable, the study of the existence and the non-existence of algorithms. In any case, you will note that the word “computer” did not come up at all. Solutions are considered independent of the machine.
Computer science, as it pertains to the problem-solving process itself, is also the study of abstraction. Abstraction allows us to view the problem and solution in such a way as to separate the so-called logical and physical perspectives.
Steps involved in problem-solving
- Analysing the problem
- Developing the algorithm
- Testing and debugging
Before we are ready to solve a problem, we must look over the question and understand it. By analysing it, we can figure out the outputs and inputs to be carried out. If we are not ready with what we have to solve, then we end up with the question and cannot find the answer as expected.
It is required to decide a solution before writing a program. The representation of solution in a natural language, called an algorithm. We must design, develop and decide the final approach after a number of trials and errors. Developing an algorithm captures and refines all the aspects of the desired solution.
Once we finalize the algorithm, we must convert the decided algorithm into a code. The code can be written in dedicated programming languages. So, that is understandable by the computer to find a desired solution. In this stage, a wide variety of programming language are used to convert the algorithm into code.
Designed and developed program undergoes several rigorous tests based on various real-time parameters. Industries and many companies follow some testing methods like system testing, component testing and acceptance testing. It must meet the user’s requirements, which have to respond with the required time and generate all expected outputs.
Problem solving flow
[ Right mindset ] --> [ Making right decisions ] --> [ Keeping ideas on track ] --> [ Learning from feedbacks ] --> [ Asking questions ]
The way to approach problems is the key to improving the skills. To find a solution, a positive mindset helps to solve problems quickly. When we need to solve a problem, we must be clear with a solution. The perfect solution helps to get success in a shorter period. Ideas always help much in improving the skills. They also help to gain more knowledge and more command over things. A crucial part of learning is from the feedback. Mistakes help you gain more knowledge and have much growth. Questions are an incredible part of life. While searching for solutions, there are a lot of questions that arise in our minds.
Computer Programming is a step-by-step process of designing and developing various sets of computer programs to accomplish a specific computing outcome. The process comprises several tasks like analysis, coding, algorithm generation, checking accuracy and resource consumption of algorithms, etc. The purpose of computer programming is to find a sequence of instructions that solve a specific problem on a computer.
English is the most popular and well-known Human Language. The English language has its own set of grammar rules, which has to be followed to write in the English language correctly. Likewise, any other Human Languages (German, Spanish, Russian, etc.) are made of several elements like nouns, adjective, adverbs, propositions, and conjunctions, etc. So, just like English, Spanish or other human languages, programming languages are also made of different elements.
Just like human languages, programming languages also follow grammar called syntax. There are certain basic program code elements which are common for all the programming languages.
Computer programming is a set of written instructions that the computer follows. These instructions can be written in various languages. Each programming languages have their unique ways of organizing the commands, which are called syntax.
Multiple programming languages can help you solve the same programming problem. However, you need to select a language that you feel is relevant to perform your task. If you decide that a language does not suit your business requirement, you can always move on to a new language. Your skill in the chosen language will also be a deciding factor. Expected software system response time, a number of simultaneous users, security, maintains, compatibility with web, mobile, devices are few other factors to consider while choosing a language.