## CS 772: Software Architecture

Survey of advanced techniques for specifying and designing large software systems. System verification. Reliability and project management.

CS 370, CS 672, and CS 660, or consent of instructor.

### Rationale

The purpose of this course is to give students an introduction to modern software engineering. Notably, in modern software engineering, we often want to gain an accurate model or representation of human behavior under some conditions. For example, we might want to know how competing procedures impact a company's bottom line or the design of a programming language impacts professionals or students. Students will focus on learning empirical and statistical procedures for reliably analyzing software development in practice.

Syllabus### Assignments

### Slides

- An Introduction to Empirical Analysis
- An Introduction to Randomized Controlled Trials
- Survey Design
- An Introduction to Understanding Experiments
- An Introduction to Statistics in Experiments
- An Introduction to R for Statistics
- Importing and Organizing Data in R
- Graphing Data in R
- Statistical Assumptions and Testing
- Statistical Comparisons in R
- Introduction to Regression in R
- Concepts in Factor Analysis
- Practice with Factor Analysis