Course Information

You are not logged in.

If you are a current student, please Log In for full access to the web site.
Note that this link will take you to an external site ( to authenticate, and then you will be redirected back to this page.

Course Description

Introduces fundamental concepts of programming. Designed to develop skills in applying basic methods from programming languages to abstract problems. Topics include programming and Python basics, computational concepts, software engineering, algorithmic techniques, data types, and recursion and tail recursion. Lab component consists of software design, construction, and implementation of design.


An understanding of programming in Python is a necessary prerequisite to this course. 6.0001 or 6.S080+(6.01 or 6.S08) can serve as the prerequisite.

If you have not met the prerequisite for this course but wish to take it nonetheless, we strongly recommend that you try Lab 0, a lab-like self-test that will help you determine if you have sufficient programming background to comfortably take 6.009.

Course 6 Requirements

6.009 is required for 6-3's in the new EECS curriculum and is a prerequisite for 6.031 and a co-requisite for 6.006. 6.009 is also required for the Minor in Computer Science.


There is no textbook for this class. There are a variety of resources available on the web for Python programming such as: We will provide tutorial material as necessary throughout the term.