Readings
There are no required readings, but students may find the additional resources helpful.
The following lists of (also old) books and book chapters cover many of the ideas from this course:
Goetz, Peierls, Bloch, Bowbeer, Holmes, Lea. Java Concurrency in Practice. Addison-Wesley, 2006
One of the most comprehensive treatments of the concurrency mechanisms in Java, and how to use them.
Bloch. Effective Java, Second Edition. Addison-Wesley, 2008.
Northeastern’s library makes the on-line version available to all students.
The guidelines in this are of use to nearly any Java programmer. The chapters on concurrency are of particular relevance to this course.
Armstrong. Making reliable distributed systems in the presence of software errors. Phd Thesis, 2003
Joe Armstrong and his collaboraters set out to create a paradigm for concurrency and distributed computing. The result was the Erlang language and OTP environment, famous for enabling systems with "nine nines" reliability (99.9999999% availability). His dissertation relates the design philosophies that informed the project and many of the practices employed in building such systems.
Thomas. Programming Elixir, 1.6. Addison-Wesley, 2018
Northeastern’s library makes the on-line version available to all students.
An overview of both the basic aspects of the Elixir language as well as its concurrency mechanism.
Gamma, Helm, Johnson, Vlissides. Design Patterns. Addison-Wesley, 1995
While editors keep dictionaries and style guides on their shelves, beginning software developers put this book on their desk.
Beck. Extreme Programming Explained. Addison-Wesley, 1999
Beck is one of the first "explainers" of test-driven and extreme programming. He picked it up from 1980s academics, with whom he shared lab space in the 1990s. This book explains the whole eco-system of test-driven, example-driven, iterative software design and coins the phrase "extreme" programming. The philosophies are reminiscent of those of Fundamentals I and II—
scaled to size. The book is a handy reference of how to approach software development in this style, though it could have been written as a 10 page essay.
Northeastern’s library currently makes the on-line version available to all students.
Beck also wrote an equally concise book on agile programming. You may wish to look into this one, too.
Williams, Kesler. Pair Programming Illuminated. Addison-Wesley, 2002
Williams conducted extensive research under Kesler’s guidance on pair programming: the what, the how, its benefits, its potential downsides, the common misunderstandings, etc. This book presents her dissertation results as an easily accessible guide to the practice.
Northeastern’s library currently has a physical copy available for request.