Software Engineering
What do we know about how to engineer reliable software-based computing systems?
textbooks on software engineering
components of the waterfall method
agile software development
reusable software components
microservices architecture
devops and automated testing and deployment