Dr. Varghese John (VJ) is an experienced technologist with a scientific research background and a love for learning and teaching science, technology and mathematics. He has led large technology teams delivering innovative solutions to complex problems for leading financial service organizations. VJ is passionate about STEM education and has worked with people from diverse backgrounds enabling them to discover a love for learning and helping them achieve their educational goals.
This course is designed for Ivey Business School students interested in learning the art of Python programming. In this course we will explore programming in Python. Think of it like learning a new language: in addition to learning syntax, and writing code, we will work on developing computational thinking and breaking down big problems into simple individual tasks.
We live in the Information Age and the computer is the engine that drives progress. Computers powered by programs that we write are the best tools we have today to process information. Many important jobs and careers will go to those who can learn to design, program and maintain the programs that will drive our economy in this information age.
To fully use computers, you have to learn to program them and Python is a versatile, modern programming language that you can use to write an app, build a website, analyze data, control a robot or even build a self driving car.
Course Contents
1. Introduction To Python Programming Language- 1.1 Introduction to Computers, Programming, Computational Thinking and Python
- Interactive programming with Python
- Computational thinking: Asking and answering interesting questions
- Decomposing problems into smaller problems
- Using algorithms and algorithmic thinking
- 1.2 Building Blocks for Your Programs - Variables and Types
- Variables
- Types
- Quiz 1
- 2.1 Building Blocks for Your Programs - Functions
- Functions: Signature, interfaces and encapsulation
- Functions - Decomposition of problems
- Recursive functions
- Function Composition
- 2.2 Making Logical Choices and Performing Repetitions - Operators, Logic and Loops
- The discrete mathematics of logic - Boolean variables and logical operators
- Making comparisons - Writing the logic of your programs using comparison operators
- Making choices - Performing different actions using logical operators
- Encoding and Controlling Repetitions - Loops
- Quiz 2
- 3.1 Ensuring code quality
- Type Checking
- Unit Testing
- Test Driven Development
- 3.2 Version Control
- What is Version Control
- Introduction to Git and GitHub
- A simple Git workflow
- Quiz 3 and Coding Assignment 1
- 3.1 Strings
- Creating Strings
- Accessing substrings - Indexing and slicing
- Basic Operations on Strings
- Displaying Strings
- Quiz 4 and Coding Assignment 2
- 5.1 Lists, Dictionaries and Tuples
- Distinguishing features of different collections
- Creating Lists, dictionaries and tuples
- Accessing elements of a collection
- Operations on collections
- Quiz 5 and coding Assignment 3
- Introduction to Jupyter Notebooks
- Generating random variables and understanding distributions
- Relationships (signals) encoded in Data
- Decoding relationships (signals) encoded in Data
- Inference and prediction
- Quiz 6 and Coding Assignment 4
- 5.1 File I/O
- Writing to files
- Reading from files
- Data formats - csv, json, xml
- 5.2Databases
- Databases and SQL
- Writing to databases
- Reading from databases
- Quiz 7 and Coding Assignment 5
- Write intermediate difficulty programs in Python - which is a powerful modern computer programming language
- Experience the power of Python Data Structures for storing and manipulating data
- Develop the precision required to communicate with computers which will give you an insight into more structured ways to think
- Develop computational thinking skills
- Discover the pleasure of finding things out by exploring interesting problems through programs you write
Familiarity with basic computer programming will be helpful but not a requirement. Make sure you have a laptop or computer to use during the course to practice programming. Knowledge of High School Mathematics
Dr. Amey Karkare is an Associate Professor in the Department of CSE at IIT Kanpur. He is currently the head of Computer Center and Associate Dean for Digital Infrastructure at IIT Kanpur. Dr Karkare completed his Ph.D. from IIT Bombay in 2009 and his B.Tech. from IIT Kanpur in 1998. His areas of interest include Intelligent Tutoring Systems, Program Analysis, Compiler Optimizations, and Functional Programming. He has more than 7 years of industry experience most of which is in the area of Compiler Optimizations. Dr. Karkare received prestigious Infosys fellowship during his Ph.D., and P. K. Kelkar Young Research Fellowship at IIT Kanpur. He has been visiting researcher at Microsoft Research, Redmond, and IIT Bombay. Last few years his focus is on improving how introductory programming courses are taught. He has co-taught large online courses on programming that had registration of more than 30,000 students. The software he developed is being used at several premier institutes in India like IIT Kanpur, IIT Bombay, IIT Goa, IISER Bhopal to name a few.