Software Architecture
The most important aspects of the internal design of a software system.
A good architecture is important, otherwise it becomes slower and more expensive to add new capabilities in the future.
Design patterns
Design patterns are reusable solutions to common problems in software design. They're templates designed to help you write code that's easy to understand and reuse.