Juan Pablo Hourcade teaching a class at the University of Iowa.

spring 2024

Human-Computer Interaction - Informatics
The basic theories, principles, and guidelines for the design and evaluation of human-computer interactions. Topics include usability and user experience, user-centered design, quantitative and qualitative evaluation of user interfaces (e.g., expert reviews, usability testing), societal and ethical issues, and front-end development using HTML, Bootstrap, JavaScript, and Vue.js.

spring 2023

Human-Computer Interaction - Informatics
The basic theories, principles, and guidelines for the design and evaluation of human-computer interactions. Topics include usability and user experience, user-centered design, quantitative and qualitative evaluation of user interfaces (e.g., expert reviews, usability testing), societal and ethical issues, and front-end development using HTML, Bootstrap, JavaScript, and ReactJS.

spring 2022

Human-Computer Interaction - Informatics
The basic theories, principles, and guidelines for the design and evaluation of human-computer interactions. Topics include usability and user experience, user-centered design, quantitative and qualitative evaluation of user interfaces (e.g., expert reviews, usability testing), societal and ethical issues, and front-end development using HTML, Bootstrap, JavaScript, and ReactJS.

fall 2021

Introduction to Informatics
A graduate level course introducing computational thinking, programming, and fundamental aspects of computer science. Topics covered include basic components of programming including expressions, operators, control structures, data structures, and algorithms in the Python programming language, presented in the context of data-oriented applications.

spring 2021

Principles of Computing
Introduction to computing for students seeking a broad overview of the discipline. Students acquire necessary concepts and skills to apply computing principles and resources effectively in their chosen profession. Topics include: current computing infrastructure, applications, computational thinking, introduction to web development, overview of computer science areas, being a smart citizen/consumer, and computing and democracy.

spring 2020

Research Topics in Human-Computer Interaction
This course provides an introduction to research in the field of human-computer interaction. It introduces students to conducting research experiments and to the latest research in human-computer interaction.

fall 2019

Human-Computer Interaction
Basic theories, principles, and guidelines for design and evaluation of human-computer interactions; design methodologies (e.g., participatory design, low- and high-fidelity prototyping), user interface technologies (e.g., input and output devices, interaction styles), quantitative and qualitative evaluation of user interfaces (e.g., expert reviews, usability testing).

spring 2019

Programming for Informatics
An introduction to programming, computing principles and fundamental aspects of computer science. Topics covered include programming in Python, fundamentals of relational databases, algorithmic idioms, computational complexity, and example applications.

fall 2018

Child-Computer Interaction
This course covers the design of interactive technologies for children. Topics include child development concepts and their relevance to technology design, how usability principles and heuristics apply to children, design methods, and a review of existing research on technologies that support children in creativity and problem solving, collaboration and communication, experiencing media, learning specific content, and promoting health.

spring 2018

Research Topics in Human-Computer Interaction
This course provides an introduction to research in the field of human-computer interaction. It introduces students to conducting research experiments and to the latest research in human-computer interaction.

Informatics Project
Semester-long capstone course for all informatics majors. Students, typically working in small groups, will design, implement, document, and test a system using appropriate software tools. A sample project might be an information management tool consisting of a database system with a Web-based front-end.