Skip to main content

Applied Problem Solving

Introduction

Learning how to program can be very intimidating, overwhelming, and challenging however it doesn’t have to be! Learning how to program usually starts with a selection of a specific programming language such as C, C++, Java, Python, etc., then using that language, you would immediately embark on learning foundational concepts that implement desired logic so a program can be developed to solve a problem.

This approach to learning programming is very common however, most if not all the focus is spent on the syntax of the language and other language-specific nuances. Consequently, a critical part of the programming process is often completely ignored which is how to develop the logic and algorithms needed to solve a problem.

Introducing language syntax at the same time as foundational logic can foster weak logic skills as the emphasis is placed on the implementation of the programming language and not the logic. Often, the logic being implemented in examples is provided to you with no explanation on why or how that logic was determined.

Programming languages are merely a tool to be used to solve problems (where computers are used for the solution). Like any tool, you need to know more than just how the tool works and its parts – you need to know how to apply the tool and adapt to solve any problem. To be successful in problem solving requires a deep understanding of both the problem and how to use and apply the tool(s).

Problem solving applying the computational thinking model (more on that in the next section) removes the technical concerns of a specific language’s syntax (we refer to this as being language agnostic) and exclusively focuses on the development of effective and efficient algorithms. These algorithms are used by programmers as a plan or framework to quickly code a computer program solution in any programming language desired.

tip

Programmers all too often immediately jump into coding (programming with a specific language) and don't spend the time to pre-plan how to design the solution. This approach takes longer and usually introduces more semantic (logic) errors.

Having a prepared plan (algorithm) to work from significantly decreases coding development time and increases the quality of the solution.

Downloadable PDF Version

If maintaining an internet connection is an issue or you simply like reading material from a PDF file, you may download these notes in a PDF format HERE.

CITATION

The PDF file was created using the pdf-prince plugin and Prince 14 which is available here: http://www.princexml.com/

NOTE

These notes can be modified at any time and your version of the downloaded content could be at risk of not being current. It is therefore advised you download the notes periodically to ensure you have the latest version.