Micro Credentials


If you’re at the start of a BS degree in computer science / software engineering / data science / machine learning / artificial intelligence in any university or affiliated college in Lahore or its vicinity, this is a great opportunity to lay a solid foundation for your journey in this field.

Programming is a practical skill that can only be learned by doing – it is logic applied to problem-solving. This course will equip you with the skills and techniques and provide you with the practice you need to become a successful programmer, so that you may get the most value out of the rest of your undergraduate studies.

Think of this course as The Computer Science Equalizer – upon successful completion, you’ll be at the same level as the best 2nd year computer science students in the country.

Graduates of the course will be awarded a certificate of completion, issued by IT University and Seed Programming.

The Course will be taught by Sarfraz Raza (Teaching Fellow – at ITU and the CEO of Seed Programming).

Lecture 1: The quest of finding “THE ALGORITHM”

  • What is Computer?
  • What is Computation?
  • What is Algorithm?
  • Guessing Game – Finding the Heaviest Ball
  • Parallelism (Counting problem) & Exponential functions

Lecture 2: Introduction to C++ (Table Printing)

  • Why we need C++
  • “Hello World” program & using cout
  • String messages & math expression printing
  • Printing a table with fixed values
  • Introduction to variables and iteration (while loop)

Lecture 3: Control Structure

  • Data types (integers) and operators (+, –, /, *, %)
  • If statement, if-else, if-else-if … else
  • Divisibility (modulus operator) & compound statements (&&, ||)
  • Finding maximum out of 5 numbers – naïve vs efficient
  • Character data type, ASCII values, capitals and small letters

Lecture 4: Functions and using the power of re-usability

  • Digit-by-digit display using if/else and switch
  • Introducing functions as black boxes
  • Implementing DigitsDisplay and PrintQuadType via functions
  • Menu-based applications and distance function example
  • Principle of avoiding code repetition through re-use

Lecture 5: Divide and Conquer (Rock Paper Scissor Game & Stopwatch)

  • Making Rock Paper Scissor Game – input, validation, replay
  • Using getch() and TOUPPER for input simplification
  • Winning condition and game message display
  • Making a stopwatch utility
  • Designing game loops and control flows

Lecture 6: Designing main Flows – Age Calculator

  • Given two dates validate and calculate age in years, months & days
  • Invalid entries handling and menu-based loops
  • Multiple clocks display on console corners
  • Structuring main flow of application
  • Control and modularization via functions

Lecture 7: Loops and Functions

  • for vs while loops – printing sequences (1, 2, 3… etc.)
  • Odd & even counting; max/min from input stream ending with –1
  • Fibonacci number sequence and designing Fib(N) function
  • Function scoping rules and nested loops
  • Combining loops and functions to solve analytic tasks

Lecture 8: Loops and Functions II & Shapes Printing

  • int IntegerSquareRoot(int N); bool IsPerfectSquare(int N)
  • bool IsPrime(int N) via loop till sqrt(N)
  • void PythagorianTriplets(int Range); int Reverse(int N); int IsPalindrome(int N)
  • void PrintASymbolKTimes(int K, char Sym) & triangle patterns
  • Print hollow & equilateral triangles using nested loops and functions

Lecture 9: References, Pointers and Arrays

  • Memory and references – swap function example
  • Discussion on scanf, pointer vs array semantics
  • Arrays deeper connection with pointers: de-referencing, indexing
  • Finding minimum / maximum from array
  • Exploring pointer arithmetic, memory addresses & accessing elements

Lecture 10: Static Arrays

  • Initializing arrays during declaration with various values
  • const keyword, Init() function – multiple initialization techniques
  • 0,1,2,3… sequences; 0,1,4,9… squares; 0,2,4,6… even numbers
  • Initializing with random numbers using srand(time(0)); prime numbers
  • Searching in arrays: first/last index, frequency, distinct elements, mode

