NOC:An Introduction to Programming through C++


Lecture 1 - Introduction - Part 1


Lecture 2 - Introduction - Part 2


Lecture 3 - Introduction - Part 3


Lecture 4 - Introduction - Part 4


Lecture 5 - Problem Solving using Computer - Part 1


Lecture 6 - Problem Solving using Computer - Part 2


Lecture 7 - Problem Solving using Computer - Part 3


Lecture 8 - Problem Solving using Computer - Part 4


Lecture 9 - Problem Solving using Computer - Part 5


Lecture 10 - Basic Elements of Program - Part 1


Lecture 11 - Basic Elements of Program - Part 2


Lecture 12 - Basic Elements of Program - Part 3


Lecture 13 - Basic Elements of Program - Part 4


Lecture 14 - Program Design - Part 1


Lecture 15 - Program Design - Part 2


Lecture 16 - Program Design - Part 3


Lecture 17 - Simple cpp Graphics


Lecture 18 - Conditional Execution - Part 1


Lecture 19 - Most general form of if - Part 2


Lecture 20 - More general form of conditions - Part 3


Lecture 21 - A somewhat large program example - Part 4


Lecture 22 - Switch statement and logical data - Part 5


Lecture 23 - Loops - Part 1


Lecture 24 - Mark averaging - Part 2


Lecture 25 - The break and continue statements - Part 3


Lecture 26 - The for statement - Part 4


Lecture 27 - Euclid's algorithm for GCD - Part 5


Lecture 28 - Correctness proof for GCD - Part 6


Lecture 29 - Computing Mathematical Functions - Part 1 : Taylor series


Lecture 30 - Computing Mathematical Functions - Part 2 : Numerical integration


Lecture 31 - Computing Mathematical Functions - Part 3 : Bisection Method


Lecture 32 - Computing Mathematical Functions - Part 4 : Newton Raphson Method


Lecture 33 - Loops in various applications - Part 1 : Loops in various applications brute force algorithms


Lecture 34 - Loops in various applications - Part 2 : Finding Pythagorean Triples


Lecture 35 - Loops in various applications - Part 3 : Modelling a system: bargaining


Lecture 36 - Loops in various applications - Part 4 : Simulating a water tank


Lecture 37 - Loops in various applications - Part 5 : Arithmetic on very large numbers


Lecture 38 - Functions - Part 1 : Basics


Lecture 39 - Functions - Part 2 : Examples


Lecture 40 - Functions - Part 3 : Reference parameters


Lecture 41 - Functions - Part 4 : Pointers


Lecture 42 - Functions - Part 5 : Graphics Objects and Lecture conclusion


Lecture 43 - Recursion - Part 1 : Introduction


Lecture 44 - Recursion - Part 2 : Recursive objects, Tree drawing


Lecture 45 - Recursion - Part 3 : How to think about recursion


Lecture 46 - Virahanka Numbers - Part 1 : Introduction


Lecture 47 - Virahanka Numbers - Part 2 : Recursive Program


Lecture 48 - Virahanka Numbers - Part 3 : Iterative Program and Conclusion


Lecture 49 - Program Organization and Functions - Part 1 : Introduction


Lecture 50 - Program Organization and Functions - Part 2 : Splitting into files


Lecture 51 - Program Organization and Functions - Part 3 : Namespaces


Lecture 52 - Program Organization and Functions - Part 4 : How to use C++ without simplecpp


Lecture 53 - Advanced Features of Functions - Part 1 : Introduction and passing one function to another


Lecture 54 - Advanced Features of Functions - Part 2 : Lambda expressions


Lecture 55 - Advanced Features of Functions - Part 3 : Default values to parameters


Lecture 56 - Advanced Features of Functions - Part 4 : Function overloading and lecture conclusion


Lecture 57 - Array Part-1 - Part 1 : Introduction


Lecture 58 - Array Part-1 - Part 2 : Marks averaging problem


Lecture 59 - Array Part-1 - Part 3 : Histogram computation


Lecture 60 - Array Part-1 - Part 4 : Marks display variation


Lecture 61 - Array Part-1 - Part 5 : Polynomial multiplication


Lecture 62 - Array Part-1 - Part 6 : Queues in dispatching taxis


Lecture 63 - Array Part-1 - Part 7 : More efficient Queues in dispatching taxis


Lecture 64 - Array Part-1 - Part 8 : Disk intersection


