Data Structures and Algorithms

Tree Data Structures 

Binary Search Trees A basic form of tree data structures. Inserting and deleting elements in them. Different kind of binary tree traversal algorithms. 
Heaps  A tree like data structure where every element is lesser (or greater) than the one above it. Heap formation, sorting using heaps in O(n log n) time.  Height Balanced Trees  Ensuring that trees remain balanced to optimize complexity of operations which are performed on them.  
Graphs and Graph Algorithms  
Depth First Search  Traversing
through a graph using Depth First Search in which unvisited neighbors
of the current vertex are pushed into a stack and visited in that order. 
Traversing through a graph using Breadth First Search in which unvisited neighbors of the current vertex are pushed into a queue and then visited in that order. 
Minimum Spanning Trees: Kruskal Algorithm Finding the Minimum Spanning Tree using the Kruskal Algorithm which is a greedy technique. Introducing the concept of Union Find. 
Minumum Spanning Trees: Prim's Algorithm Finding the Minimum Spanning Tree using the Prim's Algorithm. 
Dijkstra Algorithm for Shortest Paths 
Floyd Warshall Algorithm for Shortest Paths All the all shortest path algorithm: Floyd Warshall Algorithm 
Bellman Ford Algorithm Another common shortest path algorithm : Bellman Ford Algorithm. 

Popular Algorithms in Dynamic Programming  
Dynamic Programming A technique used to solve optimization problems, based on identifying and solving subparts of a problem first. 
Integer Knapsack problem An elementary problem, often used to introduce the concept of dynamic programming. 
Matrix Chain Multiplication Given a long chain of matrices of various sizes, how do you parenthesize them for the purpose of multiplication  how do you chose which ones to start multiplying first? 
Longest Common Subsequence Given two strings, find the longest common sub sequence between them. 
Dynamic Programming Algorithms covered previously: Insertion Sort, Floyd Warshall Algorithm Algorithms which we already covered, which are example of dynamic programming. 

Greedy Algorithms 

Elementary cases : Fractional Knapsack Problem, Task Scheduling  Elementary problems in Greedy algorithms  Fractional Knapsack, Task Scheduling. Along with C Program source code. 
Data Compression using Huffman Trees Compression using Huffman Trees. A greedy technique for encoding information. 
Commonly Asked Programming Interview Questions  from Microsoft/Google/Facebook/Amazon interviews
A Collection of C Programs
Functional Programming Principles and Techniques
Functional Programming  A General Overview  Using the Functional Programming paradigm with a regular programming language like Ruby  
Introduction to Python

