Computer Science 370: Software Design

Credits 4

What makes code beautiful? We consider how to design programs that are understandable, maintainable, extensible, and robust. Through examination of moderately large programs, we will study concepts including object-oriented design principles, code quality metrics, and design patterns. Students will learn design techniques such as Class-Responsibility-Collaborator (CRC) cards and the Unified Modeling Language (UML), and gain experience with tools to support large-scale software development such as a version control system and a test framework. Students will apply these concepts, techniques, and tools in a semester-long, team software development project. Students enrolling in Computer Science 370 also will be required to enroll in an associated laboratory course (Computer Science 370L). Weekly laboratory sessions will include time for design critiques, code reviews, and supervised teamwork


Includes a required corequisite lab, Computer Science 370L.