Java's Out in 6.001, Welcomed in 6.170By Steve Lim
This semester, Structure and Interpretation of Computer Programs (6.001) has returned to Scheme as the sole instructional language, while Laboratory in Software Engineering (6.170) is being offered in Java for the first time.
Experimental changes in 6.001 will affect the presentation of object-oriented programming. The new presentation will use object-oriented code entirely in Scheme, the standard language for 6.001.
"We're not changing Scheme, but are revising the problem sets on the object-oriented programming and using a new, more polished and clear, implementation of the Scheme OOP system," said Professor of Electrical Engineering and Computer Science Albert R. Meyer, the lecturer for 6.001.
Last year, some concerns were raised about the experimental use of of Java in 6.001. Students who didn't have a computer with Microsoft Windows had to share resources to use Microsoft J++, he said.
Java will not be used this term and perhaps not at all this year, Meyer said. This year, 6.001 students should be able to do all their work with Scheme in Windows, on Athena, or in the 6.001 lab, he said.
The presentation of inheritance and classes has been modernized to reflect new developments in computer languages, said Professor of Electrical Engineering and Computer Science Rodney Brooks. "The semantics correspond very well with Java," he said.
Abstraction still deemed important
Also, others wondered if the integration of Java would mean that 6.001 would not remain as a course to teach abstract programming concepts which could be applied towards many languages, Meyer said.
"The goal of 6.001 has never wavered from teaching programming concepts rather than any particular language," he said.
"We continue to believe that the most important programming concepts, which center around abstraction and modularity as a means to manage program complexity, are more clearly illustrated in Scheme than most other languages, which is why we use it," Meyer said.
The class continues to be improved as weak areas of the Scheme language are refined and new programming trends are addressed, he said.
6.170 to feature Java instead
While 6.001 will be taught sans Java this semester, 6.170 is utilizing the language this term, said Professor of Electrical Engineering and Computer Science Barbara H. Liskov, who is teaching the course.
The new language seems to be working out fine, she said.
"There's been a desire to move 6.270 to a language that people will actually use on the outside," Liskov said. The course was moved into Java because the language has fairly clear mechanisms that correspond with the concepts taught in the course, she said.
These features include "complete compile-time type checking and garbage collection make it easier to explain concepts."
However, the version of Java used in 6.170, PolyJava, will not be usable on PCs, Liskov said.
"That translator doesn't run on the PCs yet," she said.
In the spring, there should be version that runs in any environment, to make it easier, Liskov said. We would "like to let students who have their own PCs be able to do at least portions of the problem set at home."
In the past, 6.170 has been taught in a variety of languages. Last fall, the course was in C++, and in the spring, it was taught in Clu.
Jennifer Lane contributed to the reporting of this story.