Pre-requisite of :
Computing Fundamentals and Programming 2019
What is Computer?
What is Computation?
What is Algorithm?
Guessing Game
Introduction to Logarithm
Finding Heaviest ball problem
Sarim-Katrina Proposal story (the introduction to Cryptography)
Parallelism (Counting problem)
Introduction to Exponential functions.
Measuring Water Using Cans.
Counting Handshakes in class.
Gauss's proof of Arithmetic Series
Log_3 N: Generalization of searching the Heaviest Ball.
Calendar formation of a month using Two cubes
Logical reasoning (Given 5 white beans And 10 Black Beans And a drawing criteria which will be the last ball in the pot.
Assignment # 1 (Logical and Computational Thinking)
Introducing the Python interpreter
Creating and changing variables in debugging watch
String concatenation
Printing number table without loop
Taking input from user using input()
Converting string input to integer
Printing the table of user input number
Using while loop to print the table.
Printing right triangle using a while loop
end keyword argument
Assignment # 2 (Introducing Python)
Lab # 1 (Python Shape Printing and Conditional Statements)
Printing some more shapes.
Inverted right triangle
Mirrored right triangle
Pyramid
Hollow Pyramid
Sequence printing
if and elif statements.
Modulo operator
Finding the maximum of 3 numbers.
Assignment # 2 (Introducing Python)
Lab # 1 (Python Shape Printing and Conditional Statements)
More on conditional statements
Conditional expressions
Compound expressions using logical operators
Grade letter calculator
Finding the maximum of 5 numbers without using a 6th variable.
Finding the maximum of 5 numbers using an extra variable.
f-strings in Python
Taking multiple inputs using a while loop
Finding their maximum
Find the max and second maximums
What is the #include directive?
Printing in C++ using cout
How a C++ program is compiled to machine code.
Data streams and how the program interacts with console.
Types and variable declaration
Adding digits of a number
Integer division in C++
Program to determine if a number is prime or compound.
Defining the following quadrilaterals with their geometrical properties
Square
Rhombus
Parallelogram
Rectangle
Determining if the given vertices of a quadrilateral form any of the shapes mentioned above.
Logical operators in C++ and short-circuit expression evaluation
Finding out if a point lies inside:
The shapes mentioned above
Arbitrarily shaped quadrilaterals.
Computing the prime factors of a given number
Assignment # 3 (GCD, Fibonacci, Age Calculator)
Introduction to Functions
Prototype of Functions
Examples of Different Functions including :
Power
Prime Numbers
Types and Sizes of Data Types
Assignment # 3 (GCD, Fibonacci, Age Calculator)
Assignment # 3 (GCD, Fibonacci, Age Calculator)
How to make and print a clock till semi seconds
Use of setw, setfill and sleep functions
Age Calculator (Part 1)
Given two dates validate them as Date of Birth and Data of Death or Current Date and calculate the age in years, months and days. In case of Invalid entry ask again/Just like menu based.
Complete the age validation in case of the leap year.
Conditions on when to carry days and months
Assignment # 3 (GCD, Fibonacci, Age Calculator)
Understanding the algorithm to subtract two dates
Comparing two dates to find the most recent one
Performing date calculation validation based off of the comparison
Coding the date subtraction algorithm.
Assignment # 3 (GCD, Fibonacci, Age Calculator)
Introduction to Nested Loops
Making tables with variables of nested loops to understand its execution step by step
Printing right angle triangles and their inverted and hollow forms
Printing equilateral triangle and its hollow form
Printing Diamond and Square and their hollow forms
Printing numbers and different characters and their patterns with nested loops
Assignment # 4 (Shapes Printing in C++)
Discussing the solution of lab mid-term fan animation question
Introducing the idea of computational growth relative to input
Applying the concept of limits to show the growth of an algorithm.
Plotting different polynomials to show why constants and lower order variables don't matter in analysis.
What are bounds of a function
Finding the time complexity of loops
Assignment (Time Complexity Homework)
Further calculating and solving time complexities in Big O notation
Calculating time complexities of Arithmetic series and sequences
Understanding Big O, Big Omega and Big Theta
Understanding the concept to replace with highest order number to calculate Upper bounds
Calculating time complexities of functions and their effect on the overall program
Assignment (Time Complexity Homework)
Why finding the maximum and 2nd maximum using the previous method is not scalable to Kth largest number
Introducing the idea of arrays
How arrays are kept in computer memory (RAM)
Why does array indexing start from 0 instead of 1.
Rules for allocating arrays (constant size known at compile-time)
How low level exploits worked in the early days using arrays.
Using arrays in code.
Showing that arrays are treated as memory addresses (pointers)
Initializing arrays using loops (multiples of 5)
Generating random numbers in C++
What is the seed in random number generation and it's significance.
Using srand() to change the seed and setting it to the current UNIX time
Assignment # 5 (Basics of Array)
Random Numbers
How to generate random numbers and characters with srand() and rand()
Generating random Prime Numbers
Generating random numbers in a range
Searching values in an array
Searching by index, searching by value, searching by kth existence.
Finding maximum, 2nd maximum, minimum from an array using searching
Assignment # 5 (Basics of Array)
Adding text files to Visual Studio project
How to read data from files in C++
Adding a check to ensure file is successfully opened by the program.
Introducing the idea of references.
Comparing reference assignment with value assignment.
Using references in function parameters.
Passing ifstream object by reference.
Passing arrays into functions.
Behavior of character arrays and the fact that they are null-terminated.
Making generic helping functions to perform different set operations more elegantly.
Assignment # 6 (Sets using Functions)
Understanding and Coding different type of Coding Algorithms
Comparing the efficiency of Bubble, Insertion and Selection Sort
Sorting by even and odd indices and values
Sorting asceding and descending on alternating indices
Assignment # 7 (Arrays and Relatives)
Solving the following array problems:
Nearest Neighbor
K Nearest Neighbor
Frequency based array problems:
Compute the frequency of a given element in the array
Computing the frequency of each distinct element in the array
Segregation problems:
Even/odd values
Assignment # 7 (Arrays and Relatives)
Introduction to 2D Arrays
Memory allocation in 2D arrays.
Traversals through Nested Loops in 2D array.
Swapping and Sorting rows in a Matrix
Transpose of a Matrix
Diagnoal Traversals in a Matrix from every direction
Assignment # 7 (Arrays and Relatives)
Intro to Animations
Connection with mathematics and Physics
Basics of Graphics
Using functions gotoRowCol() and getRowColByLeftClick().
Turning laws of Physics into Algorithms
Creating different characters like StickMan for Animations
Animating dropping rocks off a cliff
Printing of a Circle
With general equation of circle
With polarised equation (using sin and cos functions)
Printing a part of circle by giving angle only
Making simultaneous circles
Printing spirals
Circular
Rectangular
How to draw a Sine Wave
Making a moving sine wave
Making a character with moving arms (Sine waves as arms)
Initialising number rectangles
Rotating number rectangles in following directions:
Clockwise
Anti Clockwise
TicTacToe - Main Flow
Memory usage of the game
Step by Step division of game's flow
Init Step and Printing
Annotating the validity of the move of the player
Discussion on the implementation of how the game will be over in Win and Draw Conditions
Winning Conditions
Diagnol Win
Horizontal and Vertical Win
Designing algorithm for Human vs Computer GOMOKU
Checks for Computer check
Horizontal and Vertical check
Diagnol check
Making matrices in Numpy
Practicing indexing in Numpy
Structs
How to make your own data type
Combining data into a single object
Concept and Importance of objects
Review of References
Address (&) Operator
Pointer Variable and Memory Map
The arithmetic of Pointers Addition/Subtraction
Connection with Arrays
Array name holds the address of the array: Or actually a constant pointer
A[offset] => *(A+offset) how the two statements are equal?
SwappingWithPointers Function
Scanf function and how it works using pointers
Understanding more about structs
Storing polynomials in the form of structs
Performing various operations on polynomials
Addition
Subtraction
Multiplication
Division
Derivative
Integration
Discussing Mainflow
Memory Requirement
Discovering the ways to store pieces in the background
(as alphabets and showing pieces in a different fashion)
Initializing the Board
Displaying the Board in the form of a grid (8x8 grid)
Taking input coordinates by the player
Basic Validation
whether the selected piece is the piece of the player
whether a destination is legal
Updating Memory
Turn Change
Updating Mainflow with Movement Legality
Designing Six Utility Functions
IsHorizontalMove
IsVerticalMove
IsDiagonalMove
IsHorizontalPathClear
IsVericalPathClear
IsDiagonalPathClear
Designing the pieces' legal Moves under the abstraction of the Six utility functions
IsRookLegalMove
IsBishopLegalMove
IsQueenLegalMove
IsKingLegalMove
IsHorseMove
IsPawnLegalMove (including its special Move)
Incorporating these legal steps into one LEGALITYCHECK function
Pawn promotion
Saving each and every move
Save and Exit
Undoing a move
Replay of the game
Check
Checkmate
Stalemate
Illegal Moves:
An illegal move is any move which results in a check or
A move within check which isn’t able to remove check is also an illegal move
Introduction to Numpy
Using Numpy Functions
np.shape()
np.flatten()
np.arrange()
Understanding Numpy Arrays as Vectors (Growable arrays)
IPython Notebook used in the lecture
Understand Least Square Errors using Numpy
Constructing Loss/Cost Function
Coding the Loss Function and learning how to reduce it
Understanding the concept of Linear Regression
IPython Notebook used in the lecture