# Introduction to programming in C

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

This is a course in programming in C. No prior programming experience is assumed; however, mathematical maturity at the level of a second year science or engineering undergraduate is assumed.

We emphasize solving problems using the language, and introduce standard programming techniques like alternation, iteration and recursion. We will briefly glimpse the basics of software engineering practices like modularization, commenting, and naming conventions which help in collaborating and programming in teams.

Given a problem, we pay attention to the following questions:

What is an algorithmic solution to the problem?

How do we translate the algorithm into C code?

How efficient is the code?

How maintainable is the code?

It is expected that by the end of the course, students will be comfortable in :-

Attempting algorithmic solutions to problems

Designing and coding moderate sized programs running to the order of a few hundred lines of code, and

Reading, understanding and modifying code written by others.

INTENDED AUDIENCE : Any interested learners.

PREREQUISITES : No prior programming required; mathematical maturity of a second level UG student in science or engineering.

## Lectures

1. [Introduction - The Process of Programming](https://invisiblenetwork.ai/learn/nptel/106104128/10c2ac2382aa) (YouTube)
2. [GCD Algorithm](https://invisiblenetwork.ai/learn/nptel/106104128/3946752f3e9f) (YouTube)
3. [The Programming Cycle](https://invisiblenetwork.ai/learn/nptel/106104128/2f8bb47fee01) (YouTube)
4. [Tracing a simple program](https://invisiblenetwork.ai/learn/nptel/106104128/ae51fe760c7a) (YouTube)
5. [Variables](https://invisiblenetwork.ai/learn/nptel/106104128/bc400d3f050f) (YouTube)
6. [Operators](https://invisiblenetwork.ai/learn/nptel/106104128/32f4aea72d5a) (YouTube)
7. [While Loops - I](https://invisiblenetwork.ai/learn/nptel/106104128/8720e629802d) (YouTube)
8. [While Loop Example](https://invisiblenetwork.ai/learn/nptel/106104128/004733245e23) (YouTube)
9. [While Loop Example - GCD](https://invisiblenetwork.ai/learn/nptel/106104128/246e84eb6fc6) (YouTube)
10. [Longest Increasing Subsequence - I](https://invisiblenetwork.ai/learn/nptel/106104128/5ac489f04534) (YouTube)
11. [Longest Increasing Subsequence - 2](https://invisiblenetwork.ai/learn/nptel/106104128/7a2e434a53ca) (YouTube)
12. [Longest Increasing Subsequence - 3](https://invisiblenetwork.ai/learn/nptel/106104128/d452a8772370) (YouTube)
13. [Do-while Loop](https://invisiblenetwork.ai/learn/nptel/106104128/a2a668c26475) (YouTube)
14. [A Matrix Problem - Nested Loops](https://invisiblenetwork.ai/learn/nptel/106104128/307150bb6350) (YouTube)
15. [For Loops](https://invisiblenetwork.ai/learn/nptel/106104128/49244be758b1) (YouTube)
16. [A matrix problem using nested for loops](https://invisiblenetwork.ai/learn/nptel/106104128/efef2ddea33f) (YouTube)
17. [The break statement](https://invisiblenetwork.ai/learn/nptel/106104128/57003348275b) (YouTube)
18. [The continue statement](https://invisiblenetwork.ai/learn/nptel/106104128/c4fc6281eb38) (YouTube)
19. [continue example - Finding Pythagorean triples](https://invisiblenetwork.ai/learn/nptel/106104128/bd7dd10acf00) (YouTube)
20. [Data Types in C](https://invisiblenetwork.ai/learn/nptel/106104128/e9c72ff56f10) (YouTube)
21. [The ASCII code](https://invisiblenetwork.ai/learn/nptel/106104128/db4a6a3104d5) (YouTube)
22. [C operators and expressions - associativity](https://invisiblenetwork.ai/learn/nptel/106104128/f67f7d8ed7a3) (YouTube)
23. [Precedence of C operators](https://invisiblenetwork.ai/learn/nptel/106104128/d2ff7aec2fc4) (YouTube)
24. [Expression evaluation, comma operator](https://invisiblenetwork.ai/learn/nptel/106104128/5fca95e49157) (YouTube)
25. [Introduction to functions](https://invisiblenetwork.ai/learn/nptel/106104128/6ccb1e11893a) (YouTube)
26. [How functions are executed](https://invisiblenetwork.ai/learn/nptel/106104128/358b1be5b24b) (YouTube)
27. [Some examples on functions - 1](https://invisiblenetwork.ai/learn/nptel/106104128/68d93faaffa7) (YouTube)
28. [Some examples on functions - 2](https://invisiblenetwork.ai/learn/nptel/106104128/d8cfcbd5fc2c) (YouTube)
29. [Arrays in C](https://invisiblenetwork.ai/learn/nptel/106104128/b5d8c015d114) (YouTube)
30. [Initalizing Arrays](https://invisiblenetwork.ai/learn/nptel/106104128/5ccc90cd6767) (YouTube)
31. [Initializing character arrays](https://invisiblenetwork.ai/learn/nptel/106104128/3d073fc56065) (YouTube)
32. [Pointers in C](https://invisiblenetwork.ai/learn/nptel/106104128/55cc4356ab2d) (YouTube)
33. [Pointer arithmetic](https://invisiblenetwork.ai/learn/nptel/106104128/8635327d35d8) (YouTube)
34. [Functions with pointer arguments - swap](https://invisiblenetwork.ai/learn/nptel/106104128/95a4218d396c) (YouTube)
35. [Function to copy a subarray into another](https://invisiblenetwork.ai/learn/nptel/106104128/8f775ebe68cd) (YouTube)
36. [Programming using arrays and pointers](https://invisiblenetwork.ai/learn/nptel/106104128/685e5342d2bb) (YouTube)
37. [sizeof operator - how pointer arithmetic works](https://invisiblenetwork.ai/learn/nptel/106104128/76cfcab99df7) (YouTube)
38. [Returning pointers from functions](https://invisiblenetwork.ai/learn/nptel/106104128/2a35c62140b1) (YouTube)
39. [Example for returning pointers from functions - returning the duplicate of a string](https://invisiblenetwork.ai/learn/nptel/106104128/19b73827b1a3) (YouTube)
40. [Recursion - Linear Recursion](https://invisiblenetwork.ai/learn/nptel/106104128/158fa5b3ff49) (YouTube)
41. [Recursion - Linear Recursion - 2](https://invisiblenetwork.ai/learn/nptel/106104128/f9dd15768f03) (YouTube)
42. [Recursion - Two-way Recursion](https://invisiblenetwork.ai/learn/nptel/106104128/03b54469970a) (YouTube)
43. [Multidimensional Arrays](https://invisiblenetwork.ai/learn/nptel/106104128/7481f78d23d9) (YouTube)
44. [Multidimensional Arrays and Pointers](https://invisiblenetwork.ai/learn/nptel/106104128/f6da7a2bc5af) (YouTube)
45. [Multidimensional Arrays and Pointers - 2](https://invisiblenetwork.ai/learn/nptel/106104128/ae55b4403b08) (YouTube)
46. [Multidimensional Arrays and Pointers - 3](https://invisiblenetwork.ai/learn/nptel/106104128/647ee4532947) (YouTube)
47. [File Handling](https://invisiblenetwork.ai/learn/nptel/106104128/bbeca8897bfe) (YouTube)
48. [Some other file-handling functions](https://invisiblenetwork.ai/learn/nptel/106104128/f757f0a5e5ba) (YouTube)
49. [Structures in C - 1](https://invisiblenetwork.ai/learn/nptel/106104128/83b0a3e29342) (YouTube)
50. [Structures in C - 2](https://invisiblenetwork.ai/learn/nptel/106104128/b7df7ca0b468) (YouTube)
51. [Singly Linked Lists](https://invisiblenetwork.ai/learn/nptel/106104128/d1f48f114ee0) (YouTube)
52. [Doubly Linked Lists - introduction](https://invisiblenetwork.ai/learn/nptel/106104128/1bc4e1598b65) (YouTube)
53. [Organizing code into multiple files - 1](https://invisiblenetwork.ai/learn/nptel/106104128/84d0a24e36b3) (YouTube)
54. [Organizing code in multiple files - 2](https://invisiblenetwork.ai/learn/nptel/106104128/f5bc6c65d405) (YouTube)
55. [Pre and post increment operators](https://invisiblenetwork.ai/learn/nptel/106104128/114513860692) (YouTube)