Lecture 11: Animations

  • Setting up console window: debug vs non-debug mode, buffer size
  • Printing on console using gotoRowCol(), system(“cls”) & ClearScreen()
  • Vertical fan, horizontal fan animations; scaling up/down speed via Sleep()
  • Circle drawing using polar equation & circular spiral animations
  • Introduction to structs: Position struct, arrays of Circle structs, Stone-Throwing animation

Lecture 12: Two Dimensional Arrays and its Application (Prison Break)

  • Difference between a good programmer vs average – mapping 2D arrays
  • 1D vs 2D array storage & access (array mapping functions)
  • Implementing Matrices: add, subtract, multiply, transpose
  • Using struct Matrix { char FN[100]; int R, C; int Vs[ROWS][COLS]; }
  • Application: “Prison Break” – find prisoner destiny via top-left & bottom-right corners

Lecture 13: Dynamic Memory Allocation

  • Limitations of static arrays – fixed size issues
  • Introduction to pointers and memory segments: Code, Global, Heap, Stack
  • How memory is managed using stack & heap
  • Application: making runtime arrays, growable arrays using pointers
  • Functions: Print(int* A, int Size); AllocateArray(int*& A, int Size); LoadArray(int* RTA, int Size)

Lecture 14: Dynamic Memory Allocation II

  • Making a struct SET { string name; int Size; int * Vs; }
  • void Print(SET S); void LoadArray(int*& A, int& Size, int d)
  • void LoadArrayFromFile(const char* fn, int*& A, int& Size)
  • bool Search(int* A, int Size, int T); void UnionSet(SET& U, SET S1, SET S2)
  • Dynamically allocated 2D array: struct MATRIX { int Rows, Cols, int** Vs; } and its operations

Lecture 15: Conway Game of Life

  • Implement Conway’s Game of Life: main flow loop, Init(), RepopulateWorld(), DisplayWorld()
  • char World[Rows][Cols]; initialize with symbol Sym = –37
  • “Do … while(true)” game loop & user interaction (mouse control, paint game)
  • Understanding 2D arrays, nested loops, and game logic evolution
  • Visualizing the automaton: living cells, dead cells, neighbor rules & iterations

Lecture 16A: GOMUKO – A Generalized Tic Tac Toe

  • Multiplayer Tic-Tac-Toe – further generalized
  • Memory usage of the game: char**, dynamic board, pointers
  • Step-by-step division of game’s flow using divide & conquer
  • Initialization, valid move checking & win/draw logic
  • Utility functions: DoIWinHorizontally, DoIWinVertically, DoIWinDiagonally

Lecture 16B: GOMUKO – AI Version (Human vs Computer)

  • Human vs Computer mode with AI logic
  • Extending game flow: board representation, dynamic memory, pointers
  • Game loop, move generation and evaluation
  • Memory diagrams showing heap vs stack in game state
  • File input/output (ifstream) for advanced initialization and states

Lecture 17: Nokia Snake Game – Project

  • _kbhit() and getch() usage for non-blocking console input
  • Designing Snake struct and dynamic board movement
  • Game logic: growth, collision, walls, food generation
  • Memory management: dynamic structures, pointers, and arrays
  • Modular design, code re-use and main flow of the snake game

Lecture 18: Final Project – The Game of Chess (Phase 0)

  • Discussing main flow and memory requirements
  • How to store pieces in background (as alphabets or special chars)
  • Initializing the 8×8 board grid and user input coordinates
  • Basic validation: legal destination, opponent piece, space character
  • Updating memory and turn changing

Lecture 19: Final Project – The Game of Chess (Phase 1)

  • Updating main flow with movement legality
  • Designing six utility functions: IsHorizontalMove, IsVerticalMove, etc.
  • Abstraction of piece legal moves: IsRookLegalMove, IsQueenLegalMove, etc.
  • Incorporating all in one LEGALITYCHECK function
  • Memory diagrams and pointer usage for board state

Lecture 20: Final Project – The Game of Chess (Phase 2)

  • Pawn promotion, save & exit, replay of the game
  • Undoing a move, restart without saving
  • Check, castling, checkmate, stalemate rules
  • Illegal moves handling: move resulting in check or from inside check
  • Complete system: integration, memory mapping, pointers, dynamic state