1.124J | Fall 2000 | Graduate

Foundations of Software Engineering


This class was also offered in Course 13 (Department of Ocean Engineering) as 13.470J. In 2005, ocean engineering subjects became part of Course 2 (Department of Mechanical Engineering), and the 13.470J designation was dropped in lieu of 2.159J.

Course Meeting Times

Lectures: 2 sessions / week, 1.5 hours / session

Recitations: 1 session / week, 1 hour / session


1.00 or knowledge of an object-oriented language.


The course is broken into four phases, each of which lasts approximately one month. Phase I will give you a grounding in the basics of Object Oriented Programming and the C++ language. Phase II will introduce Java® and some of the basic algorithms and data structures, such as arrays, trees, searching, sorting, geometric reasoning etc. Phase III will introduce the Java® programming language, which will be used for your term projects. Phase IV will be a final project to give you a chance to put your new knowledge into practice on a challenging project. The project this year will focus on building a simulation to demonstrate a physical principle of your choice.

In summary:

Phase I: C++ and OOP
Covers classes and objects, inheritance, virtual functions, abstract classes, polymorphism

Phase II: Algorithms
Searching and sorting methods

Phase III: Java®
Java applications and applets, Abstract Windowing Toolkit, Graphics, Image Processing, Threads. Integrating Java ®and C++.

Phase IV: Project
Selected advanced topics in Java® and C++. Simulation (term project) using Java® and/or C++.


This course has the following assignments:

7 Problem Sets (1-7): 40%
2 Quizzes: 30%
1 Project: 25%
1 Class Presentation: 5%

Required References


Lippman, S. and J. Lajoie. C++ Primer. 3rd ed. Reading, MA: Addison Wesley Professional. April 1998. ISBN: 9780201824704.

Sedgewick, R. Algorithms in C++. Reading, MA: Addison-Wesley Longman, Incorporated. June 2001. ISBN: 0201849380.

Campione, M., K. Walrath, and A. Huml. The Java® Tutorial. 2nd ed. Upper Saddle River, NJ: Prentice Hall PTR, December 1999. ISBN: 9780201485585.


  • Deitel, H. and P. Deitel. C++ How to Program. 4th ed. Upper Saddle River, NJ: Prentice Hall PTR. August 2002. ISBN: 9780130384744.
  • Stroustrup, B. The C++ Programming Language. 3rd ed.
  • Winston, H. On to C++. 2nd ed.
  • Johnsonbaugh & Kalin. Object Oriented Programming in C++. 2nd ed. Upper Saddle River, NJ: Prentice Hall, August 1999. ISBN: 9780130158857.
  • Cline, M., M. Girou, and G. Lomow. C++ FAQs. Reading, MA: Addison Wesley Professional, December 1998. ISBN: 9780201309836.


  • Weiss, M. Algorithms, Data Structures and Problem Solving with C++. Reading, MA: Addison Wesley, November 1999. ISBN: 9780201612509.
  • Buy at MIT Press Cormen, T., C. Leiserson, and R. Rivest. Introduction to Algorithms. Cambridge, MA: MIT Press. September 2001. ISBN: 9780262032933.


  • Horstmann, C. and G. Cornell. Core Java® 2: Fundamentals. Upper Saddle River, NJ: Prentice Hall PTR, August 2002. ISBN: 9780130471772.
  • Arnold, K., J. Gosling, and D. Holmes. The Java® Programming Language. 3rd ed. Upper Saddle River, NJ: Prentice Hall PTR, June 2000. ISBN: 9780201704334.
  • Deitel, H. and P. Deitel. Java® How to Program. 4th ed. Upper Saddle River, NJ: Prentice Hall, August 2001. ISBN: 9780130341518.
  • Java® 2 Platform API Specification.

Academic Honesty Policy

The computer intensive nature of 1.124 changes some of the traditional ways in which homework sets are turned in and graded. But the fundamental principles of academic honesty remain the same as always. All students are expected to adhere to the highest possible ethical standards in all aspects of their work. In particular, each student should be completely responsible for his or her own work. Wherever there is any doubt students should err on the side of conservatism and keep their thoughts and solutions to themselves. 1.124 problem sets are not intended to be team projects or group endeavors (unless clearly stated on the problem set). You should conceptualize, solve, and write up each problem yourself to gain maximum benefit from the homework assignment. If you have any doubt about what is unacceptable collaboration speak to your TA or to the Instructor.

Remember that your conduct in 1.124 and, more generally, at MIT is establishing habits of professional honesty that are likely to remain with you throughout your career. Keep your long term interests in mind if you are tempted to step beyond the bounds of propriety. Reality cannot be faked. Do not be tempted to claim knowledge that you have not gained.

Specific rules are as follows:

While you may discuss general approaches to solving problems with your fellow students, you may not copy parts of other student’s work or do the problem sets jointly. This particularly applies to computer programs.

You may seek other student’s advice in debugging your programs. However, their assistance should be limited to determining what is wrong with your program rather than rewriting large sections of it for you.

You may copy and modify programs given in the lecture notes or in class by any of the instructors.

(Adapted from Course 1.00 Guidelines)

Course Info

Learning Resource Types
Exams with Solutions
Presentation Assignments
Programming Assignments with Examples
Written Assignments