Lecture 65 - Array Part-1 - Part 9 : Arrays of graphical objects and conclusion


Lecture 66 - Array Part-2 - Part 1 : Introduction


Lecture 67 - Array Part-2 - Part 2 : Interpretation of aname[index]


Lecture 68 - Array Part-2 - Part 3 : Arrays and function calls


Lecture 69 - Array Part-2 - Part 4 : A function to sort an array


Lecture 70 - More on Arrays - Part 1 : Textual data


Lecture 71 - More on Arrays - Part 2 : Functions on character strings


Lecture 72 - More on Arrays - Part 3 : Two dimensional arrays


Lecture 73 - More on Arrays - Part 4 : Command Line Arguments


Lecture 74 - Arrays and recursion - Part 1 : Binary Search Introduction


Lecture 75 - Arrays and recursion - Part 2 : Binary search analysis


Lecture 76 - Arrays and recursion - Part 3 : Mergesort overview


Lecture 77 - Arrays and recursion - Part 4 : Merge function


Lecture 78 - Arrays and recursion - Part 5 : Mergesort conclusion


Lecture 79 - Structures - Part 1 : Definition and instantiation


Lecture 80 - Structures - Part 2 : Operations on structures


Lecture 81 - Structures - Part 3 : An example program


Lecture 82 - Structures - Part 4 : Pointers and lecture conclusion


Lecture 83 - Structures Part 2 - Part 1 : Introduction to Member functions


Lecture 84 - Structures Part 2 - Part 2 : Vectors from Physics


Lecture 85 - Structures Part 2 - Part 3 : Taxi dispatch


Lecture 86 - Classes - Part 1 : Introduction


Lecture 87 - Classes - Part 2 : Constructors


Lecture 88 - Classes - Part 3 : Operator overloading


Lecture 89 - Classes - Part 4 : Access control


Lecture 90 - Classes - Part 5 : Classes for graphics and input output


Lecture 91 - Classes - Part 6 : General remarks


Lecture 92 - Representing variable length entities - Part 1 : Introduction


Lecture 93 - Representing variable length entities - Part 2 : Heap memory basics


Lecture 94 - Representing variable length entities - Part 3 : Pitfalls of using heap memory


Lecture 95 - Representing variable length entities - Part 4 : Automating memory management


Lecture 96 - Representing variable length entities - Part 5 : Implementing a class with automated memory management - 1


Lecture 97 - Representing variable length entities - Part 6 : Implementing a class with automated memory management - 2


Lecture 98 - Representing variable length entities - Part 7 : Using the implemented class and conclusion


Lecture 99 - The Standard Library - Part 1 : Class string


Lecture 100 - The Standard Library - Part 2 : Class vector


Lecture 101 - The Standard Library - Part 3 : Sorting vectors and arrays


Lecture 102 - The Standard Library - Part 4 : Classes map and unordered_map


Lecture 103 - The Standard Library - Part 5 : Iterators


Lecture 104 - Data structure based programming - Part 1 : Introduction


Lecture 105 - Data structure based programming - Part 2 : Set and pair classes


Lecture 106 - Data structure based programming - Part 3 : Implementation of standard library data structures


Lecture 107 - Data structure based programming - Part 4 : Composing data structures


Lecture 108 - Data structure based programming - Part 5 : typedef and lecture conclusion


Lecture 109 - Medium size programs - Part 1 : The new marks display program


Lecture 110 - Medium size programs - Part 2 : Manual algorithm for new marks display


Lecture 111 - Medium size programs - Part 3 : RSMTAB and rest of the program


Lecture 112 - Medium size programs - Part 4 : Sophisticated solutions to marks display


Lecture 113 - A graphical editor and solver for circuits - Part 1 : Outline


Lecture 114 - A graphical editor and solver for circuits - Part 2 : Main program and organization


Lecture 115 - A graphical editor and solver for circuits - Part 3 : Mathematical representation of the circuit


Lecture 116 - A graphical editor and solver for circuits - Part 4 : Extensions and concluding remarks


Lecture 117 - Cosmological simulation - Part 1 : Introduction and First order Euler method


Lecture 118 - Cosmological simulation - Part 2 : Second order Euler method


Lecture 119 - Cosmological simulation - Part 3 : The program


Lecture 120 - Cosmological simulation - Part 4 : Concluding remarks