Skip to content

Principles of Software Design Course taught at Armenian-French (Toulouse) University

Notifications You must be signed in to change notification settings

aregm/system-design-course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Principles of the Software Design Course

2024-2025

Educational Objectives

This is a mixed under- and graduate-level elective course on the basic principles of designing software systems. The course is intended to create a foundation for designing good software and provide the tools for practical usage in the industry. This course has a heavy emphasis on small programming projects. There are also readings assigned for each class and a final exam. Upon successful completion of this course, the student should be able to:

  • Understand key principles of software design.
  • Develop the ability to critique and improve software designs.
  • Explore different methodologies and apply them in software design.
  • Gain insights into real-world software engineering challenges and solutions.
  • Apply best practices for software construction.

Expectations and goals

We profoundly believe that there are only two main problems worth teaching to grow a good software architect - system decomposition and abstraction creation (composition). Everything else can be found in standards and normative documents. We focus on creating a sense of systems and abstractions, processes for decomposing and composing systems. We try to bring those notions into a language – a pattern language similar to the one that was created in the seminal Christopher Alexander’s book “Pattern Language” and, in our humble opinion, was misused in the GoF “Design Patterns” book. This course explores the principles and practices of software design and architecture, focusing on the philosophies and strategies outlined in essential texts. Students will learn to apply these concepts to create robust, maintainable, and scalable software systems.

Course materials

Required materials

  • John Osterhout, Philosophy of Software Design
  • George Fairbanks, Just Enough Software Architecture, Risk-based approach.
  • Fred Brooks, Design of Design
  • Juval Löwy, Righting Software

About

Principles of Software Design Course taught at Armenian-French (Toulouse) University

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages