Updated 4/27/2023

Geoffrey Challen

né Werner-Allen

My professional goal is to teach computer science to as many people as possible, and to inspire them to use their skills to change the world for the better.

Department of Computer Science
University of Illinois
Thomas M. Siebel Center for Computer Science
201 North Goodwin Avenue, Urbana, IL, 61801-2302

Email:challen@illinois.edu
Phone:716.464.2749
Website:https://geoffreychallen.com
Public Course Materials:https://learncs.online
Primary Course Website:https://cs124.org
CV:https://geoffreychallen.com/CV
Promotional Materials:https://www.geoffreychallen.com/promotion
Previous Research Group Website:https://bluegroup.systems
Google Scholar Profile:https://geoffreychallen.com/scholar

My online CV is always more up-to-date than any paper copy.


Appointments and Preparation
Appointments and Preparation

Since Fall 2017 I’ve been a Teaching Associate Professor at the University of Illinois. My appointment is 60% teaching, 20% scholarship, and 20% service. My focus is teaching at scale.

At this particular moment in computing history, what we need is not more computer power—we need more computer people. My goal is to create courses that excite, train, and retain these new computer scientists. I focus on instructional approaches that can scale to large numbers of students using limited human resources. I apply my own skills as a computer scientist to this task, by building novel tools and systems that create interactive and engaging learning environments.

My CS1 course currently enrolls over 2000 students per year. Since I began teaching the course in Fall 2017, enrollment has doubled, drop rates have fallen, success rates have increased, student performance in later courses has improved, a gender performance gap has disappeared, students are practicing and learning more, the amount of content covered has increased, we have introduced Kotlin as a language option alongside Java, and hundreds of staff members have made contributions that help diversify the voice with which the course speaks.

Previous Position
Previous Position

From 2011–2017 I worked in mobile systems as a research professor at the University of Buffalo. My research group designed, built, and evaluated novel computer systems. We focused on smartphones, since they represent the most pervasive and powerful distributed system ever deployed. My previous group’s website is the best source of information about my prior research, and includes project descriptions, copies of all of our published papers and funded grant proposals, information about the courses that we created and taught, and details about former group members.

Professional Preparation
Professional Preparation

Teaching
Teaching

Over 14 semesters at Illinois I have taught a total of 8,962 students(1). I have focused my efforts on expanding and improving our CS1 course for majors and students with deep interest in the material—previously numbered CS 125 and now CS 124.

Additional information about each course is linked off its main website. Data about student success in each course and detailed student evaluation results available by request. For more details, please review my teaching statement.

Overview
Overview

Only primary teaching assignments are listed.

Course and Curricular Innovations and Improvements
Course and Curricular Innovations and Improvements

Links in the items below are usually to pages on learncs.online, which contains a publicly-accessible version of the materials and innovations I’ve developed to support my university CS1 course at Illinois, CS 124.

Semester-by-Semester Details
Semester-by-Semester Details

Below I provide a summary of the enrollment for each semester I’ve taught CS1 at Illinois, along with a detailed description of various changes and improvements made to the course each term. Note that we usually try to deploy substantial changes to course materials and infrastructure in the fall.

CS 124: Spring 2023
CS 124: Spring 2023

Syllabus // Staff // Lessons

Enrollment: 767
Format: Asynchronous online with both online and in-person support, frequent small assessment Languages: Kotlin, Java

  1. Added profiles of diverse computer scientists to our daily lessons and weekly quizzes as part of a CS People series.
  2. Began work on support for adding support for autograding test suites for all of the 700 questions in our problem library.
  3. Transitioned the course website to a new static site framework to improve login integration and avoid library deprecation.
  4. Deployed several new code quality analysis features.
  5. Completed work on Kotlin syntactic feature analysis, achieving parity with Java in preparation for a new feature-based code quality analysis pipeline.
  6. Began work with Leon Li and Katie Cunningham to analyze data on student usage of online tutoring resources.

CS 124: Fall 2022
CS 124: Fall 2022

Syllabus // Staff // Lessons

