CS 101: Fundamentals of Computer Programming (Monsoon 2025)

For official announcements, schedule, grade postings, and assignment submissions, please use the official course page on Google Classroom. This page serves as the home for all lecture slides.



Course Description

Welcome to CS 101! This course is your first step into the world of computational thinking and computer programming. We will explore the basic structure of a computer, understand “what happens under the hood”, and how to talk with a computer. We will use C programming language to learn core concepts like variables, loops, arrays, and functions. We will also taste more advanced topics like pointers and some data structures. You can find the more detailed syllabus here.

Expected Outcomes

  • How to think like a programmer, so you can pick up any language you need in the future in your field that is the best tool for the problem at hand.
  • Understanding of fundamental programming concepts such as variables, control structures, functions, and data structures.
  • Ability to write programs in C for your everyday engineering problems.
  • A solid foundation for your future computer science studies.

Grading

We have to use the following evaluation scheme as per the institute guidelines.

  • Labs (weekly): 16.7%
  • Lab Final: 16.7%
  • Two Quizzes: 2 x 6.65% = 13.3%
  • Midterm Exam: 20%
  • Final Exam: 33.3%

Course Structure

The first-year B.Tech. batch is divided into three sections for this course:

While your lectures will be with your section’s assigned instructor, we will provide a unified learning experience. All sections will follow the same overall schedule, use the same lecture slides, and have common quizzes, midterm, and final exams. This ensures fairness and consistency for every student in the course. We cannot have common lab assignments due to logistical limitations.

Schedule

Week Dates Topics Slides Lab
1 Aug28 - Aug29 Course Intro, Hello World Lec-1, Lec-2 -
2 Sep1 - Sep4 Data Types, Variables, printf/scanf Lec-3, Lec-4 Lab-0
3 Sep8 - Sep12 Typecasting, Representing Data Types Lec-5, Lec-6 Lab-1
4 Sep15 - Sep19 Operators, Precedence, if-else Lec-7, Lec-8, Lec-9 Lab-2
5 Sep22 - Sep26 if-else, switch, Loops Lec-10, Lec-11, Lec-12, Quiz-1 Lab-3
6 Sep29 - Oct3 goto, Arrays Lec-13, Lec-14, Lec-15, Lec-16 Lab-4, Lab-5
7 Oct6 - Oct10 Strings, Functions, Revision for Midsem Lec-17, Lec-18, Lec-19 Lab-6
8 Oct11 - Oct17 Midsem (No Classes) Midsem, Midsem-solutions -

Practice Questions

Textbook and Resources

We wil provide self-contained lecture notes and other resources for all topics covered in this course. You are not required to purchase the textbook, but you may find it useful to consult a physical copy, for which TBD copies are available for in-library use.

Advice: The best way to learn programming is to practice writing code and lookup issues that you encounter. You may also use LLMs to help you understand concepts and issues with your code. However, do not rely on them to write code for you.

Acknowledgements

The lecture slides draws a lot of material from Nisheeth Srivastava’s 2020 offering of ESC101. Since many first year students are not comfortable in English, we adopted a lot of pedagogical tips from the Hindi lectures of Rajat Mittal’s 2017 iteration of ESC101. Thanks to Shivam Malhotra and Mookit team of IITK for making it freely available on YouTube!