Software Design teaches students how to design better software at a variety of different levels. Beginning at the algorithm level (in Unit 0) and up through functions (Unit 1), classes (Unit 2 and 3) and finally component and system design (Unit 4), Software Design helps students evaluate the quality of a design, come up with better designs, and appreciate good design when they see it. This is accomplished by providing tools with which students can capture design ideas, analyze designs, and communicate designs to other engineers. Software Design also provides a suite of metrics, each of which providing a lens through which they can see the benefits and deficits of various design options. Additionally, Software Design provides tools and techniques allowing students to build quality into their programs. Each of these tools and techniques build on each other in a carefully orchestrated progression. Finally, Software Design provides a collection of idioms, best practices, and design patterns there were carefully collected from researchers and practitioners the world over.
James Helfrich received his Bachelor’s Degree and Master’s Degree from the University of Pennsylvania, and his PhD from Idaho State University. After working as a Software Developer and Program Manager at the Microsoft Corporation for 11 years on the Office family of product, he began teaching Software Engineering at Brigham Young University - Idaho. Dr. Helfrich has taught thousands of students and prepared them for high paying software development jobs. Dr. Helfrich has written numerous scholarly articles on a variety of topics and has published four textbooks.
Software Design teaches students how to design better software at a variety of different levels. Beginning at the algorithm level (in Unit 0) and up through functions (Unit 1), classes (Unit 2 and 3) and finally component and system design (Unit 4), Software Design helps students evaluate the quality of a design, come up with better designs, and appreciate good design when they see it. This is accomplished by providing tools with which students can capture design ideas, analyze designs, and communicate designs to other engineers. Software Design also provides a suite of metrics, each of which providing a lens through which they can see the benefits and deficits of various design options. Additionally, Software Design provides tools and techniques allowing students to build quality into their programs. Each of these tools and techniques build on each other in a carefully orchestrated progression. Finally, Software Design provides a collection of idioms, best practices, and design patterns there were carefully collected from researchers and practitioners the world over.
James Helfrich received his Bachelor’s Degree and Master’s Degree from the University of Pennsylvania, and his PhD from Idaho State University. After working as a Software Developer and Program Manager at the Microsoft Corporation for 11 years on the Office family of product, he began teaching Software Engineering at Brigham Young University - Idaho. Dr. Helfrich has taught thousands of students and prepared them for high paying software development jobs. Dr. Helfrich has written numerous scholarly articles on a variety of topics and has published four textbooks.