Notice: CMPUT 301 in Winter 2023

CMPUT 301 in Winter 2023 is in person. Your groups are formed from the SAME lab section (different instructors are fine).


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

Notice: CMPUT 301 in Winter 2022

It was online.

Notice: CMPUT 301 in Winter 2021

I am going to be teaching CMPUT 301 in Winter 2021, remotely regardless of what the university decides.

It will be a synchronous course. You will have to attend lectures as I give them. There will be in class exercises that are synchronized.

There will be group work where you are expected to synchronize within your labs.

If we’re forced on campus in winter the actual lecture will still be online and you’re free to go that classroom and stream the lecture on the projector. I will not be there.

This will be a very synchronous online course with group work.