# An Introduction to Programming Through C++

- Institution: IIT Bombay
- Department: Computer Science and Engineering
- Teacher: Prof. Abhiram Ranade
- Level: Undergraduate
- Language: English
- Subjects: Computer science, Engineering
- Source: [NPTEL](https://nptel.ac.in/courses/106101208)
- Licence: [CC BY-NC-SA](https://nptel.ac.in/faq) (Non-commercial use only.)
- Syllabus: [at the source](https://nptel.ac.in/courses/106101208)
- Who can watch: Tweens profiles and older (sources give no ratings; placed by Invisible Network from the source's own words)

## Lectures

1. [Lecture 1 Part 1: Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/f5dda6e0f1bd) (Video)
2. [Lecture 1 Part 2 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/87b02937c8bb) (Video)
3. [Lecture 1 Part 3 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/2b9409b230e9) (Video)
4. [Lecture 1 Part 4 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/cac7fed5fa76) (Video)
5. [Lecture 2 Part 1 : Problem Solving using Computer](https://invisiblenetwork.ai/learn/nptel/106101208/0cc0d6dc3a67) (Video)
6. [Lecture 2 Part 2 : Problem Solving using Computer](https://invisiblenetwork.ai/learn/nptel/106101208/9023d213d5ce) (Video)
7. [Lecture 2 Part 3 : Problem Solving using Computer](https://invisiblenetwork.ai/learn/nptel/106101208/93103efbd611) (Video)
8. [Lecture 2 Part 4 : Problem Solving using Computer](https://invisiblenetwork.ai/learn/nptel/106101208/4847dece2ea3) (Video)
9. [Lecture 2 Part 5 : Problem Solving using Computer](https://invisiblenetwork.ai/learn/nptel/106101208/16c29d175877) (Video)
10. [Lecture 3 Part 1 : Basic Elements of Program](https://invisiblenetwork.ai/learn/nptel/106101208/c28dbd542ed0) (Video)
11. [Lecture 3 Part 2 : Basic Elements of Program](https://invisiblenetwork.ai/learn/nptel/106101208/222e6b0142f1) (Video)
12. [Lecture 3 Part 3 : Basic Elements of Program](https://invisiblenetwork.ai/learn/nptel/106101208/9eb9bcecfc66) (Video)
13. [Lecture 3 Part 4 : Basic Elements of Program](https://invisiblenetwork.ai/learn/nptel/106101208/58d8dc96d62a) (Video)
14. [Lecture 4 Part 1 : Program Design](https://invisiblenetwork.ai/learn/nptel/106101208/e6f5537abcb1) (Video)
15. [Lecture 4 Part 2 : Program Design](https://invisiblenetwork.ai/learn/nptel/106101208/55e12201cc37) (Video)
16. [Lecture 4 Part 3 : Program Design](https://invisiblenetwork.ai/learn/nptel/106101208/89fcc3d80703) (Video)
17. [Lecture 5 : Simple cpp Graphics](https://invisiblenetwork.ai/learn/nptel/106101208/803e8fc6b645) (Video)
18. [Lecture 6 Part 1 : Conditional Execution](https://invisiblenetwork.ai/learn/nptel/106101208/749a97070aad) (Video)
19. [Lecture 6 Part 2 : Most general form of if](https://invisiblenetwork.ai/learn/nptel/106101208/6d71030d3505) (Video)
20. [Lecture 6 Part 3 : More general form of conditions](https://invisiblenetwork.ai/learn/nptel/106101208/c9f4911d3283) (Video)
21. [Lecture 6 Part 4 : A somewhat large program example](https://invisiblenetwork.ai/learn/nptel/106101208/eb14b54de657) (Video)
22. [Lecture 6 Part 5 : Switch statement and logical data](https://invisiblenetwork.ai/learn/nptel/106101208/151218d709e5) (Video)
23. [Lecture 7 Part 1 : Loops](https://invisiblenetwork.ai/learn/nptel/106101208/26a8377233cb) (Video)
24. [Lecture 7 Part 2 : Mark averaging](https://invisiblenetwork.ai/learn/nptel/106101208/09df114147be) (Video)
25. [Lecture 7 Part 3 : The break and continue statements](https://invisiblenetwork.ai/learn/nptel/106101208/6d6a7f91faf4) (Video)
26. [Lecture 7 Part 4 : The for statement](https://invisiblenetwork.ai/learn/nptel/106101208/a6dcab36cc45) (Video)
27. [Lecture 7 Part 5 : Euclid's algorithm for GCD](https://invisiblenetwork.ai/learn/nptel/106101208/3b0a2e45f264) (Video)
28. [Lecture 7 Part 6 : Correctness proof for GCD](https://invisiblenetwork.ai/learn/nptel/106101208/f3f14dab4464) (Video)
29. [Lecture 8 : Computing Mathematical Functions Part 1 : Taylor series](https://invisiblenetwork.ai/learn/nptel/106101208/2631c69cd729) (Video)
30. [Lecture 8 : Computing Mathematical Functions Part 2 : Numerical integration](https://invisiblenetwork.ai/learn/nptel/106101208/7bce3b936236) (Video)
31. [Lecture 8 : Computing Mathematical Functions Part 3 : Bisection Method](https://invisiblenetwork.ai/learn/nptel/106101208/4ed053d06422) (Video)
32. [Lecture 8 : Computing Mathematical Functions Part 4 : Newton Raphson Method](https://invisiblenetwork.ai/learn/nptel/106101208/6c80edbb6d8f) (Video)
33. [Lecture 9 : Loops in various applications Part 1 : Loops in various applications brute force algorithms](https://invisiblenetwork.ai/learn/nptel/106101208/0b17646657de) (Video)
34. [Lecture 9 : Loops in various applications Part 2 : Finding Pythagorean Triples](https://invisiblenetwork.ai/learn/nptel/106101208/331aa5bfc698) (Video)
35. [Lecture 9 : Loops in various applications Part 3 : Modelling a system: bargaining](https://invisiblenetwork.ai/learn/nptel/106101208/b529a4fe1386) (Video)
36. [Lecture 9 : Loops in various applications Part 4 : Simulating a water tank](https://invisiblenetwork.ai/learn/nptel/106101208/e45cbd6910bf) (Video)
37. [Lecture 9 : Loops in various applications Part 5 : Arithmetic on very large numbers](https://invisiblenetwork.ai/learn/nptel/106101208/6c3e2f4bdef9) (Video)
38. [Lecture 10 : Functions Part 1 : Basics](https://invisiblenetwork.ai/learn/nptel/106101208/17c74eac620c) (Video)
39. [Lecture 10 : Functions Part 2 : Examples](https://invisiblenetwork.ai/learn/nptel/106101208/04e9d0968b62) (Video)
40. [Lecture 10 : Functions Part 3 : Reference parameters](https://invisiblenetwork.ai/learn/nptel/106101208/f02aefe6de2a) (Video)
41. [Lecture 10 : Functions Part 4 : Pointers](https://invisiblenetwork.ai/learn/nptel/106101208/915abecb99d2) (Video)
42. [Lecture 10 : Functions Part 5 : Graphics Objects and Lecture conclusion](https://invisiblenetwork.ai/learn/nptel/106101208/d8fb6411093d) (Video)
43. [Lecture 11 : Recursion Part 1 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/d87e6a2e3b3a) (Video)
44. [Lecture 11 : Recursion Part 2 : Recursive objects, Tree drawing](https://invisiblenetwork.ai/learn/nptel/106101208/a30711f2c53f) (Video)
45. [Lecture 11 : Recursion Part 3 : How to think about recursion](https://invisiblenetwork.ai/learn/nptel/106101208/53b5ad2a6f96) (Video)
46. [Lecture 12 : Virahanka Numbers Part 1 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/a0c9d2f4228d) (Video)
47. [Lecture 12 : Virahanka Numbers Part 2 : Recursive Program](https://invisiblenetwork.ai/learn/nptel/106101208/65f727104005) (Video)
48. [Lecture 12 : Virahanka Numbers Part 3 : Iterative Program and Conclusion](https://invisiblenetwork.ai/learn/nptel/106101208/a7917395594f) (Video)
49. [Lecture 13 : Program Organization and Functions Part 1 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/6478d2ad4c8b) (Video)
50. [Lecture 13 : Program Organization and Functions Part 2 : Splitting into files](https://invisiblenetwork.ai/learn/nptel/106101208/8412b1b077ce) (Video)
51. [Lecture 13 : Program Organization and Functions Part 3 : Namespaces](https://invisiblenetwork.ai/learn/nptel/106101208/d588fc454bc5) (Video)
52. [Lecture 13 : Program Organization and Functions Part 4 : How to use C++ without simplecpp](https://invisiblenetwork.ai/learn/nptel/106101208/25c34f62a7eb) (Video)
53. [Lecture 14 : Advanced Features of Functions Part 1 : Introduction and passing one function to another](https://invisiblenetwork.ai/learn/nptel/106101208/0af881ad67e3) (Video)
54. [Lecture 14 : Advanced Features of Functions Part 2 : Lambda expressions](https://invisiblenetwork.ai/learn/nptel/106101208/04351405e494) (Video)
55. [Lecture 14 : Advanced Features of Functions Part 3 : Default values to parameters](https://invisiblenetwork.ai/learn/nptel/106101208/df08c2dabbe2) (Video)
56. [Lecture 14 : Advanced Features of Functions Part 4 : Function overloading and lecture conclusion](https://invisiblenetwork.ai/learn/nptel/106101208/b77a9193d0b6) (Video)
57. [Lecture 15 : Array Part-1 : Part 1 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/a933c5cf4f5e) (Video)
58. [Lecture 15 : Array Part-1 : Part 2 : Marks averaging problem](https://invisiblenetwork.ai/learn/nptel/106101208/e19de60580c8) (Video)
59. [Lecture 15 : Array Part-1 : Part 3 : Histogram computation](https://invisiblenetwork.ai/learn/nptel/106101208/c437c92f5f2a) (Video)
60. [Lecture 15 : Array Part-1 : Part 4 : Marks display variation](https://invisiblenetwork.ai/learn/nptel/106101208/20fe790c3ebf) (Video)
61. [Lecture 15 : Array Part-1 : Part 5 : Polynomial multiplication](https://invisiblenetwork.ai/learn/nptel/106101208/4fa28d9cb814) (Video)
62. [Lecture 15 : Array Part-1 : Part 6 : Queues in dispatching taxis](https://invisiblenetwork.ai/learn/nptel/106101208/64653a081870) (Video)
63. [Lecture 15 : Array Part-1 : Part 7 : More efficient Queues in dispatching taxis](https://invisiblenetwork.ai/learn/nptel/106101208/2fc7e15e6652) (Video)
64. [Lecture 15 : Array Part-1 : Part 8 : Disk intersection](https://invisiblenetwork.ai/learn/nptel/106101208/9ef3e48eb4b8) (Video)
65. [Lecture 15 : Array Part-1 : Part 9 : Arrays of graphical objects and conclusion](https://invisiblenetwork.ai/learn/nptel/106101208/b09133f31fcf) (Video)
66. [Lecture 16 : Array Part-2 : Part 1 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/978672bb457f) (Video)
67. [Lecture 16 : Array Part-2 : Part 2 : Interpretation of aname\[index\]](https://invisiblenetwork.ai/learn/nptel/106101208/415cf3960656) (Video)
68. [Lecture 16 : Array Part-2 : Part 3 : Arrays and function calls](https://invisiblenetwork.ai/learn/nptel/106101208/356686ac5b8c) (Video)
69. [Lecture 16 : Array Part-2 : Part 4 : A function to sort an array](https://invisiblenetwork.ai/learn/nptel/106101208/7f3317a9cba8) (Video)
70. [Lecture 17 : More on Arrays : Part 1 : Textual data](https://invisiblenetwork.ai/learn/nptel/106101208/24d9b0b258bf) (Video)
71. [Lecture 17 : More on Arrays : Part 2 : Functions on character strings](https://invisiblenetwork.ai/learn/nptel/106101208/1f2dd8153807) (Video)
72. [Lecture 17 : More on Arrays : Part 3 : Two dimensional arrays](https://invisiblenetwork.ai/learn/nptel/106101208/106f5af872e5) (Video)
73. [Lecture 17 : More on Arrays : Part 4 : Command Line Arguments](https://invisiblenetwork.ai/learn/nptel/106101208/5840722944ff) (Video)
74. [Lecture 18 : Arrays and recursion : Part 1 : Binary Search Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/aa7eb5a932ad) (Video)
75. [Lecture 18 : Arrays and recursion : Part 2 : Binary search analysis](https://invisiblenetwork.ai/learn/nptel/106101208/ef41f2461281) (Video)
76. [Lecture 18 : Arrays and recursion : Part 3 : Mergesort overview](https://invisiblenetwork.ai/learn/nptel/106101208/64c2025d69b6) (Video)
77. [Lecture 18 : Arrays and recursion : Part 4 : Merge function](https://invisiblenetwork.ai/learn/nptel/106101208/cfc4ba636ec9) (Video)
78. [Lecture 18 : Arrays and recursion : Part 5 : Mergesort conclusion](https://invisiblenetwork.ai/learn/nptel/106101208/0649308ab99a) (Video)
79. [Lecture 19 : Structures : Part 1 : Definition and instantiation](https://invisiblenetwork.ai/learn/nptel/106101208/82b856067579) (Video)
80. [Lecture 19 : Structures : Part 2 : Operations on structures](https://invisiblenetwork.ai/learn/nptel/106101208/59ebf93c0e64) (Video)
81. [Lecture 19 : Structures : Part 3 : An example program](https://invisiblenetwork.ai/learn/nptel/106101208/3e6c9fc34419) (Video)
82. [Lecture 19 : Structures : Part 4 : Pointers and lecture conclusion](https://invisiblenetwork.ai/learn/nptel/106101208/bbc1d169be12) (Video)
83. [Lecture 20 : Structures Part 2 : Part 1 : Introduction to Member functions](https://invisiblenetwork.ai/learn/nptel/106101208/c348a78b439e) (Video)
84. [Lecture 20 : Structures Part 2 : Part 2 : Vectors from Physics](https://invisiblenetwork.ai/learn/nptel/106101208/90c95b636965) (Video)
85. [Lecture 20 : Structures Part 2 : Part 3 : Taxi dispatch](https://invisiblenetwork.ai/learn/nptel/106101208/2a94ee36d72c) (Video)
86. [Lecture 21 : Classes : Part 1 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/100f279bdce7) (Video)
87. [Lecture 21 : Classes : Part 2 : Constructors](https://invisiblenetwork.ai/learn/nptel/106101208/3e3df82b03ff) (Video)
88. [Lecture 21 : Classes : Part 3 : Operator overloading](https://invisiblenetwork.ai/learn/nptel/106101208/5d7e6e238f51) (Video)
89. [Lecture 21 : Classes : Part 4 : Access control](https://invisiblenetwork.ai/learn/nptel/106101208/db4d9c0a505e) (Video)
90. [Lecture 21 : Classes : Part 5 : Classes for graphics and input output](https://invisiblenetwork.ai/learn/nptel/106101208/e70c88f449d5) (Video)
91. [Lecture 21 : Classes : Part 6 : General remarks](https://invisiblenetwork.ai/learn/nptel/106101208/bf03377af227) (Video)
92. [Lecture 22 : Representing variable length entities: Part 1 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/779f9e26f7ba) (Video)
93. [Lecture 22 : Representing variable length entities: Part 2 : Heap memory basics](https://invisiblenetwork.ai/learn/nptel/106101208/1a11584f2df9) (Video)
94. [Lecture 22 : Representing variable length entities: Part 3 : Pitfalls of using heap memory](https://invisiblenetwork.ai/learn/nptel/106101208/35cb8982b8f6) (Video)
95. [Lecture 22 : Representing variable length entities: Part 4 : Automating memory management](https://invisiblenetwork.ai/learn/nptel/106101208/242842403d1b) (Video)
96. [Lecture 22 : Representing variable length entities: Part 5 : Implementing a class with automated memory management 1](https://invisiblenetwork.ai/learn/nptel/106101208/17452a556618) (Video)
97. [Lecture 22 : Representing variable length entities: Part 6 : Implementing a class with automated memory management 2](https://invisiblenetwork.ai/learn/nptel/106101208/720b7e5c082f) (Video)
98. [Lecture 22 : Representing variable length entities: Part 7 : Using the implemented class and conclusion](https://invisiblenetwork.ai/learn/nptel/106101208/aa19cb5d9f61) (Video)
99. [Lecture 23 : The Standard Library: Part 1 : Class string](https://invisiblenetwork.ai/learn/nptel/106101208/9c75050245f6) (Video)
100. [Lecture 23 : The Standard Library: Part 2 : Class vector](https://invisiblenetwork.ai/learn/nptel/106101208/a2fed2eec1a3) (Video)
101. [Lecture 23 : The Standard Library: Part 3 : Classes map and unordered_map](https://invisiblenetwork.ai/learn/nptel/106101208/c28a7d6fe3a6) (Video)
102. [Lecture 23 : The Standard Library: Part 4 : Iterators](https://invisiblenetwork.ai/learn/nptel/106101208/166787bb4105) (Video)
103. [Lecture 23 : The Standard Library: Part 5 : Iterators](https://invisiblenetwork.ai/learn/nptel/106101208/c523c33abc49) (Video)
104. [Lecture 24 : Data structure based programming : Part 1 : Introduction](https://invisiblenetwork.ai/learn/nptel/106101208/ed2d0d6554e4) (Video)
105. [Lecture 24 : Data structure based programming : Part 2 : Set and pair classes](https://invisiblenetwork.ai/learn/nptel/106101208/84c05d2ce9ab) (Video)
106. [Lecture 24 : Data structure based programming : Part 3 : Implementation of standard library data structures](https://invisiblenetwork.ai/learn/nptel/106101208/d3d2705ddf1d) (Video)
107. [Lecture 24 : Data structure based programming : Part 4 : Composing data structures](https://invisiblenetwork.ai/learn/nptel/106101208/0ff4fd050d7e) (Video)
108. [Lecture 24 : Data structure based programming : Part 5 : typedef and lecture conclusion](https://invisiblenetwork.ai/learn/nptel/106101208/aa5e19ae5498) (Video)
109. [Lecture 25 : Medium size programs : Part 1 : The new marks display program](https://invisiblenetwork.ai/learn/nptel/106101208/492d3ce553d3) (Video)
110. [Lecture 25 : Medium size programs : Part 2 : Manual algorithm for new marks display](https://invisiblenetwork.ai/learn/nptel/106101208/34501f01f334) (Video)
111. [Lecture 25 : Medium size programs : Part 3 : RSMTAB and rest of the program](https://invisiblenetwork.ai/learn/nptel/106101208/e55a75bdd002) (Video)
112. [Lecture 25 : Medium size programs : Part 4 : Sophisticated solutions to marks display](https://invisiblenetwork.ai/learn/nptel/106101208/0727fb424fc8) (Video)
113. [Lecture 26 : A graphical editor and solver for circuits : Part 1 : Outline](https://invisiblenetwork.ai/learn/nptel/106101208/a94f220b0b8f) (Video)
114. [Lecture 26 : A graphical editor and solver for circuits : Part 2 : Main program and organization](https://invisiblenetwork.ai/learn/nptel/106101208/ead751539198) (Video)
115. [Lecture 26 : A graphical editor and solver for circuits : Part 3 : Mathematical representation of the circuit](https://invisiblenetwork.ai/learn/nptel/106101208/111fb865a852) (Video)
116. [Lecture 26 : A graphical editor and solver for circuits Part 4 : Extensions and concluding remarks](https://invisiblenetwork.ai/learn/nptel/106101208/4c5a50ce1c5f) (Video)
117. [Lecture 27 : Cosmological simulation : Part 1 : Introduction and First order Euler method](https://invisiblenetwork.ai/learn/nptel/106101208/d4ff4c9f41a2) (Video)
118. [Lecture 27 : Cosmological simulation : Part 2 : Second order Euler method](https://invisiblenetwork.ai/learn/nptel/106101208/ec43590990e1) (Video)
119. [Lecture 27 : Cosmological simulation : Part 3 : The program](https://invisiblenetwork.ai/learn/nptel/106101208/cb1bf84ecf8e) (Video)
120. [Lecture 27 : Cosmological simulation : Part 4 : Concluding remarks](https://invisiblenetwork.ai/learn/nptel/106101208/02fc849e10b6) (Video)
121. [Live Session 19-04-2021](https://invisiblenetwork.ai/learn/nptel/106101208/f5dda6e0f1bd-2) (Video)
122. [Live Session 12-03-2020](https://invisiblenetwork.ai/learn/nptel/106101208/87b02937c8bb-2) (Video)
123. [Live Session 06-09-2019](https://invisiblenetwork.ai/learn/nptel/106101208/2b9409b230e9-2) (Video)
124. [Live Session 22-10-2019](https://invisiblenetwork.ai/learn/nptel/106101208/cac7fed5fa76-2) (Video)
125. [Live Session 21-03-2022](https://invisiblenetwork.ai/learn/nptel/106101208/0cc0d6dc3a67-2) (Video)
126. [Live Session 04-07-2022](https://invisiblenetwork.ai/learn/nptel/106101208/9023d213d5ce-2) (Video)
