# Problem solving techniques

• Avichal
In summary, algorithms are a problem solving technique used in a variety of fields, computer science being one of them. These techniques are formalised and can be applied to a variety of problems. This is one of the reasons why a computer science course teaches these techniques.

#### Avichal

In algorithms, we learn various problem-solving techniques namely Dynamic Programming, Greedy Algorithms, Divide and Conquer and more.

Why am I studying this is a computer science course? I think these are general problem solving techniques, not just related to computer science, right?

Basically in all the problems, we try to solve the simpler problems and then combine to find the unknown. This is the basic idea behind all the techniques.

Yes, they are general problem solving techniques, but you will need them later to implement them with https://en.wikipedia.org/wiki/Abstract_data_type

In other words you will make a mathematical model to implement those problem solving techniques usually with the aim of being more efficient (be it in calculations, memory, space, complexity of the code, etc).

I once took a course in which the book was all about abstract mathematics (it was the most hard course for me till now) and we learned about number theory and similar concepts which now makes it easier to write efficient programs. And its worthy after all.

The thing is that those problem solving techniques, when translated into a programming language, usually output really good and efficient programs.

Programming is 10% about knowing the language, 20% Math and 70% problem solving (IMO).

The point is taking abstract approaches and templates and combining them in a way suited for a generic form of problem that you may face in your later work/research.

chiro said:
The point is taking abstract approaches and templates and combining them in a way suited for a generic form of problem that you may face in your later work/research.
But why is this done only in computer science course? Won't this be helpful in other engineering branches too?
For e.g.:- There must be abstract approaches done while solving physics problems but no one formalizes them.

You have to understand that the nature of engineering is different to applied science.

You don't want to take risks when building bridges, sky-scrapers, or aeroplanes. If you have something and it works then you don't want to get too creative and mess around with it.

If you want to do creative stuff in engineering, you will need a lot of support people to make sure that what you are doing is absolutely safe, but for a lot of applications, the solution is already known and it has most likely standed the test of time for a while (years or decades).

As for computer science, one premise of writing good code is writing minimal code.

To write minimal code we use templates and abstract approaches to help meet that goal. Writing a template once is a lot shorter than writing a version for each data type.

Writing shorter code makes it easier to read, easier to debug, easier to understand, and easier to use and for these reasons and more, we study things like templates, data structures, algorithms and abstract structures in computer science.

Avichal said:
Won't this be helpful in other engineering branches too?

The "Approaches which are modifications/derivatives of TRIZ" section of the wiki page lists some others.

Avichal, computer science (or at least a large part of it) is the study of algorithms and how they perform and how to improve them. What do you think you should be learning in a computer science course?

Office_Shredder said:
Avichal, computer science (or at least a large part of it) is the study of algorithms and how they perform and how to improve them. What do you think you should be learning in a computer science course?

Algorithms is about solving computational problems. We have formalised several problem solving techniques like Divide and Conquer, Dynamic Programming etc.
These problem solving templates are great for solving computational problem but what I am asking is that why such a course is only taught in a Computer Science course?

Let's take for example Mechanical engineering. Now there are several problems in this domain. Is there a corresponding course to algorithms that teaches abstract techniques and templates in this domain?

Hope I make sense.

## 1. What are some common problem solving techniques?

Some common problem solving techniques include brainstorming, trial and error, root cause analysis, and the scientific method.

## 2. How can I improve my problem solving skills?

One way to improve problem solving skills is to practice regularly. You can also try to approach problems from different perspectives and seek feedback from others.

## 3. What is the most effective problem solving technique?

The most effective problem solving technique varies depending on the type of problem. Some may find brainstorming to be the most effective, while others may prefer using a systematic approach like the scientific method.

## 4. How do I know which problem solving technique to use?

The best way to determine which problem solving technique to use is to analyze the problem and consider your resources, time constraints, and the desired outcome. Different techniques may be more suitable for different situations.

## 5. Can problem solving techniques be applied to everyday life?

Absolutely! Problem solving techniques can be applied to any situation where a problem needs to be solved. Whether it's at work, in relationships, or in personal life, having effective problem solving skills can help you overcome challenges and reach your goals.