For official announcements and grades, view 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 more details in the syllabus.
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:
| 📋 | ECE | CSE1 | CSE2 |
|---|---|---|---|
| Theory Instructors | Shreya Agarwal | Rachit Nimavat | Trupti Gondaliya |
| Lab Instructors | Shreya Agarwal | Rachit Nimavat • Shreya Agarwal | Trupti Gondaliya • Rachit Nimavat |
TA: None allocated by Institute. Peer-learning is highly encouraged.
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.
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, Solutions | - |
| 9 | Oct29 - Nov1 | Functions, Recursion | Lec-20, Lec-21, Lec-22, Lec-23 | Lab-7 |
| 10 | Nov3 - Nov8 | Structures | Lec-24, Lec-25, Lec-26 | Lab-8 |
| 11 | Nov10 - Nov15 | Structure, Introduction to Pointers | Lec-27, Lec-28, Quiz-2 | Lab-9 |
| 12 | Nov19 - Nov20 | Pointers, File Handling | Lec-29, Lec-30, Lec-31 | Lab-Finals |
| 13 | Nov26 - Nov27 | — | Ghost-in-the-Stack Problem Session | Lab-Finals |
| 14 | Dec1 | Endsem | Endsem, Solutions | - |
| - | Feb16 | Make-up Endsem | Make-up Endsem, Solutions | - |
Practice Questions
- Ungraded Quiz-1A and Quiz-1B
- Group-Discussion 1
- Unit-1 Practice Questions
- Unit-2 Practice Questions if-else and loops and arrays and strings
- Group-Discussion 2
- Group-Discussion 3
- Group-Discussion 4
- Sample Lab-Exam
- Group-Discussion 5
Lab Finals for CSE1
Due to resource constraints, we have Lab Finals in a staggered manner with distinct question sets for every session and seating arrangement.
| Date | Group | Subgroup | Questions for Roll Numbers |
|---|---|---|---|
| 17 Nov | 1 | A | Even • Odd |
| 18 Nov | 2 | A | Even • Odd |
| 24 Nov | 1 | B | Even • Odd |
| 25 Nov | 2 | B | Even • Odd |
Special Events
- To keep our spirits high for the end-semester exam, we will break out of the classroom for a joint problem solving session for all batches. Group Discussion: The Ghost in the Stack.
Textbook and Resources
We will provide self-contained lecture notes and other resources for all topics covered in this course. You are not required to purchase the textbook.
- The C Programming Language by Kernighan and Ritchie - This is the standard textbook. Unfortunately we do not have any copies in our library.
- The library has 3 copies of Programming in ANSI C by E. Balagurusamy. This book is a popular introductory text, but it is not a substitute for the provided lecture notes.
- Schaum’s Outline of Programming with C by Byron Gottfried contains a lot of solved examples and practice problems. We do not have any copy in the library.
- Visualize Program Execution - Very helpful to understand pointers!
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 draw 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!