Git Product home page Git Product logo

booklist's Introduction

CPSC-5200-01 Software Architecture and Design Outside Reading List

This is just a list of architecture and design books that are generally useful to have on your bookshelf. Most are recent, some are starting to show their age, and some are good for their historical perspective. I'll lump them into groups, but sometimes there are interesting intersections.

Quick note: Searching Amazon by ISBN isn't always possible. Use the full title name and author to narrow down your search if the ISBN results don't make sense.

Software Architecture Patterns and Styles

This collection covers a number of reference books for understanding the generic styles and patterns of software architecture. The POSA books comprise a reasonably thorough overview of the patterns you will run across in the wild, so the list starts with them.

Pattern-Oriented Software Architecture, A System of Patterns vol. 1
A System of Patterns
Buschmann, Frank et. al.
ISBN: 0471958697

Pattern-Oriented Software Architecture, A System of Patterns vol. 2
Patterns for Concurrent and Networked Objects
This book contains patterns related to service access and configuration, event handling, synchronization, and concurrency.
Schmidt, Douglas C. et. al.
ISBN: 0470059028

Pattern-Oriented Software Architecture, A System of Patterns vol. 3
Patterns for Resource Management
Resource acquisition, life cycle, and release patterns are presented in this book. Kircher, Michael et. al.
ISBN: 0470845252

Pattern-Oriented Software Architecture, A System of Patterns vol. 4
A Pattern Language for Distributed Computing
This book adds to the patterns that I discuss in Parts III and IV of this book, providing patterns related to the technical aspects of distributed systems. The patterns in this volume create a pattern language.
Buschmann, Frank et. al.
ISBN: 0470059028

Pattern-Oriented Software Architecture, A System of Patterns vol. 5
On Patterns and Pattern Languages
This volume, which wraps up the series, is an excellent source of detailed information about patterns, expanding on what you find in Part II of this book.
Buschmann, Frank et. al.
ISBN: 0471486485

Patterns of Enterprise Application Architecture
Fowler, Martin et. al.
ISBN: 0321127420

Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
Hohpe, Gregor et. al.
ISBN: 0133065103

Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services
Daigneau, Robert
ISBN: 032154420X

Data Modeling / Patterns

The Data Model Resource Book, Vol. 1: A Library of Universal Data Models for All Enterprises
Silverston, Lenb
ISBN: 0471380237

The Data Model Resource Book, Vol. 2: A Library of Data Models for Specific Industries
Silverston, Lenb
ISBN: 0471353485

The Data Model Resource Book, Vol. 3: Universal Patterns for Data Modeling
Silverston, Lenb
ISBN: 0470178450

Software Architecture Textbooks

Software Architecture: Foundations, Theory and Practice
Taylor, Richard et. al.
ISBN: 978-0470-16774-8

Software Architecture in Practice (3rd Edition)
Bass, Len et. al.
ISBN: 978-0321815736

Software Analysis and Design

Design Patterns: Elements of Reusable Object-Oriented Software
This book is also known as the Gang of Four book. It contains 23 patterns that explain how to solve many problems associated with object-oriented programming.
Gamma, Erich et. al.
ISBN: 0201633612

Object-Oriented Modeling and Design
Rumbaugh, James et. al.
ISBN:

Object-Oriented Analysis and Design with Applications (2nd Edition)
Booch, Grady
ISBN: 978-0805353402

Object Oriented Analysis (2nd Edition)
Coad, Peter
ISBN: 978-0136299813

Object Oriented Design
Coad, Peter
ISBN: 978-0136300700

Object Oriented Programming
Coad, Peter
ISBN: 978-0130326164

Analysis Patterns: Reusable Object Models
Fowler, Martin
ISBN: 978-0201895421

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition)
Larman, Craig
ISBN: 978-0131489066

Software Architecture Modeling and Design

Documenting Software Architectures: Views and Beyond
Clements, Paul et. al.
ISBN: 978-0321552686

Architecture and Design of Things you know

Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries
Cwalina, Krzysztof et. al.
ISBN: 978-0321545619

The Java Programming Language
Arnold, Ken; Gosling, James
ISBN:

Java Language Specification (2nd Edition)
Gosling, James; Joy, Bill; Steele, Guy; Bracha, Gilad
ISBN: 978-0201310085

Just some other general stuff you might want

The Pragmatic Programmer: From Journeyman to Master
Hunt, Andrew

Programming Pearls (2nd Ed.)
Bentley, Jon

Structure and Interpretation of Computer Programs (1st ed.)
Abelson, Harold
This is the book to start programming with, which is unfortunate because you've all started out the wrong way. But read this anyway. The first edition is much better in my opinion, but get either. This is available online and in print.

The Algorithm Design Manual 2nd Edition
Skiena, Steven
Get a book on algorithms and algorithm design and read it.

Introduction to Algorithms, 3rd Edition
Cormen, Thomas

The Art of Computer Programming, Volumes 1-4A Boxed Set
Knuth, Donald
This is the classic series on algorithm design. Buy it, read it, read it again.

The Art of Computer Programming, Volume 4B, Fascicle 5: Mathematical Preliminaries Redux; Introduction to Backtracking; Dancing Links
Knuth, Donald

The Art of Computer Programming, Volume 4, Fascicle 6: Satisfiability
Knuth, Donald

The MMIX Supplement: Supplement to The Art of Computer Programming Volumes 1, 2, 3 Ruckert, Martin

The Design of Everyday Things: Revised and Expanded Edition
Norman, Don
This one isn't a computing text at all. It's a short book that talks about design and why the human being who uses your product is so important

Hacker's Delight
Warren, Henry

Elements of Programming
Stepanov, Alexander
This will be the hardest book you read from this list. But read it.

Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages
Tate, Bruce

Seven More Languages in Seven Weeks: Languages That Are Shaping the Future
Tate, Bruce

The Haskell School of Music: From Signals to Symphonies
Hudak, Paul and Quick, Donya
Some light reading on building a type system from the ground up to support musical composition.

Networking

Computer Networks, 5th ed
Tanenbaum, Andrew
There are a number of editions of this book. I do not have a copy of the international edition. It's supposed to be identical the US hardcover edition. This book is expensive, see if you can get it on the used market. I have a 1st edition of this text and it still holds up at the lower layers in the ISO model.

The following three books are a series that walks from the bottom of the TCP/IP stack up through current application protocols. Do the coding exercises in them to get an undersatnding how the underlying networking software works. Plus, it's fun to write code in C that fiddles with the bits.

TCP/IP Illustrated, Vol. 1: The Protocols
Addison-Wesley
Stevens, W. Richard and Fall, Kevin R.

TCP/IP Illustrated, Volume 2: The Implementation
Addison-Wesley
Stevens, W. Richard and Wright, Gary

TCP/IP Illustrated: v. 3: TCP for Transactions, HTTP, NNTP and the Unix Domain Protocols
Addison-Wesley
Stevens, W. Richard

Unix Network Programming, Volume 1: The Sockets Networking API
Addison-Wesley
Stevens, W. Richard

booklist's People

Contributors

michaeljon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.