These are the resources used 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 reenforce 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. Expect this list to change, although we will commit to freezing the schedule and videos for each upcoming week by the end of the previous Thursday so you will be able to watch the correct videos and complete the survey for that week.
The materials roughly break down into the 13 weeks of the standard academic semester. Readings and videos are available for most course concepts.
- Readings:
- Videos:
- Course Introduction
- Capstone Project Overview
- Running Example Introduction
- Programming Language Introduction
- Introduction to Concurrency and Asynchronous Development: Part 1
- Introduction to Concurrency and Asynchronous Development: Part 2
- Introduction to Concurrency and Asynchronous Development: Part 3
- Readings:
- Videos:
- Readings:
- Videos:
- Readings:
- Videos:
- Readings:
- Videos:
- Readings:
- Videos:
- Introduction to Abstraction
- Structured Programming
- Decomposition
- Encapsulation
- Information Hiding
- Constant Change
- Design representations:
- API design:
- Readings:
- Videos:
No readings or videos.
- Readings:
- Videos:
- Readings:
- Videos:
- Readings:
- Videos:
- Information security:
- Ethics:
- Intellectual property:
- Readings:
- Videos:
- Readings:
- Videos:
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.