CSCI 223(S) Software Development (Q)
Building large software systems introduces new challenges to software development. Large software is built in teams over a period of several years. Typically, no individual on the team understands the entire system. In this setting, how can we build software that we are certain will work? How can we build software that is easy to understand and modify so that we can produce new versions of software with confidence that we will not break it? In this course, students will learn techniques and tools to help them address these problems and develop larger software projects, improving their skills in designing, writing, debugging and testing software. Topics include design patterns, UML, designing for maintainability, software architecture, rigorous testing, version control, project management and advanced coding techniques, including concurrency and fault tolerance. Evaluation will be based primarily on lab assignments, examinations, and a software project developed by a small team. Prerequisite: Computer Science 136. Includes a 1 1/2 hour weekly lab. PROJECT COURSE