Spring 2021
CS 101 is a core course offered to first-year B. Tech. students in all disciplines. This course gives a broad introduction to computer programming using the Python programming language.
Total Credits (C) | Lecture (L) | Tutorial (T) | Practical (P) |
---|---|---|---|
4 | 3 | 0 | 2 |
Highlights
- Classes commence on April 7, 2021
- Lectures, tutorials, and labs will be conducted online. Please check the course Google Classroom for more details.
- Midterm on May 25, 2021
- Last day of classes: July 14, 2021
Outline
Clint P. George — clint [at] iitgoa [dot] ac [dot] in
Office: F9, New Academic Block A
Phone: 832 249 0117
Chitra Nayagam — chitra [at] iitgoa [dot] ac [dot] in
Office: IT Lab, Information Technology Department
Shruti Shet — shruti [at] iitgoa [dot] ac [dot] in
Office: Computing Lab, Admin Block, IIT Goa
Prince Mathew — prince [at] iitgoa [dot] ac [dot] in
Sakar Salunke — sakar2013108 [at] iitgoa [dot] ac [dot] in
Anushree Debbarma — anusree2013103 [at] iitgoa [dot] ac [dot] in
Instructor office hours by email appointment.
Tutorial: 3 pm – 3:50 pm Monday (Common for all groups)
Introduction to Computation and Programming Using Python, 2nd Edition with Application to Understanding Data by John V. Guttag. 2016. Note: Indian edition available in the market.
How to Think like a Computer Scientist by Allen B. Downey. 2002.
How to Think Like a Computer Scientist: Learning with Python 3 by Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers. 2012. Note: Online chapters available here.
This is a core course designed for first-year undergraduate students.
Course prerequisites: None
This course will enable students to
Use computational techniques productively
Formulate reasonably complex problems involving sorting, searching, file operations, etc. and solve them using simple algorithms
Implement algorithms in Python programming language
We follow a continuous evaluation plan throughout this course, which includes
Classroom participation (lectures, discussion sessions led by TAs, etc.) is essential throughout the course.
Programming assignments. Students must be able to formulate and solve real-world problems based on the theory covered in lectures and discussions. Discussions with classmates are encouraged, but every student must submit individual solutions in a prescribed form. All programming assignments and projects will use the Python programming language.
Quizzes - There will be two-three quizzes
End semester examination - This will happen at the end of the course.
Course load. We expect that every student will spend 8-10 hours a week in addition to lecture hours and other online/in-classroom interactions. It’s a programming-based course. We assume that students have access to computers where (s)he can set a Python programming environment.
Late submissions will not be accepted for programming assignments, homework, etc. Students must follow the submission guidelines mentioned in every project or assignment to get full credits.
Academic Honesty. We expect that every student follows the highest standards of integrity and academic honesty. Copying/sharing code in exams, homework, lab sessions are not permitted. See the IIT Goa policy for academic malpractices.
The tentative grade distributions for the course are follows
Quizzes (30%)
Homework/Programming Assignments (40%)
Final (30%)
Note: This is a tentative course schedule. It will be updated often. Also, log on to Classroom to see lecture slides, videos, additional course materials, and announcements.
S/N | Topic | Date | Tutorial/Lab |
---|---|---|---|
Week 1: Introduction to Computing | |||
1a | Course introduction and logistics | April 7 | |
i | April 7 | Lab 0 — Get started with Python programming. This interaction will help the students to get started with the course. In addition, we discuss how to set up a basic Python environment locally and or in a cloud (in a web browser). Tutorial by Shruti Shet |
|
1b | What’s computing? Homework 1 |
April 8 | |
Week 2-3: Introduction to problem-solving and Python programming language | |||
2 | Programming languages; Getting started with Python | April 15 | |
ii | April 16 | Lab 1 — Evaluation of Arithmetic Expressions. Tutorial by Chitra Nayagam |
|
3 | Python elements, order of evaluation, operator precedence | April 20 | |
4 | Variables and assignment | April 21 | |
Classroom Quiz 1 | April 21 | Note: auto-graded | |
5 | Boolean expressions, Branching Programs: if, if-else, if-elif-else |
April 22 | |
iii | April 23 | Lab 2a — Branching statements Tutorial by Anusree Debbarma |
|
Week 4: Conditional statements, input/output/ strings | |||
6 | Conditional expressions: single, nested, compound | April 27 | |
iv | April 27–30 | Lab 2b — Additional excercise on branching statements | |
7 | string objects and operations on string s |
April 28 | |
8 | Input/output, type conversions | April 29 | |
Week 5: Loops | |||
9 | Iteration: while, while else |
May 4 | |
v | May 4 | Lab 3 — While loops Tutorial by Sakar SALUNKE |
|
Classroom Quiz 2 | May 5 | Note: grades pending | |
10 | Enumeration and for loops |
May 6 | |
Week 6: Loops (continued) and solving simple numerical problems | |||
11 | for loops. range , enumerate Python script command line execution, Jupyter notebook IDE |
May 11 | |
v | May 11–14 | Lab 4 — Loops Tutorial on Google colab IDE by Prince Mathew |
|
12 | Applications of loops | May 12 | |
13 | Approximate solutions, exhaustive search | May 13 | |
Week 7: Approximation algorithms: linear search, bisection search | |||
15 | Bisection search | May 18 | |
16 | Comparing execution times, floats | May 19 | |
17 | Introduction to computational complexity | May 20 | |
Midterm – May 25, 2021 | |||
Week 8: Functions, scoping, and abstraction | |||
18 | Solving problems by search (review), Newton-Raphson | Jun 8 | |
19 | Function definitions | Jun 9 | |
Jun 15 | Tutorial: Functions by Shruti Shet | ||
20 | Functions: keyword arguments and default values | Jun 10 | |
Week 9: Scoping, recursion | |||
21 | Variable scoping | Jun 15 | |
Jun 15 | Tutorial: Recursion by Prince Mathew | ||
22 | Recursion: count-down, fibonacci numbers | Jun 16 | |
23 | Modules | Jun 17 | |
Week 10: Structured types and mutability | |||
24 | Tuples, lists, and mutability | Jun 22 | |
25 | Lists and sets | Jun 23 | |
26 | Dictionaries | Jun 24 | |
Week 11: File handling, encoding | |||
27 | File Input/Output, Discussion on encoding | Jun 29 | |
28 | Reading data via files | Jun 30 | |
29 | Writing data via files | Jul 1 | |
Weak 12: Testing, exception handling | |||
30 | Testing, black-box testing, glass-box testing | Jul 6 | |
31 | Handling exceptions | Jul 7 | |
32 | Exception handling: else , finally ; assertions: assert ; Getting started with classes and objects |
Jul 8 | |
Week 13: Classes and object-oriented programming | |||
33 | Abstract data types and classes | Jul 13 | |
34 | Using classes for a real-world problem | Jul 14 |