Applications for the September 2026 Qualifier will open on June 29, 2026. Notify me
Degree Level Course

Programming in C

This course is intended as a practical introduction to C programming. The focus is on gaining experience with writing and debugging programs. At the end of this course, a student should be able to: -write, compile, and run programs in C -use debugging tools to find and correct errors in programs -use various constructs in C and the standard library of C to implement basic data structures and algorithms -understand the need for an OS and how programs interact with the system

Code BSCS3005
Credits 4 Credits
Type Elective
Prerequisites None
12-Week Roadmap

Course Structure & Syllabus

For details of standard term assessment timelines and exam structures, visit our Academics page.

WEEK 1
Write, compile, and run programs in C in a Linux environment; debugging tools
WEEK 2
Variables, built-in datatypes, operators; Control flow - conditionals, loops
WEEK 3
Modularity and functions; variable scope
WEEK 4
Input/Output; Files
Reading List

Prescribed Books & References

  • “The C programming language,” Kernighan and Ritchie
  • Practical C Programming, S. Oualline, O’Reilly Publications
  • Online sources and language reference
Faculty & Experts

About the Instructors

Prof. Nitin Chandrachoodan

Prof. Nitin Chandrachoodan

Professor , Department of Electrical Engineering , IIT Madras

Nitin Chandrachoodan received his BTech (electronics and communication engineering) from IIT Madras in 1996, and PhD from the University of Maryland at College Park in 2002, in the area of high-level synthesis techniques for mapping DSP algorithms to architectures. He has been with the department of electrical engineering at IIT Madras since 2004, where he is currently an professor.

His research interests include digital systems design and design automation tools and techniques, as well as design of embedded systems with a special focus on assistive technologies. He has taught graduate courses on digital integrated circuit design and on mapping algorithms to architectures, and a UG course on data structures and algorithms, as well as a laboratory course on digital design using FPGAs. He is an associate editor of the Springer Journal of Signal Processing Systems.