There are two required textbooks for 5828 this semester and one optional textbook.
Pilone and Miles's book "Head First Software Development" is another entry in O'Reilly's excellent set of Head First books. We will use this book to introduce the basic concepts and practices of modern software development including life cycles, planning, requirements, design, development, testing, and configuration management. I will supplement this material with material from other "more academic" sources such as Fred Brook's No Silver Bullet article and past textbooks used from previous versions of this class. Between our textbook and this other material, you will gain a comprehensive look at the software engineering field both past and present.
Magee and Kramer's book "Concurrency: State Models & Java Programming" is in its second edition and presents a model-based approach to designing and implementing multi-threaded systems. It shows students the utility of software models and how such models can be implemented. Finally, it provides software that allows us to construct, analyze, and visualize models of concurrent behavior for multi-threaded systems. Students will get a chance to use this software to iteratively construct software models of concurrent systems as well as to model the concurrent behavior of the systems they construct for their semester projects.
Daniel Jackson's book "Software Abstractions" presents another example of using model-based software engineering to tackle another difficult issue that arises in the design and development of large software systems, namely software abstractions. Or, put another way, what interface is your software system providing to the external world? This textbook is backed by a powerful set of software tools that will again allow students to apply the techniques learned in lecture to real-world modeling problems, including to issues that will arise in the design of their semester projects. This textbook is optional as Prof. Anderson will present all the information you need to make use of the associated tools that come with this book in lecture. However, I highly recommend buying it as it formalizes an aspect of software engineering that is treated informally in practically all software engineering textbooks!