Teaching

Software Engineering (IT) (COMPSCI5059, 2022-2025, approx. 300 Students)

Graduate course, University of Glasgow, School of Computing Science (Masters in Information Technology Program), 2025

I am the coordinator of this graduate-level course offered mainly to the students of Information Technology Masters Program. The course is taught over two semesters: During the Fall (first) semester the course introduces students to the processes behind building software (e.g., Are we building the right thing? How to manage a project), covering agile software development practices, including Lean Software Development, Scrum and Kanban. The topics covered during the Spring (second) semester comprise good coding practices (e.g., reducing coupling, improving cohesion, error handling, safe classes and packages), unit testing and design patterns (e.g., singleton, iterator, composite, creational patterns).

Professional Software Development and Team Project (COMPSCI4015, 2021-2025, approx. 300 Students)

Undergraduate course, University of Glasgow, School of Computing Science, 2025

The course, which is also taught throughout both semesters of an academic year (Fall and Spring semesters), introduces the students to modern software development methods and techniques for building and maintaining large systems. The course is delivered according to the Flipped Classroom Teaching Model and aims to: (1) prepare students to apply modern software development methods and techniques presented to them in the context of an extended groupbased software development exercise; and (2) make the students aware of the professional, social and ethical dimensions of software development. My responsibilities in this course comprise supervising ∼10 project teams, marking their project artifacts (e.g., GitLab repositories, dissertations), and marking exam papers (course coordinator : Dr. Tim Storer).

Data Structures and Algorithms (DIT181, Spring 2018-2020, approx. 85 Students)

Undergraduate course, University of Gothenburg, Dept. of Computer Science and Engineering (SEM Bachelor Program), 2020

[Example course materials: Download here.] Students learn about algorithm complexity, recursion, sorting algorithms, and data structures (e.g., linked lists) and abstract data types (e.g., stacks and queues). In Spring 2018 term, I designed the course from scratch. In Spring 2019 term, I redesigned this course introducing three more course components besides lectures so that this instance consisted of the following course components: (1) Lectures, (2) hands–on programming sessions, (3) problem sessions and (4) supervision sessions. I prepared all course material of each component from scratch.

Mini Project: Team Programming (DIT092, Fall 2019, approx. 85 students)

Undergraduate course, University of Gothenburg, Dept. of Computer Science and Engineering (SEM Bachelor Program), 2019

Students learn about project management and human aspects (e.g., group dynamics, cognitive biases during lectures, that are complemented by hands-on exercises done in class. Students put theory they learn during lectures into practice while working on a software development project in groups.

Mini Project: Systems Development (DIT112, Spring 2018, approx. 50 students)

Undergraduate course, University of Gothenburg, Dept. of Computer Science and Engineering (SEM Bachelor Program), 2018

This is the updated version of the “Project: Systems Development” course (see below) in the new curriculum where the scope of the autonomous mini-car system to be developed is delimited to fewer features.

Project: Changing Software Development Process (DIT037, Fall 2017, approx. 15 students)

Undergraduate course, University of Gothenburg, Dept. of Computer Science and Engineering (SEM Bachelor Program), 2017

This is an elective course where students are expected to conduct an exploratory research study in industrial settings. This instance continue from the previous with two additional tutorials that I prepared for data collection and analysis techniques.

Project: Systems Development (DIT524, Spring 2017, approx. 65 Students)

Undergraduate course, University of Gothenburg, Dept. of Computer Science and Engineering (SEM Bachelor Program), 2017

This is a software development project course, which employs problem–based learning technique. Students work in groups developing a system for autonomous mini–cars and develop skills in requirements analysis, software design, quality analysis, programming and testing.

Applied Research Methods (MT8103, Fall 2012, approx. 30 students)

Ph.D./M.Sc. course, Ryerson University, 2012

Students learn about qualitative and quantitative research methods. In this course, I lectured on data collection methods in field studies (e.g., interviews, questionnaires, shadowing, observation synchronized shadowing, participant observation, think aloud protocols), statistical analysis techniques, qualitative measures and construct validity.