Course SummaryThis course is the largest of the introductory programming courses and is one of the largest courses at Stanford. Topics focus on the introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. The course is taught by Mehran Sahami who is Associate Professor (Teaching) of Computer Science in the Computer Science Department in Stanford.
Programming Methodology teaches the widely-used Java programming language along with good software engineering principles. Emphasis is on good programming style and the built-in facilities of the Java language. The course is explicitly designed to appeal to humanists and social scientists as well as hard-core techies. In fact, most Programming Methodology graduates end up majoring outside of the School of Engineering.
Reading Material1. Head First Java, 2nd Edition
Sierra and Bates, Head First Java, 2nd Edition, O’Reilly, 2005, ISBN 9780596009205
(Click the button below to see a preview of the book)
2. The Java Language Specification, Third Edition
James Gosling, Bill Joy, Guy Steele, and Gilad Bracha, The Java Language Specification, Third Edition, Addison-Wesley Professional, 2005
(Click the button below to see a preview of the book, 2nd edition)
3. Textbook: The Art & Science of Java
Eric S. Roberts, The Art & Science of Java: An Introduction to Computer Science, Pearson/Addison Wesley, 2007, ISBN 0321486129, 9780321486127. This book follows a modern objects-first approach to the Java programming language that introduces readers to useful class hierarchies from the very beginning.
Course Material1. Karel the Robot Learns Java
Eric Roberts, Karel the Robot Learns Java. This is a tutorial that introduces the major concepts in programming in the context of an extremely simple robot world.
2. Practice exams and solutions
Other ResourcesNot available.
A Java IDE but Eclipse is now an open source community whose projects are focused on building an extensible development platform, runtimes and application frameworks for building, deploying and managing software across the entire software lifecycle.
Discussion ForumFor discussion on this topic, please go to the relevant forum for Programming Methodology. Click the button below to open the forum page in a new window.