Problem solving techniques

  • Thread starter Avichal
  • Start date
  • #1
292
0
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.
 

Answers and Replies

  • #2
259
786
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.
 
  • #3
BMW
32
0
Programming is 10% about knowing the language, 20% Math and 70% problem solving (IMO).
 
  • #4
chiro
Science Advisor
4,790
132
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.
 
  • #5
292
0
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.
 
  • #6
chiro
Science Advisor
4,790
132
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.
 
  • #7
AlephZero
Science Advisor
Homework Helper
6,994
292
Won't this be helpful in other engineering branches too?
Sure. This is one version: http://en.wikipedia.org/wiki/TRIZ Google for more information, books, training courses, etc.

The "Approaches which are modifications/derivatives of TRIZ" section of the wiki page lists some others.
 
  • #8
Office_Shredder
Staff Emeritus
Science Advisor
Gold Member
4,168
326
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?
 
  • #9
292
0
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.
 

Related Threads on Problem solving techniques

  • Last Post
Replies
3
Views
1K
Replies
4
Views
4K
Replies
1
Views
2K
Replies
0
Views
1K
Replies
4
Views
803
Replies
28
Views
2K
Replies
7
Views
4K
Top