Enrollment: 1235
Format: Asynchronous online with both online and in-person support, frequent small assessment Languages: Kotlin, Java

  1. Fully incorporated debugging challenges throughout the daily lessons, alongside an updated set of homework problems.
  2. Completed work on several new quiz security features, in particular a focus-tracking system that automatically closes a student’s assessment when it loses focus more than a configurable number of times.
  3. Began work with Rachel Zhou and Luc Paquette on processing data from our daily lessons to analyze how students develop preferences for different instructors.

CS 124: Spring 2022
CS 124: Spring 2022

Syllabus // Staff

Enrollment: 608
Format: Asynchronous online, frequent small assessment Languages: Kotlin, Java

  1. Began work on debugging challenges generated from our growing library of student solutions to our homework problems.
  2. Released our CS1 materials publicly at learncs.online.
  3. Improved the staff mentoring program to connect junior and senior course staff members, including involving mentors in staff scheduling to help reduce absenteeism.
  4. Began work on improved quiz security features to better secure our online assessments.

CS 124: Fall 2021
CS 124: Fall 2021

Syllabus // Staff

Enrollment: 1288
Co-Instructor: Colleen Lewis
Format: Asynchronous online, frequent small assessment Languages: Kotlin, Java

  1. Introduce Kotlin as a language option alongside Java, requiring the development of a parallel set of lessons, homework, and assessments, and project.
  2. Colleen Lewis joined as a co-instructor and provided a complete set of alternate explanations for Java-language content.
  3. Worked with Colleen Lewis to update several course policies, including enabling students to collaborate on homework problems and on the machine project.
  4. Prepared data collection from the daily lessons to examine how students develop preferences when explanations from multiple instructors are available.

CS 125: Spring 2021
CS 125: Spring 2021

(Course website no longer online.)

Enrollment: 523
Format: Asynchronous online, frequent small assessment Language: Java

  1. Continued improving and stabilizing the systems supporting the new course format launched in Fall 2020.

CS 125: Fall 2020
CS 125: Fall 2020

(Course website no longer online.)

Enrollment: 942
Format: Asynchronous online lessons, frequent small assessment Language: Java

  1. Relaunched the course in a new asynchronous online daily lesson format to support student success during the pandemic, comprising daily interactive lessons integrating text, code playgrounds, interactive walkthroughs, homework problems, and video explanations.
  2. Deployed a novel homework autograder enabling rapid authoring and accurate evaluation of programming exercises.
  3. Transitioned to a new quizzing and proctoring tool integrating the homework autograder and multiple-choice questions designed to support efficient and secure online assessment.
  4. Integrated the online tutoring tool directly into the new course website, further lowering the bar for students to ask questions and receive one-on-one assistance.
  5. Completed and deployed a new service enabling continuous saving of student work in online code editors, to support student coding on the homework problems and during quizzes.

CS 125: Spring 2020
CS 125: Spring 2020

Syllabus // Staff

Enrollment: 380
Format: Synchronous online lectures, frequent small assessment Language: Java

  1. Transitioned the course online mid-semester due to onset of the COVID-19 pandemic.
  2. Over spring break, completed the first version of our online tutoring site to allow staff to efficiently provide remote support.
  3. Began preparing for fully-online instruction the next semester.

CS 125: Fall 2019
CS 125: Fall 2019

Syllabus // Staff

Enrollment: 696
Format: Synchronous lectures, frequent small assessment Language: Java

  1. Deployed the first iteration of the Android machine project, a multi-part assignment where students build a complete Android app through multiple weekly checkpoints, in a process that more accurately reflects real-world software development.
  2. Created and deployed our first distributed cloud-native continuous autograder, which we have continued to use to perform on-demand containerized grading of student Android programming assignments.
  3. Migrated all course backend systems to new server infrastructure running in our own private cloud managed using Kubernetes.

CS 125: Spring 2019
CS 125: Spring 2019

Website // Syllabus // Staff

Enrollment: 459
Format: Synchronous lectures, frequent small assessment Language: Java

  1. Began work on an initial version of Jeed as an improved backend for the in-class programming examples embedded in the lecture slides.
  2. Improved the test suites for the Android programming assignments.

CS 125: Fall 2018
CS 125: Fall 2018

