PageSourceSearch

https://toby.li/teaching/

html toby.li collected 2026-09-24 10:04:47 UTC 18,385 bytes, 1 lines download raw bytes

1<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"> <!-- begin SEO --><title>Teaching - Toby Jia-Jun Li</title><meta property="og:locale" content="en-US"><meta property="og:site_name" content="Toby Jia-Jun Li"><meta property="og:title" content="Teaching"><link rel="canonical" href="https://toby.li/teaching/"><meta property="og:url" content="https://toby.li/teaching/"> 
1<script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Organization", "url": "https://toby.li", "logo": "https://toby.li/images/toby_profile.jpg" } </script>
1 
1<script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "Person", "name" : "Toby Jia-Jun Li", "url" : "https://toby.li", "sameAs" : ["https://scholar.google.com/citations?user=-qCUO0kAAAAJ&hl=en","https://github.com/tobyli","https://twitter.com/TobyJLi"] } </script>
1 <!-- end SEO --><link href="https://toby.li/feed.xml" type="application/atom+xml" rel="alternate" title="Toby Jia-Jun Li Feed"> <!-- http://t.co/dKP3o1e --><meta name="HandheldFriendly" content="True"><meta name="MobileOptimized" content="320"><meta name="viewport" content="width=device-width, initial-scale=1.0"> 
1<script> document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; </script>
1 <!-- For all browsers --><link rel="stylesheet" href="https://toby.li/assets/css/main.css"><meta http-equiv="cleartype" content="on"> <!-- start custom head snippets --><link rel="apple-touch-icon" sizes="57x57" href="https://toby.li/images/apple-touch-icon-57x57.png?v=M44lzPylqQ"><link rel="apple-touch-icon" sizes="60x60" href="https://toby.li/images/apple-touch-icon-60x60.png?v=M44lzPylqQ"><link rel="apple-touch-icon" sizes="72x72" href="https://toby.li/images/apple-touch-icon-72x72.png?v=M44lzPylqQ"><link rel="apple-touch-icon" sizes="76x76" href="https://toby.li/images/apple-touch-icon-76x76.png?v=M44lzPylqQ"><link rel="apple-touch-icon" sizes="114x114" href="https://toby.li/images/apple-touch-icon-114x114.png?v=M44lzPylqQ"><link rel="apple-touch-icon" sizes="120x120" href="https://toby.li/images/apple-touch-icon-120x120.png?v=M44lzPylqQ"><link rel="apple-touch-icon" sizes="144x144" href="https://toby.li/images/apple-touch-icon-144x144.png?v=M44lzPylqQ"><link rel="apple-touch-icon" sizes="152x152" href="https://toby.li/images/apple-touch-icon-152x152.png?v=M44lzPylqQ"><link rel="apple-touch-icon" sizes="180x180" href="https://toby.li/images/apple-touch-icon-180x180.png?v=M44lzPylqQ"><link rel="icon" type="image/png" href="https://toby.li/images/favicon-32x32.png?v=M44lzPylqQ" sizes="32x32"><link rel="icon" type="image/png" href="https://toby.li/images/android-chrome-192x192.png?v=M44lzPylqQ" sizes="192x192"><link rel="icon" type="image/png" href="https://toby.li/images/favicon-96x96.png?v=M44lzPylqQ" sizes="96x96"><link rel="icon" type="image/png" href="https://toby.li/images/favicon-16x16.png?v=M44lzPylqQ" sizes="16x16"><link rel="manifest" href="https://toby.li/images/manifest.json?v=M44lzPylqQ"><link rel="mask-icon" href="https://toby.li/images/safari-pinned-tab.svg?v=M44lzPylqQ" color="#000000"><link rel="shortcut icon" href="/images/favicon.ico?v=M44lzPylqQ"><meta name="msapplication-TileColor" content="#000000"><meta name="msapplication-TileImage" content="https://toby.li/images/mstile-144x144.png?v=M44lzPylqQ"><meta name="msapplication-config" content="https://toby.li/images/browserconfig.xml?v=M44lzPylqQ"><meta name="theme-color" content="#ffffff"><link rel="stylesheet" href="https://toby.li/assets/css/academicons.css"/><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Source+Serif+4:ital,wght@0,400;0,600;0,700;1,400&display=swap"> 
1<script> window.MathJax = { tex: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], processEscapes: true, tags: 'all' } }; </script>
1 
1<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" async></script>
1 <!-- end custom head snippets --></head><body> <!--[if lt IE 9]><div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div><![endif]--><div class="masthead"><div class="masthead__inner-wrap"><div class="masthead__menu"><nav id="site-nav" class="greedy-nav"> <button><div class="navicon"></div></button><ul class="visible-links"><li class="masthead__menu-item masthead__menu-item--lg"><a href="https://toby.li/">Toby Jia-Jun Li</a></li><li class="masthead__menu-item"><a href="https://toby.li/publications/">Publications</a></li><li class="masthead__menu-item"><a href="https://toby.li/teaching/" class="active">Teaching</a></li><li class="masthead__menu-item"><a href="https://toby.li/students/">SaNDwich Lab</a></li><li class="masthead__menu-item"><a href="https://toby.li/files/TobyLi_CV.pdf">CV</a></li><li class="masthead__menu-item"><a href="https://toby.li/misc/">Misc.</a></li></ul><ul class="hidden-links hidden"></ul></nav></div></div></div><div id="main" role="main"><div class="sidebar sticky"><div itemscope itemtype="http://schema.org/Person"><div class="author__avatar"> <img src="https://toby.li/images/toby_profile.jpg" class="author__avatar" alt="Toby Jia-Jun Li"></div><div class="author__content"><h3 class="author__name">Toby Jia-Jun Li</h3><p class="author__bio">Assistant Professor<p><a href='https://cse.nd.edu/' target='_blank'>Department of Computer Science and Engineering</a></p><p><a href='https://www.nd.edu/' target='_blank'>University of Notre Dame</a></p></p></div><div class="author__urls-wrapper"><ul class="author__urls social-icons"><li><i class="fa fa-fw fa-map-marker" aria-hidden="true"></i> 214B Cushing Hall</li><li><a href="mailto:[email protected]"><i class="fas fa-fw fa-envelope" aria-hidden="true"></i> Email</a></li><li><a href="https://twitter.com/TobyJLi"><i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li><li><a href="https://github.com/tobyli"><i class="fab fa-fw fa-github" aria-hidden="true"></i> Github</a></li><li><a href="https://scholar.google.com/citations?user=-qCUO0kAAAAJ&hl=en"><i class="fas fa-fw fa-graduation-cap"></i> Google Scholar</a></li></ul></div></div></div><div class="archive"><h1 class="page__title">Teaching</h1><p>I am passionate about teaching! At Notre Dame, I mainly teach Human-Computer Interaction (HCI) courses in the <a href="https://cse.nd.edu/" target="_blank" rel="noopener noreferrer">Department of Computer Science and Engineering</a> at both graduate and undergraduate levels.</p><p>At Carnegie Mellon, I TA’d for two core HCI courses: 05-410/610: User-Centered Research and Evaluation and 05-391/891: Designing Human-Centered Software. I have received formal training in creating inclusive classroom environments, delivering constructive feedback, delivering effective lectures, and syllabus design through <a href="https://www.cmu.edu/teaching/" target="_blank" rel="noopener noreferrer">CMU Eberly Center for Teaching Excellence and Educational Innovation</a>. I also worked in teaching roles at the University of Minnesota for two years as a teaching assistant for CSCI 2011: Discrete Structures of Computer Science and as a teaching staff for the Coursera online MOOC “From GPS and Google Maps to Spatial Computing”.</p><div class=" list__item"><article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork"><div class="publication_row"><div class="publication_column left"> <img src="/images/teaching5_thumbnail.png" alt="Notre Dame: Human-Centered Computing Research teaser" loading="lazy"></div><div class="publication_column right"> <a href=" https://sites.google.com/view/cse60427-fall2025 " target="_blank" rel="noopener noreferrer"><b>Notre Dame: Human-Centered Computing Research </b></a><br> <i>Instructor, Fall 2021-2025</i><br> I developed a new doctoral level HCI research course for graduate students in Computer Science and Engineering at Notre Dame. This course provides an introduction to the different types of contributions, the foundational theories, and the core methods for research in HCI and human-centered research in other CS disciplines.<br> [<a href=" https://sites.google.com/view/cse60427-fall2025 " target="_blank" rel="noopener noreferrer">Course Homepage</a>]</div></div></article></div><div class=" list__item"><article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork"><div class="publication_row"><div class="publication_column left"> <img src="/images/teaching1_thumbnail.png" alt="CMU: Designing Human-Centered Software teaser" loading="lazy"></div><div class="publication_column right"> <a href=" https://www.hcii.cmu.edu/courses/designing-human-centered-software " target="_blank" rel="noopener noreferrer"><b>CMU: Designing Human-Centered Software </b></a><br> <i>Teaching Assistant, Spring 2019</i><br> DHCS is CMU’s main “introduction to HCI” course. This course introduces the skills and concepts of Human-Computer Interaction (HCI) that enable computer scientists to design systems that effectively meet human needs. A concrete illustration of the practice of HCI, this course covers iterative design processes, interactive prototype construction, discount evaluation techniques, and the historical context of HCI. I TA’d this course with Prof. <a href="http://www.chrisharrison.net/">Chris Harrison</a> in Spring 2019. My responsibilities included holding office hours, grading assignments, and help conducting project “bakeoffs”.<br> [<a href=" https://www.hcii.cmu.edu/courses/designing-human-centered-software " target="_blank" rel="noopener noreferrer">Course Homepage</a>]</div></div></article></div><div class=" list__item"><article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork"><div class="publication_row"><div class="publication_column left"> <img src="/images/teaching2_thumbnail.jpg" alt="CMU: User-Centered Research and Evaluation teaser" loading="lazy"></div><div class="publication_column right"> <a href=" https://hcii.cmu.edu/courses/user-centered-research-and-evaluation " target="_blank" rel="noopener noreferrer"><b>CMU: User-Centered Research and Evaluation </b></a><br> <i>Teaching Assistant, Fall 2018</i><br> As one of the core “flagship” courses for CMU’s Master in HCI program, this course introduces the skills and concepts of Human-Computer Interaction (HCI) that enable computer scientists to design systems that effectively meet human needs. A concrete illustration of the practice of HCI, this course covers iterative design processes, interactive prototype construction, discount evaluation techniques, and the historical context of HCI. I TA’d this course with Profs. <a href="https://www.amyogan.com/">Amy Ogan</a>, <a href="https://raelin.me/">Raelin Musuraca</a>, and <a href="https://www.linkedin.com/in/christophermconnors">Chris Connors</a>. My responsibilities included holding weekly office hours, leading recitation sessions, and designing assignments, projects, and exams.<br> [<a href=" https://hcii.cmu.edu/courses/user-centered-research-and-evaluation " target="_blank" rel="noopener noreferrer">Course Homepage</a>]</div></div></article></div><div class=" list__item"><article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork"><div class="publication_row"><div class="publication_column left"> <img src="/images/teaching3_thumbnail.png" alt="Coursera: From GPS and Google Maps to Spatial Computing teaser" loading="lazy"></div><div class="publication_column right"> <a href=" https://www.coursera.org/course/spatialcomputing " target="_blank" rel="noopener noreferrer"><b>Coursera: From GPS and Google Maps to Spatial Computing </b></a><br> <i>Teaching Staff, Fall 2014</i><br> This course is a free online course that introduces the fundamental ideas underlying spatial computing services, systems and sciences co-taught by Profs. <a href="http://www.brenthecht.com/">Brent Hecht</a> and <a href="https://www-users.cs.umn.edu/~shekhar/">Shashi Shekhar</a>. Topics covered include spatial database, spatial data mining, VGI analysis, positioning, web cartography and relevant algorithms. As of October 2014, this class has reached over 20,000 enrolled students. I served as a teaching staff for this course. My responsibilities included monitoring the discussion forum, providing academic supp
1ort for students, designing programming assignments and quizzes and recording assignment instruction videos.<br> [<a href=" https://www.coursera.org/course/spatialcomputing " target="_blank" rel="noopener noreferrer">Course Homepage</a>]</div></div></article></div><div class=" list__item"><article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork"><div class="publication_row"><div class="publication_column left"> <img src="/images/teaching4_thumbnail.png" alt="UMN: CSCI2011 Discrete Structures of Computer Science teaser" loading="lazy"></div><div class="publication_column right"> <a href=" http://www-users.cselabs.umn.edu/classes/Fall-2013/csci2011/index.php " target="_blank" rel="noopener noreferrer"><b>UMN: CSCI2011 Discrete Structures of Computer Science </b></a><br> <i>Teaching Assistant, Fall 2013 and Spring 2014</i><br> I worked as a Teaching Assistant for this course in Fall 2013 with Prof. <a href="http://www-users.cs.umn.edu/~carl/">Carl Sturtivant</a> and in Spring 2014 with Prof. <a href="http://www-users.cs.umn.edu/~kuang/">Rui Kuang</a>. Topics covered in CSCI2011 included intro-level set theory, number theory, combinatorics, probability, proof and graph theory. My responsibilities were leading two weekly 50-student recitation sessions, holding weekly office hour sessions and grading assignments/quizzes.<br> [<a href=" http://www-users.cselabs.umn.edu/classes/Fall-2013/csci2011/index.php " target="_blank" rel="noopener noreferrer">Course Homepage</a>]</div></div></article></div></div></div><div class="page__footer"><footer> <!-- start custom footer snippets --> <!-- <a href="/sitemap/">Sitemap</a> --> <!-- end custom footer snippets --><div class="page__footer-follow"><ul class="social-icons"><li><strong>Toby Jia-Jun Li</strong> &middot; Assistant Professor, University of Notre Dame</li><li><i class="fa fa-fw fa-map-marker" aria-hidden="true"></i> 214B Cushing Hall, Notre Dame, IN 46556</li></ul><ul class="social-icons"><li><a href="mailto:[email protected]"><i class="fas fa-fw fa-envelope" aria-hidden="true"></i> Email</a></li><li><a href="https://scholar.google.com/citations?user=-qCUO0kAAAAJ&hl=en"><i class="fas fa-fw fa-graduation-cap" aria-hidden="true"></i> Google Scholar</a></li><li><a href="https://github.com/tobyli"><i class="fab fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li><li><a href="https://twitter.com/TobyJLi"><i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li><li><a href="https://toby.li/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li></ul></div><div class="page__footer-copyright">&copy; 2026 Toby Jia-Jun Li. Last updated September 2026.</div></footer></div>
1<script src="https://toby.li/assets/js/main.min.js"></script>
1 <!-- start custom analytics snippet --> <!-- GoatCounter (https://www.goatcounter.com/) — privacy-friendly, cookieless. Settings are defined before count.js loads: * path(): section-tag each pageview so sections roll up in the dashboard (home page -> /home/, /resume/ -> /cv/resume/, etc.), while the real URL is preserved in the title. * a delegated click handler records paper/PDF and outbound clicks as events. --> 
1<script> (function () { // Map a first URL segment to a section bucket. Anything unlisted keeps its own // first segment as the section, so new pages group sensibly without edits here. var SECTION = { publications: 'publications', publication: 'publications', students: 'students', talks: 'talks', talk: 'talks', teaching: 'teaching', portfolio: 'portfolio', cv: 'cv', resume: 'cv', 'year-archive': 'archive', 'category-archive': 'archive', 'tag-archive': 'archive' }; function sectionPath(p) { var real = (p || location.pathname) || '/'; var tail = real.replace(/^\/+/, ''); // drop leading slash(es) var seg = tail.split('/')[0].toLowerCase(); var section = SECTION[seg] || (seg === '' ? 'home' : seg); // Avoid doubling the segment when the path already starts with its section. var recorded = (tail.toLowerCase().indexOf(section) === 0) ? '/' + tail : '/' + section + '/' + tail; return recorded.replace(/\/{2,}/g, '/'); } window.goatcounter = { path: function (p) { return sectionPath(p); }, // Keep the real URL discoverable even though the recorded path is normalized. title: function (t) { return (t || document.title || '') + ' · ' + location.pathname; } }; // Record paper/PDF and outbound-link clicks as GoatCounter events. Capture phase // so the event is queued before the browser navigates away. function trackClick(e) { if (!window.goatcounter || !window.goatcounter.count) return; var a = e.target && e.target.closest ? e.target.closest('a[href]') : null; if (!a) return; var raw = a.getAttribute('href') || ''; if (!raw || raw.charAt(0) === '#' || raw.toLowerCase().indexOf('javascript:') === 0) return; var url; try { url = new URL(a.href, location.href); } catch (_) { return; } var isPaper = /\.pdf($|\?)/i.test(url.pathname) || /(^|\.)dl\.acm\.org$/i.test(url.hostname) || /(^|\.)aclanthology\.org$/i.test(url.hostname) || /(^|\.)arxiv\.org$/i.test(url.hostname) || /(^|\.)doi\.org$/i.test(url.hostname); if (isPaper) { var name = url.pathname.split('/').filter(Boolean).pop() || url.hostname; window.goatcounter.count({ path: 'paper:' + name, title: 'Paper link: ' + url.href, event: true }); } else if (url.hostname && url.hostname !== location.hostname) { // Aggregate outbound clicks by destination host; full URL kept in the title. window.goatcounter.count({ path: 'outbound:' + url.hostname, title: 'Outbound: ' + url.href, event: true }); } } document.addEventListener('click', trackClick, true); })(); </script>
1 
1<script data-goatcounter="https://tobyli.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script>
1 <!-- end custom analytics snippet --></body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.