Readings | Laboratory in Software Engineering | Electrical Engineering and Computer Science | MIT OpenCourseWare Browse Course Material Syllabus Calendar Readings Lecture Notes Recitations Assignments Exams Projects Related Resources Course Info Instructors: Prof. Daniel Jackson Prof. Srini Devadas Course Number: 6.170 Departments: Electrical Engineering and Computer Science As Taught In: Fall 2005 Level: Undergraduate Topics Engineering Computer Science Software Design and Engineering Learning Resource Types notes Lecture Notes assignment Programming Assignments menu search Give Now About OCW Help & Faqs Contact Us search Give now About OCW help & faqs contact us Course Info Laboratory in Software Engineering Syllabus Calendar Readings Lecture Notes Recitations Assignments Exams Projects Related Resources Hide Course Info Readings arrow_back browse course material library_books Recommended Textbooks There are no required textbooks. We recommend two books: Liskov, Barbara, and John Guttag. Program Development in Java: Abstraction, Specification, and Object-Oriented Design. Reading, MA: Addison-Wesley, 2000. ISBN: 0201657686. Bloch, Joshua. Effective Java: Programming Language Guide. Reading, MA: Addison-Wesley, 2001. ISBN: 0201310058. The Liskov book parallels the course material closely; it’s a good book for background reading. The Bloch book explains, in about 60 short items, some key ideas in program style, as well as some subtleties of Java; it’s perhaps better appreciated when you have some familiarity with Java and want to delve deeper. Software Engineering References Some other excellent books you should consider for your reference library on software engineering are: Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley, 1995. ISBN: 0201633612. The seminal book on design patterns, usually referred to as the “Gang of Four book”. Organized as a catalog. Fowler, Martin. Analysis Patterns: Reusable Object Models. Reading, MA: Addison-Wesley Professional, 1996. ISBN: 0201895420. A book on object models of problems, organized in the style of the “Gang of Four book”. Notation differs slightly from the notation we’ll use, but that shouldn’t be a major obstacle. ———. Refactoring: Improving the Design of Existing Code. Reading, MA: Addison-Wesley, 1999. ISBN: 0201485672. A book on techniques for restructuring code to make it more readable, extensible, and maintainable without changing its meaning. Particularly helpful for those coming from a non-object-oriented background. Examples are presented in Java. Jackson, Michael. Software Requirements and Specifications. Reading, MA: Addison-Wesley and ACM Press, 1995. ISBN: 0201877120. A collection of short and entertaining essays on software development. One of the only books to explain clearly the difference between ‘requirements’ and ‘specifications’. Learning Java The course is not about Java, but you will be need to learn Java in the first week or so. Some books you might find helpful are: Horton, Ivor. Beginning Java 2: JDK 5 Edition. New York, NY: Wiley Publishing, 2004. ISBN: 0764568744. Flanagan, David, and Brett McLaughlin. Java 1.5 Tiger: A Developer’s Notebook. Cambridge, MA: O’Reilly Publishing, 2004. ISBN: 0596007388. This book can also be read online on Safari through MIT Libraries (requires certificates). The Flanagan and McLaughlin book should suit those who already know some Java (we will be using Java 5 this term). Those who don’t know Java are better off with the Horton book, which is a self-contained tutorial for the language. A more advanced book on Java, which just came out is: Bloch, Joshua, and Neal Gafter. Java Puzzlers: Traps, Pitfalls, and Corner Cases. Reading, MA: Addison-Wesley Professional, 2005. ISBN: 032133678X. It contains a very entertaining and thought-provoking collection of puzzlers that elucidate subtle aspects of Java. Java References Other books on Java include: Arnold, Ken, James Gosling, and David Holmes. The Java Programming Language. 3rd ed. Reading, MA: Addison-Wesley, 2000. ISBN: 0201704331. A brief explanation of Java. Assumes more background; much less explanation about how to use Java’s features. User interface libraries are not discussed. Details online. Gosling, James, Bill Joy, and Guy Steele. The Java Language Specification. 3rd ed. Reading, MA: Addison-Wesley, 2005. ISBN: 0321246780. The official reference for Java by its inventors. Good for reference, but not an easy way to learn Java. Available as a book, or online. Flanagan, David. Java in a Nutshell. 4th ed. Cambridge, MA: O’Reilly Publishing, 2002. ISBN: 0596002831. A reference book rather than a tutorial. Succinct but covers a lot. Assumes knowledge of a language like C. Details online. Eckel, Bruce. Thinking in Java. 3rd ed. Upper Saddle River, NJ: Prentice Hall, 2002. ISBN: 0131002872. Course Info Instructors: Prof. Daniel Jackson Prof. Srini Devadas Course Number: 6.170 Departments: Electrical Engineering and Computer Science As Taught In: Fall 2005 Level: Undergraduate Topics Engineering Computer Science Software Design and Engineering Learning Resource Types notes Lecture Notes assignment Programming Assignments Accessibility Creative Commons License Terms and Conditions MIT OpenCourseWare is an online publication of materials from over 2,500 MIT courses, freely sharing knowledge with learners and educators around the world. Learn more Accessibility Creative Commons License Terms and Conditions PROUD MEMBER OF : © 2001–2022 Massachusetts Institute of Technology