About This Course
Let's start with the strategic goals of this course:
- Help students (who may or may not intend to major in computer science) to feel justifiably confident of their ability to write small programs.
- Map scientific problems into computational frameworks.
- Position students so that they can compete for jobs by providing competence and confidence in computational problem solving.
- Prepare college freshmen and sophomores who have no prior programming experience or knowledge of computer science for an easier entry into computer science or electrical engineering majors.
- Prepare students from other majors to make profitable use of computational methods in their chosen field.
6.00SC can be summarized with these six major topics or objectives:
- Learning a language for expressing computations—Python
- Learning about the process of writing and debugging a program
- Learning about the process of moving from a problem statement to a computational formulation of a method for solving the problem
- Learning a basic set of "recipes"—algorithms
- Learning how to use simulations to shed light on problems that don't easily succumb to closed form solutions
- Learning about how to use computational tools to help model and understand data
6.00 is designed to help you become skillful at making the computer do what you want it to do. Once you acquire this skill, your first instinct when confronted with many tasks will be to write a program to do the task for you. Said another way, we want to help you learn to apply computational modes of thought to frame problems, and to guide the process of deducing information in a computational manner.
This means that the primary knowledge you will take away from this course is the art of computational problem solving. Unlike many introductory level courses, having an ability to memorize facts will be of little help in 6.00. This course is about learning to solve problems, not learning facts. (This, by the way, is exactly why all exams are open book.)
Prerequisites and Preparation
This course is aimed at students with little or no prior programming experience but a desire to understand computational approaches to problem solving. Now, by definition, none of you are under-qualified for this course. In terms of being over-qualified — if you have a lot of prior programming experience, we really don't want you wasting your time, and in this case we would suggest that you talk to me about how well this class suits your needs, and to discuss other options. In addition, we want to maintain a productive educational environment, and thus we don't want over-qualified students making other students feel inadequate, when in fact they are only inexperienced.
Since computer programming involves computational modes of thinking, it will help to have some mathematical and logical aptitude. You should be confident with your math skills up to pre-calculus.
Textbook
The original textbook for 6.00 and the course lectures parallel each other, though there is more detail in the book about some topics. The book is NOT required. We will not be referring to it in assignments or depending upon it to cover holes in the lectures.
Guttag, John. Introduction to Computation and Programming Using Python. Spring 2013 edition. MIT Press, 2013. ISBN: 9780262519632.
A second edition of the textbook is now available. However, there may be some discrepancies between the original course lectures included on this course site and the sections in this second edition of the textbook.
Guttag, John. Introduction to Computation and Programming Using Python: With Application to Understanding Data. MIT Press, 2016. ISBN: 9780262529624.
If you choose not to purchase the textbook, you will probably find it useful to buy or borrow another book that covers Python. You might check your local public library's resources, or search online for a free Python text, such as How to Think Like a Computer Scientist or An Introduction to Python (PDF).
Online readings will be posted on the appropriate session pages. A more complete list of readings and references (not all of which are specifically assigned during lectures) can be found in the References section.
Technical Requirements
Since one of the goals of this course is to become familiar with programming, you will need to install and use the Python programming language and the interpreter IDLE. Please see the Software section for information and instructions on downloading the required software.
Most lectures involve programming demonstrations, and the code involved will generally be posted twice: once as a handout in PDF format, and again as a code file in .PY (Python) format. Additionally, many problem sets have accompanying code required for completing the assignment, and these are posted as .PY (Python) files. If you do not have the software installed, you will not be able to properly open and use these files.
Acknowledgments
We would like to thank course TAs Mitchell Peabody, Gartheeban Ganeshapillai, and Sarina Canelake for their participation in filming 6.00 recitations for OCW Scholar, and Niki Castle and Elaina Cherry for their work and dedication adapting the 6.00 materials for Scholar students. We would also like to thank Eric Grimson for his role in the development of 6.00 teaching material over the years, and for allowing us to record a guest lecture.