Website // Syllabus // Staff

Enrollment: 742
Format: Synchronous lectures, frequent small assessment Language: Java

  1. Created and deployed an initial set of ~60 daily programming exercises to accompany and support the CS 125 course content.
  2. Wrote an additional ~45 small programming exercises to accompany each weekly assessment, marking the first time that every CS 125 quiz included programming questions.
  3. Eliminated the high-stakes final exam, completing a transition to frequent small assessment.
  4. Established a course tutoring center in a dedicated 40-seat room in the basement of the Siebel Center, replacing a woefully undersized office used for the purpose in previous semesters.
  5. Created several new assignments, including an adapation of a previous photo manipulation assignment to Android, and a molecule-naming assignment using graph traversal, developed with course staff member Ben Nordick.

CS 125: Spring 2018
CS 125: Spring 2018

Website // Syllabus // Staff

Enrollment: 439
Format: Synchronous lectures, high-stakes assessments Language: Java

  1. Rewrote all lectures to use interactive online materials and integrate participation tracking and in-class programming examples into classroom presentations.
  2. Deployed the first version of what became Jeed to support web-based exploration of Java code snippets through safe and high-speed untrusted code execution.
  3. Completed and deployed continuous assignment autograding.
  4. Deployed the first CS 125 online gradebook.
  5. Developed Java autograding support for PrairieLearn to enable programming questions on weekly quizzes, which had previously been entirely multiple-choice questions.
  6. Introduced Android programming to the course with new labs and assignments.
  7. Held the first ever CS 125 Project Fair, featuring 165 Android projects developed by teams of students.
  8. Moved the final exam to the computer testing center (CBTF), enabling autograded programming questions and reducing staff grading burden.
  9. Updated course development tools, replacing Eclipse with IntelliJ and Subversion with Git and GitHub Classroom.
  10. Began a course developer program with 10 students working on projects including new assignments, a new project fair, plagiarism detection, and data analysis.
  11. Created several new assignments on imperative programming, functions, and Android programming using APIs.

CS 125: Fall 2017
CS 125: Fall 2017

Website // Syllabus // Staff

Enrollment: 698
Co-Instructors: Bill Chapman, Lawrence Angrave
Format: Synchronous lectures, high-stakes assessment Language: Java

  1. Updated course assignments and infrastructure while Bill Chapman and Lawrence Angrave gave the lectures.
  2. Rewrote and updated all assignments to use a modern build system (Gradle), exhaustive test cases, linter (checkstyle), and modern Java idioms.
  3. Rewrote all lab activities to better match course content and use online (rather than printed) materials.
  4. Designed and deployed a new course website and forum.
  5. Began work on a continuous Git autograder and online grade return system integrated into the course website.
  6. Created several new assignments covering photo manipulation, object-oriented programming, and recursion.
  7. Began work on a fast and safe Java small code execution engine, originally based on the Janino high-speed Java compiler.

University at Buffalo (2011–2016)
University at Buffalo (2011–2016)

During my five years at UB I taught a total of 1150 students—an average of 104 per semester—and offered four different courses to beginning undergraduates, advanced undergraduates and graduate students. Despite being extremely challenging and required for undergraduate computer science majors, my course on computer operating systems was among the most popular in the department and a favorite of both graduate and undergraduate students. My graduate seminar on rotating topics in mobile systems attracted a small group of motivated students and recruited sev-eral new Ph.D. students into my group, while giving advanced undergraduates the chance to explore research topics. In Fall 2016 I introduced a new course on the internet to freshman undergraduates.

My UB online teaching portfolio has information about these and other teaching- related activities at UB. I also have copies of a teaching statement and statements of course effectiveness and improvement that I prepared in 2016.

Curriculum Development
Curriculum Development

Projects
Projects

Please see my projects page or my statement on scholarly activites for more details.

Service
Service

For more details, please review my service statement.

Mentoring
Mentoring

Invited Talks
Invited Talks

Funding
Funding

Earlier grants are listed here.

Prior to 2017
Prior to 2017

Prior to 2017 I led the blue Systems Research Group at the University at Buffalo. My previous CV picks up where this one ends.