Autumn 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 Monday, November 29, 2021
- Lectures, tutorials, and labs will be conducted online.
Check the course’s Google Classroom for more details.- Last day of classes: Thursday, March 10, 2022
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: Computing Center, Admin Block, IIT Goa
Shruti Shet — shruti [at] iitgoa [dot] ac [dot] in; Office: Computing Center, Admin Block, IIT Goa
Soumya Ranjan Pattanayk — soumya2113104 [at] iitgoa [dot] ac [dot] in
Lectures (3 lectures): Monday, Tuesday, Thursday at 11 am
Tutorials: Tuesday at 2 pm (Common for all groups)
Lab sessions: Group leaders (TAs) lead each session. Please login to Classroom to see your group leader.
Introduction to Computation and Programming Using Python, 2nd Edition
with Application to Understanding Data
by John V. Guttag. 2016.
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. 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 iteration, search, file operations, sorting, etc. and solve them using simple algorithms
Implement algorithms using the Python programming language
We follow a continuous evaluation plan throughout this course, which includes
Classroom participation (lectures, tutorials led by TAs, labs, etc.) is essential throughout the course. 80% percentage of attendance is mandatory for all class interactions. Poor attendance may lead to FX grade.
Programming/homework/lab 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 use the Python programming language. Best (a-2) assignments will be used for grading, where a represents the total number of assignments.
Quizzes. There will be a classroom quiz every two weeks. Best (q-1) quizzes will be used for grading, where q represents the total number of quizzes.
End semester examination
Note: No makeup exam/quiz/assignments will be conducted.
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 they 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 projects, assignments, quizzes, and exams 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. We may use automated software tools to detect plagiarism in assignments, exams, etc. If we detect any form of plagiarism in a submission, we grade the submission zero. See the IIT Goa policy for academic malpractices.
The tentative grade distribution for the course is follows
Quizzes (30%)
Homework/Programming/Lab 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 | |||
1 | Course introduction and logistics | Nov 29 | |
2 | Course introduction — continued | Nov 30 | T1 — 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 in the cloud (using a web browser). Tutorial by: TBA |
3 | What’s computing? | Nov 30 | |
Week 2: Introduction to problem-solving and Python programming language | |||
4 | Command prompt interface, terminal execution, programming languages | Dec 6 | |
5-6 | Programming language basics, objects, operators | Dec 7 | |
7 | Evaluating arithmetic expressions | Dec 8 | |
8 | Evaluating arithmetic expressions (Continued), Variables and assignment | Dec 9 | L1 — QA session with TAs on evaluating arithmetic expressions |
Week 3: Programming basics | |||
- | Python elements, order of evaluation, operator precedence | — | T3 — Branching statements Tutorial by TBA |
- | Boolean expressions, Branching Programs: if, if-else, if-elif-else |
— | |
Week 4: Conditional statements, input/output/ strings | |||
- | Conditional expressions: single, nested, compound | — | |
— | T4 — Input/output, string operations | ||
- | string objects and operations on string s |
— | |
- | Input/output, type conversions | — | |
Week 5: Loops | |||
- | Iteration: while, while else |
— | |
— | T5 — While loops Tutorial by :TBA |
||
- | Enumeration and for loops |
— | |
Week 6: Loops (continued) and solving simple numerical problems | |||
- | for loops. range , enumerate |
— | |
— | T6 — Solving problems via Loops Tutorial by :TBA |
||
- | Applications of loops | — | |
Week 7: Structured types and mutability | |||
- | Tuples, lists, and mutability | — | |
Midterm week – Jan 13, 2021 | |||
Structured types and mutability | |||
- | Tuples, sets | — | |
- | Dictionaries | — | |
Approximation algorithms: linear search, bisection search | |||
- | Approximate solutions, exhaustive search | — | |
- | Bisection search | — | |
- | Comparing execution times, floats | — | |
- | Introduction to computational complexity | — | |
Functions, scoping, and abstraction | |||
- | Solving problems by search (review), Newton-Raphson | ||
- | Function definitions | — | |
- | Functions: keyword arguments and default values | — | |
Scoping, recursion | |||
- | Variable scoping | — | |
- | Recursion: count-down, fibonacci numbers | — | |
- | Modules | — | |
File handling, encoding | |||
- | File Input/Output, Discussion on encoding | — | |
- | Reading data via files | — | |
- | Writing data via files | — | |
Testing, exception handling | |||
- | Testing, black-box testing, glass-box testing | — | |
- | Handling exceptions | — | |
- | Exception handling: else , finally ; assertions: assert ; Getting started with classes and objects |
— | |
Classes and object-oriented programming | |||
- | Abstract data types and classes | — | |
- | Using classes for a real-world problem | — |