Programming

On a high level, Programming is simply writing instructions to a computer on how to compute or process data and give the desired output, in a programming language.

Also, the input and output can be nothing.

Either way, a program written involves changing the state of a system. A computer is a state machine and all it does is flip 0s and 1s. These details are abstracted from us as computer science has evolved.

Fundamental parts of programming are Data structure and Algorithms

Data structure and Algorithms

  • Data structure is simply the way we arrange data, nothing complicated about it… but the patterns can be different and hard.

  • Algorithm is just a set of steps like, do something, do something if a condition is met and do something multiple times. Again, the concept is simple but the actual solutions can be difficult.

Let’s consider a scenario. You are asked to multiply two numbers 123 x 111 manually, Here you’re given input and you take a piece of paper and write down the numbers.

  1. We write down the numbers

Some write the numbers horizontally like,

123 x 111

and some write it down vertically,

123 x 
111
  1. We perform the process of multiplying them.

The common pattern most of us has learned is as follows,

  123 x 
  111
_____
  123
 1230
12300
_____
13653

So, we just performed an instructed task. let’s take a closer look at what we just did.

  1. We arranged the data (2 numbers)

We can relate this to Data Structures, we arrange the data we received as input in some sort of way such that, we can read them and perform the required operation.

  1. We performed a multiplication

We can relate this to executing an algorithm, we learned a set of steps that would work for multiplying on large numbers.

When we write programs, we organize everything into input, operations and results. Then break down the data structure involved in the operation, also the algorithm that would always give us desired result.

Making the computer do this as fast as possible when there is a very large amount of data is the common goal of a good Software Engineer.

Nowadays, A lot of programs are already written… And the engineers are mostly involved in assembling available programs together to make something.