CS 101: Introduction to Computing

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

Outline

Instructor

Clint P. George — clint [at] iitgoa [dot] ac [dot] in
Office: F9, New Academic Block A
Phone: 832 249 0117

Teaching Assistants

Weekly Meetings (all online)

  1. 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.

  2. How to Think like a Computer Scientist by Allen B. Downey. 2002.

  3. 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.

Course Eligibility and Requirements

Learning Outcomes

This course will enable students to

Student Evaluations

We follow a continuous evaluation plan throughout this course, which includes

Note: No makeup exam/quiz/assignments will be conducted.

Expectations from Students

Grading Policy (tentative)

The tentative grade distribution for the course is follows

Teaching plan

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 strings  
- 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