Welcome to ES102. This course will introduce the key element that differentiates computers from other computational devices -- programming. Programming is how we instruct a computer to carry out tasks. A programming language is the medium of communication for this purpose. When learning any language, we begin by learning a few key concepts and then improve our skills by conversing in that language. To learn a programming language, we can converse with the computer. In this course, we will use a popular language called python to learn programming.

It is assumed that the student is an expert computer user. i.e., she is able to install, configure, and run programs on their computer.

By the end of this course, you will be able to write simple applications in python. You will also have a platform upon which you can build upon and learn new programming languages or advanced features of python to solve more complex tasks.


Please contact Balagopal Komarath <bkomarath@iitgn.ac.in>, Krishna Prasad Miyapuram <kprasad@iitgn.ac.in>, or your TA for any course related queries. Please begin all course related emails with "ES102:" in the subject (without double quotes).

The TA assignment is available here.


Use the following rooms for all meetings. The lectures are in slots A2 and A3. The lab sessions will be in A1 and B1.


There will be 8 assignments and 2 quizzes each contributing ten percent each to the final marks.

The evaluation scripts can be found here: eval


The dates given in brackets are the lecture sessions where we will hold the corresponding discussions.

  1. (Jan 06) Introduction
  2. (Jan 08) Setup (discussion)
  3. (Jan 13) Values (hw) (discussions 1)
  1. (Jan 15) Names (hw) (discussions 1)
  1. (Jan 20) Definitions 1 2 (hw) (discussion)
  2. (Jan 22) Conditionals (hw)
  1. (Jan 27) Evaluation (notes)
  2. (Jan 29) Boolean Values (hw)
  3. (Feb 03) Testing
  4. (Feb 03) Loops (hw)
  5. (Feb 03) Side-effects
  6. (Feb 05) Tuples (hw)
  7. (Feb 10) Classes 1 2
  8. (Feb 12) Lists 1 2 (hw)
  9. (Feb 17) Homework
  10. (Feb 19) Simulating Games of Chance
  11. (Feb 24) rock, paper, scissors (code)
  12. (Feb 26) string operations (str list) (discussion (aliasing, mutation))
  13. (Mar 17) Sets and Dictionaries (discussion)
  14. (Mar 19) Functions as Values
  15. (Mar 24) Files (discussion)
  16. (Mar 31) Syntax Sugar
  17. (Apr 07) Error Handling
  18. (Apr 21) Coding a Game: Hangman
  19. (Apr 28) Coding a Game: Tic-Tac-Toe


Instructions for submission

  1. A0 (Submission form)
  2. A1 (Solution)
  3. A2 (Solution)
  4. A3 (Solution)
  5. A4
  6. A5
  7. A6
  8. A7
  9. A8


  1. Q1
  2. M1
  3. M2
  4. M3
  5. Q2