Introduction to Ruby
Introduction to Ruby and some playing around with the Interactive Ruby Shell (irb) 
Introduction to Ruby  Conditional statements and Modifiers: Ifthen, Unless, Case 
Introduction to Ruby Comments  Single and MultiLine comments  Introduction to Ruby Loops  Using While, Until, For, Break, Next , Redo, Retry 
Introduction to Ruby  Arrays  Sorting, Filtering (Select), Transforming, MultiDimensional Arrays 
Introduction to Ruby  Strings  Introduction to Ruby  Making a Script Executable  Introduction to Ruby  Regular Expressions, Match, Scan 
Introduction to Ruby  Computing Factorials Recursively : An Example of Recursion 
Introduction to Ruby  Binomial Coefficients (nCr) : An Example of Recursion  Introduction to Ruby  Computing a Power Set : An Example of Recursion  Introduction to Ruby  Towers of Hanoi : An Example of Recursion 
Introduction to Ruby  Strings: Substitution, Encoding, BuiltIn Methods 
Basic Data Structures With Ruby
Databases  A Quick Introduction To SQL  Sample Queries demonstrating common commands
Introduction to SQL A few sample queries  A Case Study  Coming up with a Schema for Tables Taking a look at how the schema for a database table is defined, how different fields require to be defined. Starting with a simple "case study" on which the following SQL tutorials will be based. 
Introduction to SQL A few sample queries : Creating Tables (CREATE) Creating tables, defining the type and size of the fields that go into it. 
Introduction to SQL  A few sample queries : Making Select Queries Elementary database queries  using the select statement, adding conditions and clauses to it to retrieve information stored in a database. 
Introduction to SQL  A few sample queries : Insert, Delete, Update, Drop, Truncate, Alter Operation Example of SQL commands which are commonly used to modify database tables. 
Introduction to SQL  A few sample queries: Important operators  Like, Distinct, Inequality, Union, Null, Join, Top 
Introduction to SQL A few sample queries: Aggregate Functions  Sum, Max, Min, Avg  Aggregate functions to extract numerical features about the data. 
Introduction To Networking
Client Server Program in Python 
A basic introduction to networking and client server programming in Python. In this, you will see the code for an expression calculator . Clients can sent expressions to a server, the server will evaluate those expressions and send the output back to the client. 
Introduction to Basic Digital Image Processing Filters
Introductory Digital Image Processing filters  Lowpass/Blurring
filters, hipass filters and their behavior, edge detection filters in
Matlab . You can take a look at how different filters transform images. Matlab scripts for these filters. 
An Introduction to Graphics and Solid Modelling
Java Applet Visualizations of Common Algorithms and Data Structures
Sorting and searching arrays.
Linear data structures : Lists, Stacks, Queues
Trees : Binary search trees, Heaps, Height balanced trees
Recursion
Dynamic Programming
Greedy Algorithms
A Collection of C Programs
Functional Programming Principles and Techniques
Functional Programming  A General Overview  Using the Functional Programming paradigm with a regular programming language like Ruby  
Databases  A Quick Introduction To SQL  Sample Queries demonstrating common commands
Introduction to SQL A few sample queries  A Case Study  Coming up with a Schema for Tables Taking a look at how the schema for a database table is defined, how different fields require to be defined. Starting with a simple "case study" on which the following SQL tutorials will be based.  Introduction to SQL A few sample queries : Creating Tables (CREATE) Creating tables, defining the type and size of the fields that go into it.  Introduction to SQL  A few sample queries : Making Select Queries Elementary database queries  using the select statement, adding conditions and clauses to it to retrieve information stored in a database.  Introduction to SQL  A few sample queries : Insert, Delete, Update, Drop, Truncate, Alter Operation Example of SQL commands which are commonly used to modify database tables. 
Introduction to SQL  A few sample queries: Important operators  Like, Distinct, Inequality, Union, Null, Join, Top  Introduction to SQL A few sample queries: Aggregate Functions  Sum, Max, Min, Avg  Aggregate functions to extract numerical features about the data. 
Areas of Mathematics which are important for Computer Science students
Probability
Basic of Linear Algebra
Introduction to Matrices  Part I Introduction to Matrices. Theory, definitions. What a Matrix is, order of a matrix, equality of matrices, different kind of matrices: row matrix, column matrix, square matrix, diagonal, identity and triangular matrices. Definitions of Trace, Minor, Cofactors, Adjoint, Inverse, Transpose of a matrix. Addition, subtraction, scalar multiplication, multiplication of matrices. Defining special types of matrices like Symmetric, Skew Symmetric, Idempotent, Involuntary, Nilpotent, Singular, NonSingular, Unitary matrices.  Introduction to Matrices  Part II Problems and solved examples based on the subtopics mentioned above. Some of the problems in this part demonstrate finding the rank, inverse or characteristic equations of matrices. Representing real life problems in matrix form.  Determinants Introduction to determinants. Second and third order determinants, minors and cofactors. Properties of determinants and how it remains altered or unaltered based on simple transformations is matrices. Expanding the determinant. Solved problems related to determinants.  Simultaneous linear equations in multiple variablesRepresenting a system of linear equations in multiple variables in matrix form. Using determinants to solve these systems of equations. Meaning of consistent, homogeneous and nonhomogeneous systems of equations. Theorems relating to consistency of systems of equations. Application of Cramer rule. Solved problems demonstrating how to solve linear equations using matrix and determinant related methods. 
Applied Mathematics : An Introduction to Game Theory
An Introduction to Game Theory  Extensive Games  Bayesian Games : Games with Incomplete Information  Repeated Games 
Applied Mathematics : An Introduction to Operations Research
Introduction to Operations Research  A quick introduction to Operations Research. Introducing Linear Programming, standard and canonical forms. Linear Programming geometry, feasible regions, feasible solutions, simplex method. Some basic problems. 