Software Engineering: Tools, Process, Evidence, and Responsibility

A one-semester introduction to software engineering for junior and senior undergraduates

Learner Persona

This course teaches Shae how to work effectively in a small team on a large, long-running software project, how to find, evaluate, and apply findings from empirical studies in software engineering, and how to recognize and meet their professional and societal responsibilities.

Overview

Lessons

  1. Introduction

Tools

  1. Profiling
  2. Fuzzing
  3. Packaging
  4. Accessibility
  5. Static Analysis
  6. Queueing Theory
  7. Monitoring

Process

  1. Meetings
  2. Requirements
  3. Project Status
  4. Governance
  5. Onboarding
  6. Performance Review
  7. Offboarding

Evidence

  1. Mining Software Repositories
  2. Surveys
  3. Qualitative Studies
  4. How to Lie With Statistics
  5. Conway's Law
  6. Productivity and Its Disconents
  7. Discrimination

Responsibility

  1. Business Models
  2. Intellectual Property
  3. Fraud
  4. Environmental Impact
  5. Censorship and Free Speech
  6. Labor Rights
  7. Licensure and Liability
  1. Conclusion

Appendices

  1. License
  2. Code of Conduct
  3. Contributing
  4. Bibliography
  5. Glossary

Acknowledgments

start where you are · use what you have · help who you can