Introduction to Computer Science and Programming Using Python
This course is the first of a two-course sequence: Introduction to Computer Science and Programming Using Python, and Introduction to Computational Thinking and Data Science. Together, they are designed to help people with no prior exposure to computer science or programming learn to think computationally and write programs to tackle useful problems. Some of the people taking the two courses will use them as a stepping stone to more advanced computer science courses, but for many it will be their first and last computer science courses. This run features lecture videos, lecture exercises, and problem sets using Python 3.5. Even if you previously took the course with Python 2.7, you will be able to easily transition to Python 3.5 in future courses, or enroll now to refresh your learning.
Since these courses may be the only formal computer science courses many of the students take, we have chosen to focus on breadth rather than depth. The goal is to provide students with a brief introduction to many topics so they will have an idea of what is possible when they need to think about how to use computation to accomplish some goal later in their career. That said, they are not "computation appreciation" courses. They are challenging and rigorous courses in which the students spend a lot of time and effort learning to bend the computer to their will.
- A Notion of computation
- The Python programming language
- Some simple algorithms
- Testing and debugging
- An informal introduction to algorithmic complexity
- Data structures

Professor Guttag is the Dugald C. Jackson Professor of Computer Science and Electrical Engineering at MIT. He leads the Computer Science and Artificial Intelligence Laboratory’s Data Driven Medical Research Group. The group works on the application of advanced computational techniques to medicine. Current projects include prediction of adverse medical events, prediction of patient-specific response to therapies, non-invasive monitoring and diagnostic tools, and tele-medicine. He has also done research, published, and lectured in the areas of data networking, sports analytics, software defined radios, software engineering, and mechanical theorem proving.
Professor Guttag received his bachelors degree in English and his master's in applied mathematics from Brown University. His doctorate is from the University of Toronto.
From January of 1999 through August of 2004, Professor Guttag served as Head of MIT’s Electrical Engineering and Computer Science Department. He is a Fellow of the ACM and a member of the American Academy of Arts and Sciences.


Ana Bell is a lecturer in the Computer Science and Electrical Engineering Department at MIT.
Professor Bell received her Bachelor in Applied Science from the University of British Columbia in Vancouver, Canada. She received her MA and PhD from Princeton University. Her research was in computational biology, specifically using computational techniques to answer the questions: what do genes do, and how do genes interact with each other and other small molecules?
She discovered her passion for teaching after being appointed as a teaching assistant for two semesters for Introduction to Computer Science, at Princeton University. Since then, she has sought any opportunity to introduce students to the wonderful world of computer science!