As an introduction to software engineering, this course is about building software effectively. You will apply good practices, effective design techniques, and development tools within a team project to create an application with a graphical user interface.

The focus is largely practical, with broad coverage in topics such as: object-oriented design, user interfaces, unit testing, design patterns, and refactoring.

Communication skills, team dynamics, working with a “customer”, and creativity are also important factors in the course project. The knowledge, skills, and experience you gain will be invaluable in your future software development projects.


We will learn about applying software engineering concepts to design and implement interactive applications.

One effective way to build such applications is to apply object-oriented design and use software components. To be useful to end users, the design of these applications must also be guided by usability principles. The course involves a team project in building a well-designed Java/Android application with a sophisticated graphical user interface.

By the end of this course, you will have a strong background in basic software engineering concepts. Also, you will have the skills to implement interactive applications in Android. You will learn to propose and think critically about software and user interface designs.

Students are expected to participate in all classes and labs.


CMPUT 201 or 275

Course Topics



These videos are of varying quality.

Building an app start to finish no editting:


Copyright 2020 Abram Hindle, Ken Wong

Original Slides by Ken Wong