6.170 / Spring 2000 / General Information

Handout 1

Course web site:      http://www.mit.edu/~6.170/

staff - texts - where and when - procedures - policies

Staff

Mail sent to 6.170-staff@mit.edu will reach everyone listed in this table.
Mail sent to 6.170-lecturers@mit.edu will reach Professor Chapin and Professor Guttag only.
 
 Lecturers  John Chapin   NE43-530  253-3538  jchapin-at-no.lcs.mit.edu
   John Guttag  38-401  253-6022  guttag-at-no.eecs.mit.edu 
 Course Secretary   Kincade Dunn   NE43-529  258-5707  kdunn-at-no.lcs.mit.edu
 TAs  Laura Dean      lgdean at MIT
 Chris Hockert     225-9587  hockert at MIT 
 Felix Klock   NE43-630  253-7710/876-4448   pnkfelix at MIT 
 Lik Mui   NE43-422  576-7624   lmui at MIT
 Rob Pinder       rwpinder at MIT
 Christopher Rohrs    868-5831  chrohrs at MIT
 Phil Sarin      pdsarin at MIT
 Shan Ming Woo  NE43-527   253-6015  smwoo-at-no.lcs.mit.edu
 Mila Zemlyakova      mila at MIT 
 Genya Zemlyakova       genya at MIT 

Texts

Required Text

Program Development in Java: Abstraction, Specification, and Object-Oriented Design, by Barbara Liskov. This text is not yet published. A draft copy can be ordered using the form given to you.

Recommended Java Text

Other Java References


Where and When

Lecture/recitation

6.170 meets Monday, Tuesday, Wednesday, and Thursday from 10-11 in the morning.
Monday, Tuesday, and Wednesday are lectures in 34-101, and Thursday is recitation.
(Exception: Thursday is a lecture in the first week of classes.)

Recitation Section Locations (Thursdays at 10am):
You will be assigned to a recitation based on the sign-up form you submit; the section assignment made by the registrar is ignored.
 
Section Location Section Location Section Location
1 24-407 5 36-153 9 1-379
2 36-372 6 36-144 10 66-168
3 26-322 7 13-5101    
4 26-328 8 31-161    

Quizzes

There will be two quizzes. Quiz 1 is Wednesday March 1. Quiz 2 is in two parts, Tuesday April 4 and Wednesday April 5. Quizzes will be given during class time in 34-101.

Office Hours

TAs will schedule office hours and locations at the first recitation.  Professors Chapin and Guttag are available by appointment but will not have fixed office hours.


Policies

Grading policy

 Individual 
 Work
 Recitation participation  4%
75%
 Problem set 1  5%
 Problem set 2  5%
 Problem set 3  8%
 Problem set 4  8%
 Problem set 5  15%
 Quizzes  30%
 Group Work   Final Project  25% 
 25% 

Late/missing work

Collaborative work

The Departmental Guidelines Relating to Academic Honesty require that we inform you of our expectations regarding permissible academic conduct.

Procedures

Handouts

Handouts will be distributed on the class web site. Important announcements will also be posted to the web page so please check it regularly. Last-minute announcements will be emailed to all students.

How to Submit Assignments

You should hand in your solution to each assignment as hardcopy to your TA or to the course secretary (NE43-529) by 4:30 PM on its due date, with your name, user name and TA's name written on it.  It is usually most convenient to give the assignment to your TA at the end of class on that day. Additionally, the source and compiled code for each problem set should be made available on Athena so your TA can test your program. Each problem set assignment will specify what should be handed in and what should be put online.

Making code available online

You should create a directory named 6.170 in your home directory on Athena and give read access specifically to the 6.170 staff.  This will allow the 6.170 staff to see and test your code on Athena, without granting access to your code to all Athena users.  The name of the group for 6.170 staff is system:6.170.
athena% mkdir ~/6.170
athena% fs sa ~/6.170 system:6.170 read
You should then create subdirectories ~/6.170/ps0, ~/6.170/ps1, etc., for the problem sets. All of these subdirectories will automatically inherit the right set of permissions from the parent directory if these steps are performed in the proper order. For example, all of your files regarding the first problem set should be under ~/6.170/ps0.

Failure to put your code online in the proper place will interfere with the operation of our auto-tester, annoy your TA, and potentially lower your grade.

