# Programming with Generative AI

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

Generative AI tools are being rapidly integrated into professional software development workflows because, for well-specified problems, they often (but not always!) write accurate code. To help students use generative AI tools effectively, this course teaches programming using such tools. It develops two essential skills that are under-emphasised in traditional programming courses: critiquing code (including AI-generated code) and asking clarifying questions.

Intended audience: Primary: Undergraduate Engineering students Secondary: Computer Science faculty

Prerequisites: High-school Mathematics

## Lectures

1. [What do Programmers Do?](https://invisiblenetwork.ai/learn/nptel/106108703/4384126e2294) (YouTube)
2. [What is (and isn't) an algorithm?](https://invisiblenetwork.ai/learn/nptel/106108703/810a522458cc) (YouTube)
3. [Algorithms for prime numbers](https://invisiblenetwork.ai/learn/nptel/106108703/53660361dda2) (YouTube)
4. [Key Programming Trends](https://invisiblenetwork.ai/learn/nptel/106108703/53f9932c0aa7) (YouTube)
5. [Test Your Understanding](https://invisiblenetwork.ai/learn/nptel/106108703/de3dce169dee) (YouTube)
6. [How effective is GenAI at coding?](https://invisiblenetwork.ai/learn/nptel/106108703/a756f21575a8) (YouTube)
7. [Refuting an Algorithm](https://invisiblenetwork.ai/learn/nptel/106108703/8101e9d33eda) (YouTube)
8. [Why is GenAI so effective at coding?](https://invisiblenetwork.ai/learn/nptel/106108703/a20cbbe0c0fb) (YouTube)
9. [Assumptions in AI-generated code](https://invisiblenetwork.ai/learn/nptel/106108703/a79bc045eab3) (YouTube)
10. [Test Your Understanding](https://invisiblenetwork.ai/learn/nptel/106108703/724f757aee79) (YouTube)
11. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/27a5c17a1a70) (YouTube)
12. [Python resources](https://invisiblenetwork.ai/learn/nptel/106108703/79d226b13e3c) (YouTube)
13. [The REPL](https://invisiblenetwork.ai/learn/nptel/106108703/406e8e3d54b6) (YouTube)
14. [Basic Arithmetic Operators](https://invisiblenetwork.ai/learn/nptel/106108703/3697a66b3480) (YouTube)
15. [Test Your Understanding](https://invisiblenetwork.ai/learn/nptel/106108703/d056e18e32a9) (YouTube)
16. [Complex Expressions](https://invisiblenetwork.ai/learn/nptel/106108703/e10f5cd1f9b6) (YouTube)
17. [Limits to arithmetic computation](https://invisiblenetwork.ai/learn/nptel/106108703/7a53d128d4ba) (YouTube)
18. [Investigation sys.float_info](https://invisiblenetwork.ai/learn/nptel/106108703/edb008ea8a63) (YouTube)
19. [Binary digits (bits)](https://invisiblenetwork.ai/learn/nptel/106108703/a548a73f7a1d) (YouTube)
20. [Naming Things](https://invisiblenetwork.ai/learn/nptel/106108703/480f7a13153b) (YouTube)
21. [Introducing "our friend"](https://invisiblenetwork.ai/learn/nptel/106108703/2b89ff9252c6) (YouTube)
22. [Test Our Friend's Understanding](https://invisiblenetwork.ai/learn/nptel/106108703/87a4f1c7eed7) (YouTube)
23. [Limits to float computation](https://invisiblenetwork.ai/learn/nptel/106108703/9a80e5f94011) (YouTube)
24. [Python Objects](https://invisiblenetwork.ai/learn/nptel/106108703/fb4e3788f83f) (YouTube)
25. [Textual data](https://invisiblenetwork.ai/learn/nptel/106108703/92b094739151) (YouTube)
26. [Strings](https://invisiblenetwork.ai/learn/nptel/106108703/7fa325ba838f) (YouTube)
27. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/c541ad9edaea) (YouTube)
28. [Evaluating a complex expression](https://invisiblenetwork.ai/learn/nptel/106108703/eae2fc9d84ce) (YouTube)
29. [Assignment statements in Python](https://invisiblenetwork.ai/learn/nptel/106108703/6625cdbedfa0) (YouTube)
30. [Assignment statements and a common misconception](https://invisiblenetwork.ai/learn/nptel/106108703/94b2d7d99675) (YouTube)
31. [Clarifying the misconception](https://invisiblenetwork.ai/learn/nptel/106108703/d0b8f2192488) (YouTube)
32. [Another misconception with assignments](https://invisiblenetwork.ai/learn/nptel/106108703/ca81c249abec) (YouTube)
33. [A final misconception with assignments](https://invisiblenetwork.ai/learn/nptel/106108703/447d39bd36e1) (YouTube)
34. [Introduction to PythonTutor](https://invisiblenetwork.ai/learn/nptel/106108703/cc991a24d3ba) (YouTube)
35. [Swapping two variables (incorrect)](https://invisiblenetwork.ai/learn/nptel/106108703/4e309f66c465) (YouTube)
36. [Swapping two variables (correct)](https://invisiblenetwork.ai/learn/nptel/106108703/7bc2838ddfa4) (YouTube)
37. [Good, Poor, and Illegal Variable names](https://invisiblenetwork.ai/learn/nptel/106108703/8990e73e0295) (YouTube)
38. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/aa0f7307a4de) (YouTube)
39. [Representing complex programs abstractly as functions](https://invisiblenetwork.ai/learn/nptel/106108703/5ab319b8ab29) (YouTube)
40. [Properties of mathematical functions](https://invisiblenetwork.ai/learn/nptel/106108703/75dcd20f7b66) (YouTube)
41. [Other built-in functions](https://invisiblenetwork.ai/learn/nptel/106108703/19d8a41e7cc9) (YouTube)
42. [The input function](https://invisiblenetwork.ai/learn/nptel/106108703/7f7f134a5ccb) (YouTube)
43. [Celcius to Fahrenheit (buggy)](https://invisiblenetwork.ai/learn/nptel/106108703/d802a10c09e0) (YouTube)
44. [Reviewing our friend's critique of buggy code](https://invisiblenetwork.ai/learn/nptel/106108703/1f57998919e0) (YouTube)
45. [Debugging the code](https://invisiblenetwork.ai/learn/nptel/106108703/1c0a04e8ec06) (YouTube)
46. [Nested function calls](https://invisiblenetwork.ai/learn/nptel/106108703/92bceb6bfdb6) (YouTube)
47. [AI-generated program 1](https://invisiblenetwork.ai/learn/nptel/106108703/817a5b9479d7) (YouTube)
48. [AI-generated program 1](https://invisiblenetwork.ai/learn/nptel/106108703/927b5e3bd6f6) (YouTube)
49. [Another example: Patient Data (buggy)](https://invisiblenetwork.ai/learn/nptel/106108703/cbf7da6d5104) (YouTube)
50. [Using ChatGPT to debug](https://invisiblenetwork.ai/learn/nptel/106108703/eea41a531853) (YouTube)
51. [Fixing ChatGPT assumptions](https://invisiblenetwork.ai/learn/nptel/106108703/dcaeae5421ea) (YouTube)
52. [Using GitHub Copilot to debug](https://invisiblenetwork.ai/learn/nptel/106108703/7bd6642d8110) (YouTube)
53. [Further model assumptions](https://invisiblenetwork.ai/learn/nptel/106108703/d85ef114c152) (YouTube)
54. [Fixing GitHub Copilot assumptions](https://invisiblenetwork.ai/learn/nptel/106108703/ff9eb0871fa1) (YouTube)
55. [ChatGPT vs GitHub Copilot](https://invisiblenetwork.ai/learn/nptel/106108703/1b78286bf2ad) (YouTube)
56. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/86cca2935dc6) (YouTube)
57. [Poorly designed and well designed functions](https://invisiblenetwork.ai/learn/nptel/106108703/8ff20cb6426e) (YouTube)
58. [Principles of good function design](https://invisiblenetwork.ai/learn/nptel/106108703/0eaa85a0ef35) (YouTube)
59. [Improvement 1](https://invisiblenetwork.ai/learn/nptel/106108703/62980c6bcc15) (YouTube)
60. [Improvement 2](https://invisiblenetwork.ai/learn/nptel/106108703/8b2140027715) (YouTube)
61. [Example of a poorly designed function](https://invisiblenetwork.ai/learn/nptel/106108703/5c15baf2cee6) (YouTube)
62. [Improvement 2 continued](https://invisiblenetwork.ai/learn/nptel/106108703/b6935873fdae) (YouTube)
63. [Improvement 3](https://invisiblenetwork.ai/learn/nptel/106108703/e81d1547a7bd) (YouTube)
64. [Simple conditional statements](https://invisiblenetwork.ai/learn/nptel/106108703/f29fab529568) (YouTube)
65. [Critiquing AI-generated code](https://invisiblenetwork.ai/learn/nptel/106108703/d448298e7d8a) (YouTube)
66. [Complex conditional statements](https://invisiblenetwork.ai/learn/nptel/106108703/9bf62bf6394b) (YouTube)
67. [Introduction to Refute problems](https://invisiblenetwork.ai/learn/nptel/106108703/909d5ae4b08d) (YouTube)
68. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/d00f261badd2) (YouTube)
69. [Example 1 (is_multiple)](https://invisiblenetwork.ai/learn/nptel/106108703/56d67398ad4b) (YouTube)
70. [Visualizing Example 1](https://invisiblenetwork.ai/learn/nptel/106108703/8daffe1dacff) (YouTube)
71. [Visualizing a function call](https://invisiblenetwork.ai/learn/nptel/106108703/88230a73bfcb) (YouTube)
72. [The error in Example 1](https://invisiblenetwork.ai/learn/nptel/106108703/172897a9e7ea) (YouTube)
73. [Fixing the code](https://invisiblenetwork.ai/learn/nptel/106108703/7d48aeb0a831) (YouTube)
74. [Key Observations](https://invisiblenetwork.ai/learn/nptel/106108703/516e946e88f3) (YouTube)
75. [Example 2 (modified is_multiple)](https://invisiblenetwork.ai/learn/nptel/106108703/0abd735fd939) (YouTube)
76. [Fixing the error, Simplification 1](https://invisiblenetwork.ai/learn/nptel/106108703/fe58b316f627) (YouTube)
77. [Elements of a Refute Problem](https://invisiblenetwork.ai/learn/nptel/106108703/d5e2f907cc17) (YouTube)
78. [Refuting the median function](https://invisiblenetwork.ai/learn/nptel/106108703/e2682fb36c90) (YouTube)
79. [Simplification 2](https://invisiblenetwork.ai/learn/nptel/106108703/166d3b10e211) (YouTube)
80. [Feedback for Refute Problems](https://invisiblenetwork.ai/learn/nptel/106108703/99388e9227ca) (YouTube)
81. [Attempting to refute](https://invisiblenetwork.ai/learn/nptel/106108703/ba3d2fb22a2a) (YouTube)
82. [Refuting the num_days function](https://invisiblenetwork.ai/learn/nptel/106108703/d5e0fa4a30ba) (YouTube)
83. [Critique our friend's function](https://invisiblenetwork.ai/learn/nptel/106108703/b8dc6e925709) (YouTube)
84. [Boolean/logical operators](https://invisiblenetwork.ai/learn/nptel/106108703/e037615f5659) (YouTube)
85. [Simplification 3](https://invisiblenetwork.ai/learn/nptel/106108703/b2ec89b4793a) (YouTube)
86. [Identifying an unexpected behaviour](https://invisiblenetwork.ai/learn/nptel/106108703/5b9cc649d207) (YouTube)
87. [Understanding and fixing the error](https://invisiblenetwork.ai/learn/nptel/106108703/86a5b9ff32ed) (YouTube)
88. [Short-circuiting](https://invisiblenetwork.ai/learn/nptel/106108703/2e4ddfdebe4b) (YouTube)
89. [Inequivalence due to short-circuiting](https://invisiblenetwork.ai/learn/nptel/106108703/ad7730963cd2) (YouTube)
90. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/3dbd48884883) (YouTube)
91. [Solving a problem with a helper function](https://invisiblenetwork.ai/learn/nptel/106108703/ac4ab1d1283e) (YouTube)
92. [Calling a helper function](https://invisiblenetwork.ai/learn/nptel/106108703/a07a0942471a) (YouTube)
93. [Tracing a call to the helper function](https://invisiblenetwork.ai/learn/nptel/106108703/94e953a92e7a) (YouTube)
94. [Definition of a leap year](https://invisiblenetwork.ai/learn/nptel/106108703/3067d15ef8f5) (YouTube)
95. [Refuting our friend's code](https://invisiblenetwork.ai/learn/nptel/106108703/0db46c62170c) (YouTube)
96. [Introduction to recursion](https://invisiblenetwork.ai/learn/nptel/106108703/4cdaa5e81699) (YouTube)
97. [Infinite recursion](https://invisiblenetwork.ai/learn/nptel/106108703/975ce81912c5) (YouTube)
98. [A correct recursive function](https://invisiblenetwork.ai/learn/nptel/106108703/ff737637d0e4) (YouTube)
99. [Using the default visualization](https://invisiblenetwork.ai/learn/nptel/106108703/47f8168d7e9e) (YouTube)
100. [A non-recursive solution](https://invisiblenetwork.ai/learn/nptel/106108703/c70e79afc513) (YouTube)
101. [Refuting the buggy code](https://invisiblenetwork.ai/learn/nptel/106108703/6cf2bbdae769) (YouTube)
102. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/ed575e6c57e3) (YouTube)
103. ["Ask the Client" problems](https://invisiblenetwork.ai/learn/nptel/106108703/8dd56f5e3185) (YouTube)
104. [Clarifying the task](https://invisiblenetwork.ai/learn/nptel/106108703/6d565d0ae01b) (YouTube)
105. [Our friend's recursive function](https://invisiblenetwork.ai/learn/nptel/106108703/ca3e88ed0a56) (YouTube)
106. [Tracing our friend's code](https://invisiblenetwork.ai/learn/nptel/106108703/5c2fcefa91a4) (YouTube)
107. [Refuting our friend's code](https://invisiblenetwork.ai/learn/nptel/106108703/fa0d0220d07d) (YouTube)
108. [Clarifying questions: num_vowels](https://invisiblenetwork.ai/learn/nptel/106108703/b5a243a91c13) (YouTube)
109. [Strings in Python](https://invisiblenetwork.ai/learn/nptel/106108703/b6644bd23c9e) (YouTube)
110. [Testing our understanding](https://invisiblenetwork.ai/learn/nptel/106108703/56b40dc9b94e) (YouTube)
111. [Testing out understanding further](https://invisiblenetwork.ai/learn/nptel/106108703/1c4e35e968a3) (YouTube)
112. [String operations and methods](https://invisiblenetwork.ai/learn/nptel/106108703/067d02315774) (YouTube)
113. [Testing your understanding](https://invisiblenetwork.ai/learn/nptel/106108703/271aa1d31b5d) (YouTube)
114. [Our friend's code: num_vowels](https://invisiblenetwork.ai/learn/nptel/106108703/fc7d53fc7801) (YouTube)
115. [Refuting our friend's code](https://invisiblenetwork.ai/learn/nptel/106108703/72972481554b) (YouTube)
116. [Immutable objects](https://invisiblenetwork.ai/learn/nptel/106108703/191f89c11083) (YouTube)
117. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/9e4b7e3854ba) (YouTube)
118. [Modifying existing code](https://invisiblenetwork.ai/learn/nptel/106108703/d0f0b6044a0a) (YouTube)
119. [Poor code readability](https://invisiblenetwork.ai/learn/nptel/106108703/5acae85546ec) (YouTube)
120. [Improving code readability](https://invisiblenetwork.ai/learn/nptel/106108703/59dc52005d68) (YouTube)
121. [Asking clarifying questions](https://invisiblenetwork.ai/learn/nptel/106108703/f06071d03f4d) (YouTube)
122. [Clarifying the code's expected behaviour](https://invisiblenetwork.ai/learn/nptel/106108703/7fad819f54f1) (YouTube)
123. [Lists are mutable](https://invisiblenetwork.ai/learn/nptel/106108703/ba8f6b6f1112) (YouTube)
124. [Step 1: Suggested modification](https://invisiblenetwork.ai/learn/nptel/106108703/240216901713) (YouTube)
125. [Exceptions](https://invisiblenetwork.ai/learn/nptel/106108703/8e3157e6d7e2) (YouTube)
126. [Tuples](https://invisiblenetwork.ai/learn/nptel/106108703/2d1903701a9b) (YouTube)
127. [Sequence unpacking](https://invisiblenetwork.ai/learn/nptel/106108703/5f5cd4f57e90) (YouTube)
128. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/4515644d625e) (YouTube)
129. [A mystery (recursive) function](https://invisiblenetwork.ai/learn/nptel/106108703/bac07a1c90ae) (YouTube)
130. [Visualizing the mystery function](https://invisiblenetwork.ai/learn/nptel/106108703/e2be90f667a3) (YouTube)
131. [A better (iterative) solution](https://invisiblenetwork.ai/learn/nptel/106108703/f5c345938806) (YouTube)
132. [Visualizing a for-loop](https://invisiblenetwork.ai/learn/nptel/106108703/35b498b0324c) (YouTube)
133. [Pattern 1: Iterate until "success"](https://invisiblenetwork.ai/learn/nptel/106108703/53e7cf451658) (YouTube)
134. [Examples of Pattern 1](https://invisiblenetwork.ai/learn/nptel/106108703/bc2a7d6186bd) (YouTube)
135. [An error in AI-generated code](https://invisiblenetwork.ai/learn/nptel/106108703/d52d6dff02b6) (YouTube)
136. [A buggy function using Pattern 1](https://invisiblenetwork.ai/learn/nptel/106108703/13d9a7e6e96a) (YouTube)
137. [Refuting the buggy function](https://invisiblenetwork.ai/learn/nptel/106108703/30c9a7d04dcc) (YouTube)
138. [Pattern 2: Accumulate](https://invisiblenetwork.ai/learn/nptel/106108703/e54dbb3e906c) (YouTube)
139. [The is_prime function](https://invisiblenetwork.ai/learn/nptel/106108703/a6e54a5b7328) (YouTube)
140. [Visualizing prime_product](https://invisiblenetwork.ai/learn/nptel/106108703/a4df163e306e) (YouTube)
141. [Another version of prime_product](https://invisiblenetwork.ai/learn/nptel/106108703/b4fd46029f77) (YouTube)
142. [Visualizing the new version](https://invisiblenetwork.ai/learn/nptel/106108703/66da1219a260) (YouTube)
143. [An example of Pattern 2](https://invisiblenetwork.ai/learn/nptel/106108703/57bea0298280) (YouTube)
144. [Another example of Pattern 2](https://invisiblenetwork.ai/learn/nptel/106108703/d4ca69706cd5) (YouTube)
145. [Visualizing appending to a list](https://invisiblenetwork.ai/learn/nptel/106108703/98bbc6f6a732) (YouTube)
146. [Our friend's suggestion](https://invisiblenetwork.ai/learn/nptel/106108703/bca6436d25ca) (YouTube)
147. [List comprehension](https://invisiblenetwork.ai/learn/nptel/106108703/3e7f00a1ede0) (YouTube)
148. [A buggy function using Pattern 2](https://invisiblenetwork.ai/learn/nptel/106108703/ca6fbaf69d3f) (YouTube)
149. [Refuting the buggy function](https://invisiblenetwork.ai/learn/nptel/106108703/af4bfa7228a5) (YouTube)
150. [An interesting takeaway](https://invisiblenetwork.ai/learn/nptel/106108703/bc75c162e950) (YouTube)
151. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/bb66047807f5) (YouTube)
152. [A recursive mystery function](https://invisiblenetwork.ai/learn/nptel/106108703/f291a41d50e2) (YouTube)
153. [Iterative version](https://invisiblenetwork.ai/learn/nptel/106108703/762bd6a3fa02) (YouTube)
154. [Replacing while with for: Example 1](https://invisiblenetwork.ai/learn/nptel/106108703/503fb48b5f5f) (YouTube)
155. [Replacing while with for: Example 2](https://invisiblenetwork.ai/learn/nptel/106108703/62e109edc284) (YouTube)
156. [Searching in a sorted list](https://invisiblenetwork.ai/learn/nptel/106108703/3b554e0c983e) (YouTube)
157. [Implementing binary search](https://invisiblenetwork.ai/learn/nptel/106108703/440fa7fd196c) (YouTube)
158. [The num_unique function](https://invisiblenetwork.ai/learn/nptel/106108703/3d4e1f5fe119) (YouTube)
159. [Incorrect implementations of num_unique](https://invisiblenetwork.ai/learn/nptel/106108703/f5bda2b2fe6f) (YouTube)
160. [A correct implementation of num_unique](https://invisiblenetwork.ai/learn/nptel/106108703/115cf26771b7) (YouTube)
161. [Visualizing num_unique](https://invisiblenetwork.ai/learn/nptel/106108703/f244d8ed31e5) (YouTube)
162. [An important case (nobreak with no iterations)](https://invisiblenetwork.ai/learn/nptel/106108703/feccb5dabbe6) (YouTube)
163. [Pattern 3: All pairs](https://invisiblenetwork.ai/learn/nptel/106108703/1728ff550129) (YouTube)
164. [Example (Pattern 3): max_profit](https://invisiblenetwork.ai/learn/nptel/106108703/63e2dd0d8976) (YouTube)
165. [Refuting the buggy function](https://invisiblenetwork.ai/learn/nptel/106108703/37c7a12e681a) (YouTube)
166. [Representing tabular data](https://invisiblenetwork.ai/learn/nptel/106108703/fc120a1c4f08) (YouTube)
167. [Basic dict operations](https://invisiblenetwork.ai/learn/nptel/106108703/e0da0dcd124b) (YouTube)
168. [Example: substring_count](https://invisiblenetwork.ai/learn/nptel/106108703/dc82eeda0e7c) (YouTube)
169. [Clarifying the task](https://invisiblenetwork.ai/learn/nptel/106108703/246813811d85) (YouTube)
170. [Reviewing ChatGPT's solution](https://invisiblenetwork.ai/learn/nptel/106108703/2c2529b47dec) (YouTube)
171. [Test Driven Development](https://invisiblenetwork.ai/learn/nptel/106108703/e7c89e5988d5) (YouTube)
172. [Writing doctests for is_prime](https://invisiblenetwork.ai/learn/nptel/106108703/93bbc05e2216) (YouTube)
173. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/c7f7d90be6c2) (YouTube)
174. [Clarifying the task: count_between](https://invisiblenetwork.ai/learn/nptel/106108703/5e4c345802d2) (YouTube)
175. [Understanding the interpretation of "between"](https://invisiblenetwork.ai/learn/nptel/106108703/de343f0a0554) (YouTube)
176. [Are ChatGPT suggestions "good"?](https://invisiblenetwork.ai/learn/nptel/106108703/0f98e3403fad) (YouTube)
177. [Generating the code after clarifying (using ChatGPT)](https://invisiblenetwork.ai/learn/nptel/106108703/a48fa5ecceda) (YouTube)
178. [Additional ChatGPT inputs](https://invisiblenetwork.ai/learn/nptel/106108703/5487a6ae4e44) (YouTube)
179. [Revised code after additional clarifications](https://invisiblenetwork.ai/learn/nptel/106108703/5ec089ea7969) (YouTube)
180. [Learning a new programming language](https://invisiblenetwork.ai/learn/nptel/106108703/8186ee2a3c8e) (YouTube)
181. [Python vs C: Similarities and differences](https://invisiblenetwork.ai/learn/nptel/106108703/3ba4e23fa77f) (YouTube)
182. [Python: Example 1](https://invisiblenetwork.ai/learn/nptel/106108703/57a711e65816) (YouTube)
183. [Translating Example 1 to C](https://invisiblenetwork.ai/learn/nptel/106108703/cfec1da9135f) (YouTube)
184. [Key syntactic differences: Python vs C](https://invisiblenetwork.ai/learn/nptel/106108703/d11da0381a3d) (YouTube)
185. [Visualizing Python and C code](https://invisiblenetwork.ai/learn/nptel/106108703/0ee2c276b809) (YouTube)
186. [C programming style](https://invisiblenetwork.ai/learn/nptel/106108703/26acad6056be) (YouTube)
187. [Python: Example 2](https://invisiblenetwork.ai/learn/nptel/106108703/40627ec48443) (YouTube)
188. [Example 2, Attempt 2](https://invisiblenetwork.ai/learn/nptel/106108703/7630340ab29b) (YouTube)
189. [Semantics of integer division](https://invisiblenetwork.ai/learn/nptel/106108703/538567440bca) (YouTube)
190. [Example 2, Attempt 3](https://invisiblenetwork.ai/learn/nptel/106108703/3c2a7d3c015a) (YouTube)
191. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/f6263916c206) (YouTube)
192. [Example 1 (is_upper)](https://invisiblenetwork.ai/learn/nptel/106108703/b5816ee722a3) (YouTube)
193. [Visualizing the incorrect is_upper function](https://invisiblenetwork.ai/learn/nptel/106108703/e955fcf1de28) (YouTube)
194. [Correcting the error](https://invisiblenetwork.ai/learn/nptel/106108703/6a1eea48c1c8) (YouTube)
195. [Basics of strings in C](https://invisiblenetwork.ai/learn/nptel/106108703/c07bd4750862) (YouTube)
196. [Strings in C (char \[\])](https://invisiblenetwork.ai/learn/nptel/106108703/ab5c10569861) (YouTube)
197. [Strings in C (char *)](https://invisiblenetwork.ai/learn/nptel/106108703/3d14abd42995) (YouTube)
198. [Mutable and immutable strings](https://invisiblenetwork.ai/learn/nptel/106108703/9cc712736fa5) (YouTube)
199. [Example 2 (to_ind_lower)](https://invisiblenetwork.ai/learn/nptel/106108703/41fb9ca7f51b) (YouTube)
200. [Visualizing the modified to_ind_lower function](https://invisiblenetwork.ai/learn/nptel/106108703/6f3121745bb8) (YouTube)
201. [Our friend's translation](https://invisiblenetwork.ai/learn/nptel/106108703/8f899bd0a7bb) (YouTube)
202. [Visualizing our friend's translation](https://invisiblenetwork.ai/learn/nptel/106108703/bf09bbeb8fce) (YouTube)
203. [Preventing accidental mutation](https://invisiblenetwork.ai/learn/nptel/106108703/c6d473162c86) (YouTube)
204. [Copying a string (Attempt 1)](https://invisiblenetwork.ai/learn/nptel/106108703/c4ec26d0935c) (YouTube)
205. [Copying a string (Attempt 2)](https://invisiblenetwork.ai/learn/nptel/106108703/aa6cf4fababc) (YouTube)
206. [Fixing one error, revealing another](https://invisiblenetwork.ai/learn/nptel/106108703/5e8c12729a65) (YouTube)
207. [Allocating memory on the heap](https://invisiblenetwork.ai/learn/nptel/106108703/cbdf25240f25) (YouTube)
208. [Visualizing the revised version (with malloc)](https://invisiblenetwork.ai/learn/nptel/106108703/604bf0fbd908) (YouTube)
209. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/94942de293cc) (YouTube)
210. [Algorithm-centric improvements (to_ind_lower)](https://invisiblenetwork.ai/learn/nptel/106108703/4dbf56321065) (YouTube)
211. [Data-centric improvements (to_ind_lower)](https://invisiblenetwork.ai/learn/nptel/106108703/ffd00ff73171) (YouTube)
212. [Processing textual data: C or Python](https://invisiblenetwork.ai/learn/nptel/106108703/9c5888cc8c17) (YouTube)
213. [Understanding (simplified) Python lists](https://invisiblenetwork.ai/learn/nptel/106108703/f2caabc8b99e) (YouTube)
214. [A simple implementation of Python lists (Part 1)](https://invisiblenetwork.ai/learn/nptel/106108703/c1c464a9d1c1) (YouTube)
215. [A simple implementation of Python lists (Part 2)](https://invisiblenetwork.ai/learn/nptel/106108703/c2ae96e6ecbc) (YouTube)
216. [A simple implementation of Python lists (Part 3)](https://invisiblenetwork.ai/learn/nptel/106108703/d39a30efa212) (YouTube)
217. [A simple implementation of Python lists (Part 4)](https://invisiblenetwork.ai/learn/nptel/106108703/46f4e07371a3) (YouTube)
218. [Testing the list implementation](https://invisiblenetwork.ai/learn/nptel/106108703/825775f8b9c6) (YouTube)
219. [Summary](https://invisiblenetwork.ai/learn/nptel/106108703/34b20e502d9a) (YouTube)
