Course Meeting Times

Lectures: 3 sessions / week, 1.5 hours / session

Recitations: 1 session / week, 1 hour / session


This course presents the fundamentals of object-oriented software design and development, computational methods and sensing for engineering, and scientific and managerial applications. It cover topics, including design of classes, inheritance, graphical user interfaces, numerical methods, streams, threads, sensors, and data structures. Students use Java™ programming language to complete weekly software assignments.

Class Format

All lectures are active learning sessions with lab exercises. Please bring your laptop computer to every class, and remember to sit in alternating rows. If you can't attend a lecture you must still do and hand in the active learning exercises by 7pm on the day of lecture. Active learning exercises are posted a week before lecture if you need to work on them early. Lecture notes and Java™ files for each class are posted two or more days ahead of time. Please download the Java™ files to your laptop before class. Solutions to lecture exercises and solution Java™ files are posted about three hours after lecture on the same day.

Each student will be assigned to a recitation section that will be held each week. Sections have up to 12 students. Attendance is mandatory. Please bring your laptop to your recitation section.


18.01 (Single Variable Calculus). We use calculus in class and homework.

Registration Requirements

If you are a graduate student, you must register for 1.001 or 1.002 instead of 1.00. 1.001 is a 9 unit "G" subject. If you are a grad student and need 12 units, you may register for 1.002. Undergrads must register for 1.00; you cannot register for 1.001/1.002.

You must add 1.00 to your registration in time to submit homework 1. Adds after that date are for exceptional circumstances only.



Buy at Amazon Horstmann, Cay. Big Java. 4th ed. Wiley, 2009. ISBN: 9780470509487. [Preview with Google Books]

Look for discounted pricing, and you may be able to find it used. It's on reserve at Barker Engineering Library. You may use the 3rd edition.


Buy at Amazon Press, William, Saul Teukolsky, et al. Numerical Recipes in C: The Art of Scientific Computing. Cambridge University Press, 1992. ISBN: 9780521437202. [Preview with Google Books]

This is the source of the numerical methods we use; you should read the algorithm descriptions even if you don't wish to read the C code. It's also on reserve at Barker and available online.

Laptop Computers

Laptop computers are required for class participation in 1.00, in all lecture/lab and recitation sessions. Please use your own laptop if you own one; you must download Java (J2SE), Javadoc and the Eclipse interactive development environment (IDE); see the Tools section for directions. A laptop with at least 1 GB of memory running Windows Vista, Windows 7, Mac OSX or Linux is needed to run the 1.00 software. A limited number of loaner laptop computers are available; please contact IS&T to request one. You may also share a laptop if necessary.

Grading Policy

Graded problem sets and quizzes will be returned in recitation about 10 days after they are submitted. Problem set grades, quiz and final exam grades will be available through class site gradebook. The 'late penalties' will not be reflected in the posted grades, but will be deducted from your total grade at the end of the term.

10 Problem Sets (each worth 4 points) 40%
30 Active Learning Exercise Sessions (each worth 1/3 of a point) 10%
2 In-class Quizzes (open book, open notes) (each worth 12 points) 24%
Final Exam during Finals Period (open book, open notes) (worth 20 points) 20%
Weekly Recitations, Graded on Attendance and Participation 6%

Academic Honesty

All 1.00/1.001/1.002 students are expected to adhere to the highest ethical standards in their work. Your conduct in 1.00/1.001/1.002 and more generally at MIT establishes habits of professional honesty that are likely to remain with you throughout your career.

1.00 problem sets are individual assignments, not team projects. What you turn in must be your own work.

Rules for 1.00 problem sets are:

1. You may work with other students in understanding the homework problem statement, and reviewing the lecture notes, readings and recitation notes.

2. You may ask each other for assistance on questions of Java syntax and language features, but not on the program logic to answer homework questions. If discussions of syntax and language features involve examples, the examples must be different than the homework problem.

3. You must write the Java program code on your own for each assignment. You are not allowed to look at other students' solutions, or show your solutions to other students. Sharing code fragments or viewing or copying each other's code is a violation of the academic honesty policy.

4. If you need help to debug your program, obtain assistance from a TA during office hours. If you are working on the homework after office hours, you are allowed to ask other students for assistance in debugging your program. However, their assistance must be limited to determining what is wrong with your program. They may not correct or rewrite sections of it for you.

