# Introduction

Get an overview of what this course is about and see whether it fits your needs and skill level.

## We'll cover the following

## Logic building and programming

The foundation of successful programming is logic construction. This involves dividing the problem into smaller parts and determining their connections to reach a solution. This course emphasizes this skill in addition to programming itself. Once the logic is established, the output is a set of instructions, expressed as code, that a computer can follow to perform a task.

## Strengths of this course

This course offers detailed introductions for each problem, including a visual representation of how the code works, using animations, basic guidelines to solve each problem, and some real-world applications. These introductions will broaden your understanding of problem-solving techniques and equip you with the necessary skills to interpret distinguishing features of a problem that can help you identify its underlying logic.

Each lesson drills down to focus on the core of the programming problem at hand to present both the logic and multiple solutions.

To ingrain the working of different programming constructs, we have written the solutions in an incremental approach, starting with a naive approach, then a better approach, followed by the best approach. The incremental approach ensures you understand why and how one approach is better.

There's a built-in debugger for you to execute the code line by line to investigate the values of variables and understand the execution flow.

We have also included multiple interactive elements, such as animations and illustrations, to help build your understanding of the problem. In the problems where we print different shapes, we use tables to identify patterns and construct an optimized solution.

We use a bottom-up approach to develop a step-by-step understanding of the problem. Illustrated examples help you visualize the input parameters and the corresponding output. Even the quizzes are designed to test and reinforce the understanding of the concepts. We encourage you to solve the problem by yourself, while explaining the solution in detail as well. Once youâ€™ve clearly understood the problem, we provide the high-level, logical building blocks of the solution and then explain the fundamental details required to solve the problem step by step.

## Course structure

The lessons of this course can be divided into four categories:

Problem-solving lessons: These lessons are a complete walkthrough of problems that are solved step by step and explained in detail with interactivity.

Challenge-solution review: The challenge lessons are meant to be solved by you and are followed by the solution review lessons.

Hacker challenges: These are like problem-solving lessons, except they are slightly more complex. These lessons are optional, and you can skip them if you want.

Practice exercise: These lessons have exercises that are meant to be solved by you and include their solutions as well.

## Intended audience

This course is for beginner programmers who are looking to take their programming knowledge to the next level.

## Prerequisites

A good grasp of basic arithmetics is required.