27.1 Introduction to Software Engineering


CS 61A is an introductory course that focuses on the correctness of a program. CS 61B, however, focuses on engineering software projects. These projects are larger but now require decisions between valid options by considering tradeoffs. The choice between using a LinkedList and an ArrayList, for example, is a tradeoff of runtime and implementation decisions.
Working on smaller scale projects isn't the same as larger scale projects that place more emphasis on design. These tasks are often ambiguous. In the real world, there are no specs, no hints to guide you through your project; there's also no end date where you can submit your code and be done with it.
This lecture features some light theory and then some real-world examples to illustrate these concepts. Project 3 (Build Your Own World) will allow you to embrace the challenge of large scale projects yourself.

Further Reading

Please read A Philosophy of Software Design Paperback by John Ousterhout if you are very interested in this topic.