CS 101 Introduction to Computing (Autumn 2024)


About This Course

  • This is an introductory course on Programming and Computing for first-year undergraduate students of all streams in the B.Tech program at IIT Goa.

  • Course Credits: 4

  • Lectures: 3 hours a week

  • Lab: 3 hours a week

Note:

  • Lectures will begin on 7th August 2024

  • Labs will begin on 19th August 2024

  • All class notifications and resources will be uploaded on Google classroom. Login using your IIT Goa account.

Course Objectives

This course offers a basic introduction to computer programming and computing principles.

  • Understand the basic components in computing: Computer Hardware, Software, Data and Storage.

  • Learn the fundamentals of computer programming using Python (we will focus on Python3).

  • Learn the skill of problem solving by effectively translating problem statements into more precise specifications, formulating an approach, and translating it into a Python program.

  • Learn to understand, analyze, critique and debug programs and code that is generated by humans or AI code-generation tools.

  • Learn how complex systems can be built using decomposition and abstraction using Python libraries as an example.

Topics

  • Basic model of sequential computing: hardware, memory, data, software (sequential instructions)

  • Introduction to Python: Datatypes, Variables, Assignment and Basic operations

  • Simple programs with input, output and functions

  • Flow of control: Branches, conditional expressions, loops, functions

  • String objects and operations on strings

  • Structured types: Lists, Sets, Dictionaries, Tuples

  • Problem Solving with Python: Searching, Sorting, Recursion

  • Python Modules and File handling

  • Introduction to object-oriented programming: Python Classes

  • Exception handling, assertions

  • Von-neumann model, basic introduction to the C language

  • An introduction and broad overview of topics in Computer Science and Engineering.

People

  • Course Instructor: Neha Karanjkar

  • Graduate TAs: Tushar Lone, Lekshmi P, Andleeb, Karthik Pai, Harshit Pant

  • Undergraduate TAs: Harsh Choudhary, Rohan Manro, Aditya Bawangade, Hasanali Malavi

Lecture and Lab Timings

Lectures: (3 Lectures per-week, 50 minutes each). Location: LH1, First floor, Mining Building

  • Mondays 2pm

  • Wednesdays 2pm

  • Thursdays 4pm

Labs: (1 Lab session per-week, 3 hours) Location: CC Lab, First floor, Main building

  • Mondays 10am (for batch 1)

  • Tuesdays 10am (for batch 2)

Course Calendar

Tools that will be used in this course:

  • PythonTutor (Browser-based compiler and visualizer for understanding basics of Python)

  • Google Colab Browser-based Python notebook

  • For autograding programming questions: CodeCheck and Moodle CodeRunner.

  • For writing and running Python programs:

    • Editor of your choice (Eg. notebook, gedit, vim) and command-line based Python3 interpreter

    • VisualStudio code

  • Gen-AI tools that may be introduced in the course: ChatGPT, Github copilot (plugin for VSCode)

Textbook:

  • Online, Interactive Textbook: Foundations of Python Programming Link

Resources and Books:

  • Introduction to Computation and Programming Using Python, 2nd Edition with Applications to Understanding Data by John V. Guttag. 2016.

  • 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 book available here.

  • MIT open courses material on introductory programming links to courses