Introduction to Software Engineering

This is the course reader for CPSC 310 at the University of British Columbia. This course is a comprehensive introduction to how modern software systems are designed, constructed, and evolved. It is intended to be paired with a development-heavy project to better reinforce the core concepts from lecture materials and to enable concepts to be applied in practice.

The materials have been adapted over several years of use, although each section of the course may use different subsets of the readings and videos. This is a high-level overview of what the course will be about. The materials roughly break down into 6 high-level modules that are spread across the 13 week of standard academic semester at UBC. Readings and videos are available for most course concepts.

Videos throughout the reader provide additional explanations of the course material. The video below introduces the codebase that is used throughout the course reader.

License

The readings for this course are licensed using CC-by-SA. However, it is important to note that the deliverable descriptions, code implementing the deliverables, exams, and exam solutions are considered private materials. We go to considerable lengths to make the project an interesting and useful learning experience for this course. This is a great deal of work, and while future students may be tempted by your solutions, posting them does not do them any real favours. Please be considerate with these private materials and not pass them along to others, make your repos public, or post them to other sites online.