- Introduction to computational thinking: problem decomposition, identifying patterns between subproblems, flow-charts and pseudocode for solving subproblems,
developing recipes from scientific and engineering problems 
[LAB] Lightbot game, setting up Python and Pip, Jupyter notebook, Python as an interpreter, running programs using Python, Hello world in Python.
- Python data types, reading and writing to console and files, basic arithmetic and logical
[LAB] Exercise that uses data types and basic arithmetic and logical operations.
- Introduction to functions and object oriented programming 
[LAB] Exercises on functions and object oriented programming.
- Coding style, exceptions, assertions, testing using PyUnit, debugging 
[LAB] How to debug a code? Exercise that uses assertions, create and use simple test cases. After this lab, students are expected to make sure they handle exceptions in their code and do unit testing for their codes. They are also expected to write well-commented codes and follow proper naming conventions.
- Branching and iteration. 
[LAB] Exercises on branching and iteration.
- Basic data structures: list, tuple, set. 
[LAB] Exercises using list, tuple and sets.
- Basic data structures: dictionary, string 
[LAB] Experiments to determine access time of different data structures and exercises using dictionaries and strings.
- Functions revisited, multi-file programming, modules, packages 
[LAB] Coding across multiple files and exercises using functions.
- Recursions 
[LAB] Exercises on recursion.
- Searching and sorting 
[LAB] Searching though different data structures, binary search, insertion and bubble sort.
- Useful basic libraries: NumPy, Pickle 
[LAB] Exercises using Numpy and Pickle.
- Useful basic libraries: Pandas, Matplotlib 
[LAB] Exercises using Pandas and Matplotlib.
- IDEs, debugging tools, version control and Git 
[LAB] A group project with 3-4 students; creating a git page for the project and sufficient commits from each project member. This will also be considered as the end-sem lab component.
Students will be able to i) design and code moderate sized (100 to 200 lines) programs for solving simple computational tasks, ii) understand and debug moderate sized programs written by others, iii) use some fundamental data structures and algorithms, vi) familiarity with a few popular Python libraries.
- Guttag, John. Introduction to Computation and Programming Using Python: With Application to Understanding Data. MIT Press, 2016. ISBN: 9780262529624.
- Starting Out with Python, 5th Edition, 2021, Tony Gaddis ISBN-13: 9780136679110
- Introduction to Programming in Python: An Interdisciplinary Approach. Robert Sedgewick , Kevin Wayne, Robert Dondero. Addison-Wesley Professional. ISBN-13: 978-0134076430
- Allen B. Downey. Think Python: How to Think Like a Computer Scientist. O’Reilly Media. ISBN-13: 978-1449330729
- Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython 2nd Edition by Wes McKinney ISBN-13: 978-1491957660
- Automate the Boring Stuff with Python: Practical Programming for Total Beginners (Sweigart, Al) ISBN-13: 978-1593275990, ISBN-10: 1593275994