Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Problem solving techniques

  1. Sep 23, 2013 #1
    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.
  2. jcsd
  3. Sep 28, 2013 #2
    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.
  4. Oct 2, 2013 #3


    User Avatar

    Programming is 10% about knowing the language, 20% Math and 70% problem solving (IMO).
  5. Oct 3, 2013 #4


    User Avatar
    Science Advisor

    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.
  6. Oct 30, 2013 #5
    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.
  7. Oct 30, 2013 #6


    User Avatar
    Science Advisor

    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.
  8. Oct 30, 2013 #7


    User Avatar
    Science Advisor
    Homework Helper

    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.
  9. Oct 30, 2013 #8


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    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?
  10. Oct 31, 2013 #9
    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.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook