Computer science and HCI
CSC318: Design of Interactive Computational Media
University of Toronto
2014-2017
Introduction
CSC318 is the first of two HCI courses offered at the Department of Computer Science. It is meant to be a survey of interaction design from user requirements gathering through functional prototyping. The course is based on the User-Centred Design methodology. Over several iterations, I have expanded it to include elements of cognition and emotion, visual design, typography, and the Jobs-to-be-done framework as an alternative to UCD deliverables such as personas and user stories. The course roughly follows a single cycle of design from ascertaining user needs through interpreting research, ideating, prototyping, and evaluating solutions.
Topics
- Definitions: User-centred design, user experience, interface design, interaction design
- Understanding humans: memory, emotion, motivation, cognition, information scents, stages of action
- Requirements gathering: literature reviews, questionnaires, interviews, observation, contextual inquiry, participatory design
- Research interpretation: personas, scenarios, user requirements, job stories, experience maps
- Conceptual models: affordances, signifiers, constraints, mappings, instructions, metaphors, idioms
- Ideation and prototyping: sketches, storyboards, paper prototypes, wireframes, mockups
- Visual design: layout, balance, negative space, colour, colour deficiency, typography, font pairing
- Evaluation: heuristic evaluation, lost-our-lease usability testing
Group Project
Students complete a semester-long project in groups of 5. The project mirrors the stages of the UCD process.
- Problem domain selection
- Literature review
- Research instrument drafts
- Revised research instruments
- Research results
- Brainstorming
- Initial prototype
- Usability testing
- Project pitch presentation
- Final write-up
Assignments
Students complete three individual assignments:
- New technology: solve a problem using a new technology's capabilities, e.g., Google's Project Soli
- Heuristic evaluation: evaluate the department's web submission portal
- Visual design: skin a wireframe with appropriate fonts, colours and visuals.
More info:
CSC108
Introduction to Computer Programming
University of Toronto
Spring 2011
Introduction
CSC108 is the first programming course in the Computer Science program, and it teaches programming fundamentals using Python. I taught CSC108 in 2011 alongside CS lecturer Paul Gries as a traditional lecture-based class.
In 2014 I was one of 5 teaching assistants hired to help transition the offering to a flipped classroom. I created 14 instructional videos and recorded voiceovers for them. The flipped classroom model is now implemented in the teaching of CSC108 in online and in-person sections alike.
Topics:
- Data types and variables
- Functions, return statements, parameters and arguments
- Boolean logic, conditionals and loops
- Modules, docstrings and __main__
- Scope, namespaces and memory
- Strings, tuples, lists, and dictionaries
- Object-oriented programming fundamentals
- Sorting algorithms and introduction to time complexity
More info:
CSC148
Introduction to Computer Science
University of Toronto
2012-2014
Introduction
CSC148 expands on the fundamentals taught in CSC108 and begins to abstract away the particulars of Python in favour of abstract data types and algorithms.
Topics:
- Objects, classes, inheritance, and self
- Test-driven development and unittests
- Queues and stacks
- Exceptions
- Recursion and iteration
- Call stack and memory model
- Lists vs linked lists
- Trees and tree traversals
- Binary search and binary search trees
- Priority queues, heaps, and heapify
- Sorting algorithms: bubble, insertion, selection, quicksort, mergesort, heapsort, timsort
- Time complexity
More info:
Back to Teaching