Even if you use your own PC for coding 6.170 problem sets, your code still must also work on Athena, and you must place both your source and compiled code on Athena for testing and grading purposes.

When you start your final project, you will be given a group locker. You may then set the appropriate permission on it to allow your group members access your files. You will get more information on this later.

Using Java on Athena

Sun Microsystems' Java Development Kit (JDK) is available on Athena, and may be used for coding 6.170 problem set solutions.  Before using Java on Athena, you will need to attach both the "6.170" and "java" lockers.  The 6.170 locker contains copies of handouts,  code libraries that you will use when completing your problem sets, and source code for some libraries.  The "java" locker contains the Java compiler javac and the Java interpreter java.  You will need access to both of these lockers.  To attach these lockers automatically when you log in to Athena, add the following lines to your .environment file:

    add 6.170
    add -f java

These lines will take effect the the next time you log in to Athena.  To make them take effect in the current session, you may also type the same lines at the Athena prompt.  Once these lockers are attached, you may access the 6.170 locker through the /mit/6.170 directory.

To write code in Java, you start by writing a Java source file. Java source filenames usually have a ".java" extension.  Source files are just text files, which you may create and edit with Emacs or your favorite text editor.

You must compile your source code before running it.  The javac compiler is used to transform Java programs into bytecode form, contained in a class file.  Class files are recognized by their .class extension.  The bytecode in class files can then be executed by the java interpreter.

Extensive on-line documentation for javac, java, and other tools in the JDK can be found through the Java documentation page at MIT (http://web.mit.edu/java/www/home.html).

A Java program consists of one or more packages, each of which defines a group of related abstractions.  Each package consists of one or more classes.  Each class is produced from a source file that implements the abstractions.

Using javac, one or more source files can be compiled into class files for execution by the interpreter.  At least one of the resulting classes must define a method named "main", which serves as the starting point for execution of the program.  Once all of the source files have been compiled the program can be run using java, the Java interpreter.

Before using javac, you should add the following lines in your .environment file.  These lines will set your CLASSPATH environment variable to include the 6.170-provided class libraries as well as your own generated classes.  You will not be able to access the 6.170-provided classes if you do not set your CLASSPATH properly.

    if ($?CLASSPATH) then

        setenv CLASSPATH ${CLASSPATH}:.:/mit/YOURUSERNAME/6.170:/mit/6.170/class

    else

        setenv CLASSPATH .:/mit/YOURUSERNAME/6.170:/mit/6.170/class

    endif
Running the following line
    javac <options> file1.java file2.java ...

will generate class files file1.class, file2.class, etc., for each specified source file.  Type "man javac" at the Athena prompt for more information on javac options.

Once you have compiled your source code into class files, you can execute it with the Java interpreter java.  The command
    java <options> <classsname>
will execute the class indicated by <classname>.  This class must exist in your current CLASSPATH, or you will need to use the -classpath option to specify a different CLASSPATH.  The class that you execute must also contain the "main" method discussed above.  For a complete description of all of java's options type java -help at the Athena prompt.

Zephyr Instance

You may want to subscribe to two Zephyr instances pertaining to the class.  These instances should be the first place you turn to for help.  They are called 6.170 and 6.170.d.  These instances allow you to get in touch with fellow classmates and any lab assistants that are monitoring the instance.   To subscribe, type
    zctl add message 6.170 \*
    zctl add message 6.170.d \*

To write to one of these instances, type:
    zwrite -i <instance-name>

To unsubscribe, type
    zctl delete message <instance-name> \*

To unsubscribe for the current login session only, substitute "unsub" for "delete" in the above line.

The 6.170 instance is intended strictly for questions and answers directly related to problem sets and Java.  If you want to start a debate on the aesthetic virtues of Java, for instance, write to 6.170.d instead.  The TAs will generally subscribe to the 6.170 instance as long as the signal-to-noise ratio remains high.  We will occasionally answer questions on the instances, especially if we see a "not-quite-correct" answer or general confusion.  However, if you have a question for a TA, e-mail your TA instead.

For more information on zctl, type "man zctl" at the Athena prompt.


Back to the 6.170 home page
For problems or questions regarding this page, contact: 6.170-staff@mit.edu