5. You may copy and modify programs given in lecture or recitation notes or used in lecture or recitation by the instructors or TAs. You may also copy and modify programs from the text used in this subject.

Rules for 1.00 active learning exercises are:

1. If you do the exercises in class, you may work together, up to three people. Each person in the group may turn in the same solutions if they worked together.

2. If you do the exercises outside of class, you must do them individually. You may get help from other students as in homework sets, but what you turn in must be your own work.

Any student that violates these guidelines may, at the discretion of the instructor-in-charge, receive an F as their final grade in 1.00/1.001/1.002. The 1.00 staff will also bring ethical violations to the attention of MIT authorities for appropriate disciplinary action.

Extension Policy for Problem Sets

Problem sets are due Friday at noon; they are submitted electronically on the course Web site. You will receive one penalty-free extension until the following Monday noon per semester. No extensions beyond that, except for medical or family emergencies, which generally require a note from the dean. See the instructor if this occurs. Late homework submitted after Friday noon and before Monday noon, beyond the one free extension, is penalized 30 points. Homework submitted after Monday noon receives no credit, since solutions are posted then. If Monday is a holiday, the late deadline is the next day classes are held.

Homework and Active Learning Exercise Submission

If you hand in .class files (compiled code, not human readable) instead of .java files (source code, human readable), you will receive no credit. No exceptions. Double check what you hand in. If your submission is empty, even though you're sure you submitted it, you will receive no credit. No exceptions.

Makeup Quiz Policy

You must request a makeup quiz at least two weeks before the quiz date, unless there is a medical or family emergency that arises after that. Email the head TA if you need a makeup quiz. Valid reasons include MIT-related travel and intercollegiate athletics. Schedule job and school interviews to avoid quiz dates; there are only two quizzes in 1.00 and you must be here for them. We do not automatically schedule makeup quizzes; if no one has requested one two weeks ahead of time, none will be offered (other than for medical or family emergency).


Control and Scope
L 1 Course Overview, Introduction to Java Problem Set 0 Out
L 2 Interactive Development Environment: Eclipse Problem Set 1 Out
L 3 Operators, Control Structures Recitation 1, Problem Set 0 Due
L 4 Data Types, More Operators
L 5 More Data Types, Control Structures, Intro to Methods Problem Set 1 Due, Problem Set 2 Out
L 6 Methods and Scope Recitation 2
Classes and Objects
L 7 Classes and Objects
L 8 Classes II Problem Set 2 Due, Problem Set 3 Out
L 9 Methods and Objects, Access Recitation 3
L 10 Static Methods and Data
L 11 Arrays, Arraylists Problem Set 3 Due, Problem Set 4 Out
L 12 Recursion Recitation 4
L 13 Inheritance: Subclasses Quiz 1 Review
L 14 Inheritance II: Abstract Classes, Methods Recitation 5
L 15 Inheritance III: Interfaces
L 16 Design Lab I - Inheritance
Graphical User Interfaces
L 17 Introduction to Swing Recitation 6
L 18 Swing Event Model
L 19 Inner Classes, Layout Managers Problem Set 5 Due, Problem Set 6 Out
L 20 Model-View-Controller, Timers Recitation 7
L 21 2D API, 2D Transformations
L 22 Design Lab II- Swing Problem Set 6 Due, Problem Set 7 Out
Streams (Input/Output) and Exceptions
L 23 Streams I, Exceptions Recitation 8. Set up sensor kit in recitation.
L 24 Streams II Quiz 2 Review
Sensors and Threads
L 25 Sensors I
L 26 Sensors II Problem Set 7 Due, Problem Set 8 Out
L 27 Design Lab III - Sensors Recitation 9
L 28 Threads
L 29 Threads and Sensors Problem Set 8 Due, Problem Set 9 Out
Numerical Methods
L 30 Matrices Recitation 10
L 31 Linear Systems
L 32 Integration Problem Set 9 Due, Problem Set 10 Out
L 33 Root Finding Recitation 11
Data Structures
L 34 Sorting
L 35 Stacks, Queues Problem Set 10 Due. Practice-only Problem Set 11 Out.
L 36 Lists Recitation 12
L 37 Storing Data: Trees, Hash Tables Practice-only Problem Set 11 solutions posted.