Courses offered at UC Davis, 2018 -
Note: The page has NOT been updated to reflect my current teaching as of 2024. Please reach out to me for my recent teaching focus.
ECS 164 - Human-Computer Interaction, Spring 2018 - Now
This course is an introductory HCI course for undergraduate students. Throughout this course, students will actively engage in course activities designed to familiarize students with the fundamental principles, concepts and methods for designing, prototyping and evaluating user interface and user-oriented computing applications.
Students will learn how to differentiate good versus bad designs systematically with the design principles in HCI. Students will then engage in learning how to come up with "good designs" rather than bad ones, generating and identifying good design ideas from a systematic process. Students will learn about the notion and sample techniques for fast-prototyping and using low-fidelity prototypes to support communication in and out of a design team. Students will learn how to evaluate their designs, tightly connecting to the initial questions on the identification of good designs. Going through the design cycle will help students to see the sophistication and complexity underlying the design activities, which further motivate advanced HCI research topics, such as refined design processes, concepts and methods for understanding users, novel interaction techniques, and designs to support multi-person collaboration.
Specific learning goals of this course include: (1) being able to use and discuss the key concepts of HCI, (2) being able to engage in the process of user-centered design activities for system design and prototyping, (3) being able to critically discuss and evaluate the usability of existing products, (4) knowing the range of tools and methods for understanding users and identifying user needs, (5) having the awareness of advanced HCI topics and the current state of art.
Link: Course website
Courses offered at NTHU, 2012 - 2017
ISA5578/CS5441 Social Computing (ISA/CS graduate course)
The course is about understanding key issues around social computing, a field of study concerning with using computing techniques and artifacts to support, mediate, and understand aspects of social behaviors and social interactions. Today, numerous instances and models of social computing are prevalent among end-users, such as Wikipedia, social networking sites (e.g., Facebook), micro blogging (e.g., Twitter), photo sharing (e.g., Flickr), instant messaging (e.g., MSN) and so on. The flourishing of social computing raises the needs to obtain deeper understanding about how these technologies influence human behaviors, and to figure out how to improve existing designs and devise new social computing models.
One way to think about social computing is to focus on constraints, factors that prevent certain processes from happening. For example, physical distance is one constraint that makes it difficult for people to communicate in days prior to the availability of telephone. In social computing, nevertheless, constraints can come from multiple sources. Some of the constraints are more clearly technical, while many of them can be non-technical. For example, users’ limited capabilities in communication and collaboration, existing social practices of friend-making, and cultural differences in behaviors can all be non-technical constraints prescribing what technical features are likely or unlikely to be useful.
It is the state-of-the-art of social computing research and practice to take both technical and human factors into consideration, and perform analyses and design at the level of “socio-technical systems”, which are abstract systems consisting of both technical components (e.g., the software layer of Facebook) and people interacting with one another over the mediation of technologies (e.g., users of Facebook). This course will guide students to take a close look at some prominent ways that this approach functions in the world today, and to understand certain principles and techniques of social computing.
Link: Course syllabus for Social Computing
ISA5651 Graduate Seminar in Information Systems and Applications
Seminar schedule for Spring 2014
Seminar schedule for Fall 2014
Seminar schedule for Fall 2015
Seminar schedule for Spring 2016
Seminar schedule for Fall 2016
Seminar schedule for Spring 2017
CS4740 Social Computing Application Design (CS undergraduate course)
The course focuses on the technical design of social computing software for mediating people’s online communication and enabling new ways of social interaction and collaboration. Today, numerous instances of social computing are prevalent among end-users, including social networking sites (e.g., Facebook), microblogging (e.g., Twitter), photo sharing (e.g., Flickr), instant messaging (e.g., MSN) and so on. The flourishing of social computing raises the needs for computer science students to know more about the function and design of social computing systems, including how users interact with one another over the mediation of social software tools and how to prototype new applications with the current technological infrastructure.
The course intends to endow students with experience and attitudes in building and evaluating social computing software by reusing and integrating existing technical components. The course has its academic root in the field of human-computer interaction (HCI), as what’s practiced in the community of ACM SIGCHI. A greater emphasis is placed on practical innovation, guiding students to engage in data analyses to understand the current scenario of social computing, and use this understanding to design social applications that create value.
This is a system building-oriented (rather than research-oriented) course for junior and senior undergraduate students interested in social computing applications. The current course complements but differs from the graduate-level course, CS5441 Social Computing, in two ways. First, the current course focuses on the technical practice of application development, while CS5441 focuses on the research of social computing. The current course thus aims to get students familiar with system building tools and resources, while CS5441 emphasizes on understanding key issues, methods, ideas and trends in the research community. Second, in terms of course structure, this course requires students to work on a series of programming assignments and a design mini-project, while CS 5441 requires students to read and comment on research papers and work on research-like assignments and a more open-ended final project.
As a tentative plan, there will be seven programming assignments in the current course. Each assignment will ask students to learn and become familiar with certain programming tools or resources beneficial for the building of social applications. In the last three to four weeks of this course, students will engage in a design mini-project, practicing the common user-centered design (UCD) method in HCI to develop new social computing applications.
Link: Course syllabus for Social Computing Application Design
CS2410 Software Studio (CS undergraduate course)
The course presents hand-on labs for the software aspect for students to be familiar with software development processes and techniques. The course aims to use sample topics and issues in the area of Human-Computer Interaction (HCI) as a software development ‘sandbox’ for educational purposes. The main goal of this class is to endow students with experience and skills in software development. Students will still learn some ideas in HCI design in the second half of the course, while this course is not intended to be a comprehensive, systematic introduction to HCI.
As a tentative plan, the class is divided into three parts, including ‘fundamentals’, ‘visualization and interaction’ and ‘interaction beyond the individual’. The fundamentals introduce the Java programming language. We will highlight the concept of Object-Oriented Programming (OOP) and help students understand the costs, benefits and value of this programming paradigm. We will introduce useful productivity tools for basic software development, such as the Eclipse IDE. The second and third parts of this class look at using Java-based tools (e.g., Processing) to design, prototype and experiment with design ideas of interactive and social computing in HCI. The final term project will be a larger software project that requires 4-5 students to jointly build a communication support tool that provides useful visualizations or feedback for introducing better computer-mediated interpersonal communication experience, such as building an enhanced chatroom that provides people explicit information and awareness of the relative ratio of contributions made by people to the conversation.
Link: Course syllabus for Software Studio
HCW . CC 3.0 BY SA . 2019