If you want to get a job in any software company, and you are ready to learn anything, then try the following items.
All about Algorithms
Algorithms forever
Note: At least 50% of the software engineers may not even heard of these algorithms.

First start with Linear data structures and algorithms.

  • Arrays
  • Linked List
  • Stack
  • Queues

Then move to basic algorithms :

  • Sorting - Merge Sort, Insertion Sort, Quick Sort, Number of inversions
  • Matrix Multiplication (just know the algorithm, if not implement it)
  • Prime Sieving
  • Modular Math including multiplication and division
  • Euclidean Algorithm for GCD, Modular Inverse, Fast Exponentiation
  • Fibonacci number with matrix multiplication
  • Probability distribution and expected value
  • Stats - Mean, Median, Variance, Bayes theorem

Then one can learn some popular algorithmic techniques:

  • Divide and Conquer - Binary Search, Maximum Subarray
  • Greedy Algorithms - Activity Selection, Huffman encoding
  • Dynamic Programming - Matrix Chain Multiplication, Knapsack,
  • Linear Programming - Variable Maximisation, Linear time sorting
  • String Algorithms - Manacher, LCS, Edit Distance

Then comes some typical non-linear data structures:


  • Trees - Binary Tree, General Tree, Lowest Common Ancestor
  • Binary Search Tree - In order Traversal, Level order traversal, finding kth largest element, diameter, depth, number of nodes, etc.
  • Heaps - Array Implementation, Heapify, Heap Sort
  • Union Find
  • Hash Table - Linear Probing, Open addressing, Collision avoidance


Then you can learn about Graphs:


  • Adjacency List, Adjacency Matrix, Weighted Edge Graphs
  • Basic Traversal algos - Breadth First Search, Depth First Search, etc
  • Shortest Path Finding Algorithm - Dijkstra, Floyd Warshal, Bellman Ford
  • Minimum Spanning Tree - Kruskal's Algorithm, Prim's Algorithm

By this time you are already pretty good with programming. You will do better than most of undergrad CS students. If you want to learn more and delve deep read more.

Advance Tree and Graph :

  • Balanced Trees - AVL, Red-Black
  • Heavy Light Decomposition, B+ Trees, Quad Tree
  • Advance Graph - Min Cut, Max Flow
  • Maximum Matching - Hall's Marriage
  • Hamiltonian Cycle
  • Edge Graphs / Line Graphs
  • Strongly Connected Components
  • Dominant Sub-Graph, Vertex Cover, Travelling Salesman - Approx algorithms

Advance String Algorithms :

  • Knuth Morris Pratt Algorithm
  • Rabin Karp Algorithm
  • Tries and Compressed Tries
  • Prefix Trees, Suffix Trees, Suffix Automation - Ukkonen Algorithm

Advance Math:

  • Fast Fourier Transformation
  • Primality Testing
  • Computational Geometry - Closest point pair, Voronoi diagram, Convex Hull.

General Advance topics :

  • Iterating through all combination / permutation
  • Bit manipulation
Well, once you know all of these, you are ready to think like an algorithm designer, welcome to the world of Algorithms :D
Well, last year I thought it was the block chain technology which is going to dominate in future but soon I realized that it is the Machine Learning and it's sub branch deep learning.

Why Machine Learning Now

Why it is so important?

Have you heard about the Google's Self driving cars, it's the future. It's not just car, trucks, or any vehicle which will pickup something from source and deliver at the destination without any manual intervention. Humans can track or monitor it. Uber, Lyft they all will be in loss, once the self driving cars are out.

How those are working, In simple terms Machine Learning, how to drive. It identifies the signals, it identifies the crossing paths, animals, humans, and most importantly the difference.

Is there anything else which is live?

Yes all the smart speakers (Siri, Cortana, Alexa, Google assistant), all of them uses the Machine learning. It learns the routine.

Have you ever used YouTube Autoplay?
Have you ever wondered why YouTube/Netflix/Amazon recommends a video?
Have you ever seen a book or a thing you may buy in next week or month or so, is recommended to you?
Your loan application result also determined by the same concept.

Not only these and many more in our life is now uses this technology. It's never late to learn a technology. Better late than never. Welcome to the world of Machine Learning. Let's continue with python programming basics. 
Usually every programmer will start with "Hello World!", but for a change lets start with numbers. I personally believe that numbers play vital role than alphabets.

Numbers
For someone who worked on other programming languages, it will be surprise and shock, since python doesn't have a concept called Variable Declaration.

For new beginners, Variable declaration is a technical way of saying the data type for a variable. Let's go with an example.

In Python 2.x,
In Python 3.x,
If you look at both the examples, there is a very minor change. Let's not worry about it now. If you see the variable 'x', we didn't define what kind of value it is going to hold.

We assigned the value of x to 1, we are printing it, and we are also printing the (data) type of x. In the last line we are printing both the type and value of x. The output will be like this:

Output of Numbers
If you look at the output, python understood that the variable 'x' is of type 'int', even though we didn't declare the variable with the data type 'int'. There is no semicolon at the end of the lines (some language tend to have that semicolon at the end of each line).

Another observation from 2.x and 3.x is the open and close brackets. Python 3 has more explicit way of passing the variables, where as Python 2 doesn't have this. This is one among the different between 2 and 3. Here after all my codes will be Python 3, as I mentioned earlier in the post.
Open your python terminal. If you didn't install Python, check my old posts. In order to open python, press Windows Key and type "Python" and hit Enter.

Launching Python 3.7 Terminal
It will open Python Terminal. This is just to make sure that you have Python Installed on your computer, we will see other programs with Microsoft Visual Studio.

Once the Python terminal is opened (it will look similar to the command prompt with black and white screen). Three greater than symbol (>>>) will be shown. You can try some in built commands like help(), copyright() and other commands.

Once you type any of those commands, it will take you to that particular topic. Let's say I want to read what print command does, so First I type help(), and then print.
Python Terminal - Help
In order to get out of the help menu, need to press Ctrl + C. That will take back you to the original menu (with >>>).

We have something else called IDLE (Python). IDLE is an python's default IDE with lot of options rather than plain command prompt.

Python 3.7.2 IDLE

We can create files, open existing files, save it, save as, print, debug and much more. You can play around with it, let me know your feedback in the comments.
Well, I don't think you need any extra prerequisite other than understanding simple English and a computer with you (preferably with internet connection) to access the source codes and you can move from there.

Python Pre-requisite for Machine Learning
When I started Learning, I started with python, but I realized its so boring since I already know other languages and it doesn't need any challenges in creating the Python scripts. I also got into the puzzle of Python 2 vs Python 3. I started with Python 2 (yes old golden days, where we don't have conflict to choose version), I left it in half and I continued Python 3 in later 2018 for fixing a not working script written in python.

I finally ported those codes to C#, and created "exe" for running on Windows Machines. I don't want to create an environment with every customer to have python installed. But there is a way, where you can convert your Python codes to Windows executable. There are couple of options, Py2exe and PyInstall . Both of them are easy to do, but I personally don't recommend creating executable from python, well that's my personal preference.

Am planning to cover some of python programs in order to complete our machine learning with more clarity. You don't need to know much but at least this. Most of the scripts I have taken and modified it from Stanford University Lectures for CS228 and CS231n.