Teaching

D'Mello teaching philosophy is grounded in theories of learning from the cognitive and social sciences. Simply put students learn: (1) by telling and doing; (2) when the world breaks down and they must put it back together again; (3) from collaboration and discursive activities; and (4) in a supportive, inclusive, and mastery-oriented environment.

University of Colorado Boulder (2017-present)

Introduction to Artificial Intelligence (Fall 2019)

Artificial Intelligence is a fascinating topic that integrates the basic scientific goal of understanding how minds work with the engineering goal of creating intelligent machines to solve real-world problems. It encompasses a number of fields including computer science, engineering, cognitive psychology, neuroscience, and philosophy. In this course, you will obtain a broad overview of the field of Artificial Intelligence (AI), including its historical, philosophical, classical and contemporary approaches, and recent trends and applications. Some (out of the many) things you will learn include how to design computers to solve complex problems, recognize patterns, to make difficult decisions with imperfect information, to plan for the future, to store and retrieve memories like humans, to sense the world like humans, and to learn from experience.

Intro to the CS PhD Program (Fall 2020; 2021)

The purpose of the course is to provide new Computer Science PhD students with the knowledge, skills, and mindset needed for success in the PhD program and beyond. Accordingly, we will cover topics pertaining to research fundamentals (What is research? What is Computer Science research?, What are the ethics of research? What is a research community? How does research funding work?), research skills (How do I find a relevant research paper? How do I read a research paper? How do I write a research paper? How do I present my research results? How do I critique a research paper?), inter-personal skills (How do I effectively collaborate with others? How do I manage conflict? How do I find and connect with my research community?), intra-personal skills (How do I manage my time?, How do I manage stress?, How do I balance research, TA, and classes?), and research success (What is research success? What is research excellence? What is research elegance? How can I tell if I’m succeeding in the PhD?).

Computer Science PhD Career Development (Fall 2020; 2021)

Learn how to make the most of your CS PhD by understanding and preparing for a career as a computer science researcher in academia, industry, and government. This is a professional development course aimed at helping students make the most of their CS PhD by exploring different career opportunities, searching for jobs, preparing application materials, practicing interviews, negotiating salaries, and so on. Students need to take this class once they complete preliminary exam and before their proposal defense.

Computer Science Colloquium (Fall & Spring 2020; 2021)

Learn about innovative research and teaching in computer science by attending talks and discussions by leading researchers and educators. Learn professional presentation skills and etiquette of participating in scientific research presentations. Students may attend during any term but they need to be signed up for this course during the term they wish to earn that credit.

Cognitive Science Research Practicum (Spring 2019; 2020; 2021)

The course is for advanced graduate students pursuing a joint Ph.D. in an approved core discipline and cognitive science who intend to conduct an independent, interdisciplinary research project in cognitive science. Research projects should integrate at least two areas within the cognitive sciences: psychology, computer science, linguistics, education, philosophy, and speech, language, and hearing sciences. Students should have commitments from two mentors for their project.

Topics in Cognitive Science (Spring 2019; 2020; 2021)

Learn about interdisciplinary innovative theories and methodologies of cognitive science by reading and attending talks and discussions on leading edge and controversial new approaches in cognitive science.

Mind Reading Machines (Spring 2018)

Can we teach computers how to read peoples’ thoughts and feelings to improve engagement, efficiency, and effectiveness? For example, can computers tell when their users are confused or frustrated, mentally zoned out, cognitively overloaded, or in an optimal mental state? This course will teach you how to make computers smarter and more human-like by reading their users’ minds (much like we do). In this interdisciplinary research-focused course, you will read, present, and discuss key papers in the fields of affective computing, attentional computing, augmented cognition, physiological computing, personality computing, among others. You will also apply what you learned by developing your own research project. By the end of the course, you will be knowledgeable about the relevant theories and technologies, have conducted hands-on research in the area, and will have sharpened your critical thinking and scientific discourse skills.

University of Notre Dame (2012-2017)

Artificial Intelligence (Spring 2012; 2013; 2014; 2015; 2017)

Artificial Intelligence is a fascinating topic that integrates the basic scientific goal of understanding how minds work with the engineering goal of creating intelligent machines to solve real-world problems. It encompasses a number of fields including computer science, engineering, cognitive psychology, neuroscience, and philosophy. In this course, you will obtain a broad overview of the field of Artificial Intelligence (AI), including its historical and philosophical foundations, classical and contemporary approaches, cognitive systems, and recent trends and applications. Some (out of the many) things you will learn includes how to design computers to play chess intelligently, to understand human language, to recognize handwriting, to detect plagiarism, to solve complex puzzles, to make difficult decisions with imperfect information, to plan for the future, to store and retrieve memories like humans, and to learn from experience.

Human Computer Interaction (Fall 2012; 2013; 2014; 2015)

You will engage in an in-depth exploration of the field of Human-Computer Interaction (HCI) including its history, goals, principles, methodologies, successes, failures, open problems, and emerging areas. Broad topics include theories of interaction (e.g., conceptual models, stages of execution, error analysis, constraints, memory by affordances), design methods (e.g., user-centered design, task analysis, prototyping tools), visual design principles (e.g., visual communication, digital typography, color, motion), evaluation techniques (e.g., heuristic evaluations, model-based evaluations), and emerging topics (e.g., affective computing, natural user interfaces).

University of Memphis (2007-2012)

Cognitive Science Seminar on Emotion, Cognition, and Computing (Spring 2011)

Entitled “Emotion, Cognition, Computation, the Cognitive Science Seminar for Spring 2011 will attempt to integrate relevant perspectives on emotions from the interdisciplinary arena encompassing the affective sciences, cognitive psychology, clinical psychology, computer science, and other related areas. Emotions are notoriously difficult to study. They have been extensively investigated by philosophers, psychologists, neuroscientists, and, most recently by artificial intelligence (AI) researchers. Philosophers study emotion conceptually in the contexts of ethics, values, etc. Psychologists study them scientifically, treating them as bodily and mental processes and experimenting with human subjects. Mostly concerned with underlying neurological processes, cognitive neuroscientists apply imaging techniques, EEG, and single cell recordings. AI researchers often develop software agents and robots with artificial emotions as motivators and facilitators of learning. They also develop agents and robots that can recognize human emotions and respond appropriately. During this semester the Cognitive Science Seminar will be devoted to the study of emotions in the context of cognition, as well as to artificial emotions in software agents.

Data Structures (Summer 2008)

Principles of object-oriented programming and software development; problem solving with recursion and abstract data types, including linked lists, stacks, queues, trees, binary search trees; basic sort and search algorithms.

Psychological Statistics (Spring 2008)

Introduction to use of statistics in psychology, with emphasis on elementary theory of measurement and computation; measures of central tendency and variability, tests of significance, correlation procedures, and an introduction to multivariate analyses, analysis of variance, and nonparametric procedures.

Seminar in Experimental Psychology (Computer Programming for Psychologists) (Fall 2007)

Developed new graduate course to teach fundamental problem solving and computer programming skills to analyze data. These include techniques for deriving problem solutions and use of basic programming concepts such as variables, constants, data types, arrays, loops, and conditionals. Intermediate concepts include reading and writing from files, functions and procedures, string manipulation, and data structures. Advanced topics include an introduction to SciPy (a scientific library in Python), Tkinter (GUI development), and automated SPSS techniques.