Geoffrey Challen
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: | [email protected] |
| 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 |
| Statements: | https://www.geoffreychallen.com/statements |
| 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 PreparationAppointments and Preparation
I’m a Teaching 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 PositionPrevious Position
From 2011–2017 I worked in mobile systems as a research professor at the University at 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.
Academic AppointmentsAcademic Appointments
- 2024–: Teaching Professor, University of Illinois
- 2017–2024: Associate Teaching Professor, University of Illinois
- 2011–2017: Assistant Professor, University at Buffalo
Professional PreparationProfessional Preparation
- 2010–2011, Postdoctoral Associate, Massachusetts Institute of Technology (MIT). Supervised by Hari Balakrishnan.
- 2010, Ph.D, Computer Science, Harvard University. Dissertation: “Data Fidelity and Resource Management for Data-Rich Sensor Networks”. Advised by Matt Welsh.
- 2003, AB, Physics, Harvard University.
TeachingTeaching
Over 21 terms at Illinois I have taught a total of 16,107 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.
OverviewOverview
Only primary teaching assignments are listed.
- Fall 2024–: “CS 199 SOC: Technology and Society” (New Course) (University of Illinois)
- Fall 2021–: “CS 124: Introduction to Computer Science I” (Renumbered Course) (University of Illinois)
- Fall 2017–Summer 2021: “CS 125: Introduction to Computer Science” (University of Illinois)
- Fall 2016: “CS 199: How the Internet Works” (New Course) (University at Buffalo)
- Spring 2011–Spring 2017: “CS 421: Introduction to Operating Systems” (University at Buffalo)
Course and Curricular Innovations and ImprovementsCourse 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.
- 2025: Started work on several integrations of AI into course infrastructure, systems, and materials
- 2025: Began teaching effective use of coding agents on the course larger Android programming project
- 2025: Enhanced online proctoring interface to support remote students
- 2025: Added quiz retake opportunities, allowing students additional chances to demonstrate mastery
- 2025: Completed major database reorganization for improved system performance and scalability
- 2024: Deployed autogenerated testing exercises, providing students with practice writing test suites
- 2024: Integrated code quality instruction and automated feedback into daily lesson content
- 2024: Launched coaching program to proactively contact students in need of support and offer individual course strategy sessions
- 2024: Deployed Redis-based caching system for better platform performance at scale
- 2024: Expanded compilation infrastructure to support mixed Java/Kotlin projects
- 2023: Introduced mutation testing framework for automated debugging challenge generation
- 2023: Began work adding support for automated test evaluation to our homework autograder
- 2023: Added profiles of diverse computer scientists to our daily lessons as part of a CS People series
- 2022: Integrated debugging exercises throughout our CS1 daily lessons
- 2022: Upgraded our online quiz tool to add improved quiz security features and provide more practice content
- 2022: Made most of our highly-successful CS1 materials publicly available at https://www.learncs.online/
- 2022: Established a successful course staff mentorship program
- 2022: Created a practice page providing students with access to our entire library of over 700 small programming problems
- 2021: Officially introduced Kotlin as a new language option for CS 124, with parallel lessons, content, and assessments running alongside our existing Java materials
- 2021: Created a new tool for generating small debugging challenges, allowing successful student submissions to existing homework problems to generate large numbers of new, interesting, and autogradeable questions
- 2021: Created a series of introductory Kotlin lessons to complement and eventually run side-by-side with our existing Java lessons
- 2020: Developed a new interactive walkthrough format for deploying live coding explanations and soliciting contributions from course staff
- 2020: Created a new online quiz system to support remote Zoom proctoring
- 2020: Restructured CS 125 to support asynchronous instruction in a daily interactive lesson format
- 2020: Designed and developed a new framework accelerating the development of small Java programming problems
- 2020: Created an efficient online help system to support students after CS 125 transitioned online
- 2019: Authored and deployed the first multi-part Android programming project for CS 125
- 2019: Deployed CS 125 on local cloud infrastructure providing enhanced scalability and robustness
- 2019: Developed a new Java and JVM playground backend and toolkit to support interactive programming exercises in CS 125
- 2019: Reauthored our on-demand Git autograder for larger CS 125 assignments to run on Kubernetes
- 2018: Began authoring a large and growing library of small Java homework problems to support CS 125
- 2018: Developed a Java autograder and programming problems for CS 125 quizzes
- 2018: Created on-demand Git autograder for CS 125 assignments
- 2017: Created on-demand Subversion autograder for CS 125 assignments
- 2016: Implemented novel video delivery and tracking systems for internet-class.org, the website supporting a new course on the internet
- 2015–2016: Developed
test161, a new testing framework for operating system assignments using the OS/161 instructional operating system
Semester-by-Semester DetailsSemester-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: Fall 2025 (In Progress)CS 124: Fall 2025 (In Progress)
Enrollment: 1100 Format: Tutorial format with both online and in-person support, frequent small assessment Languages: Kotlin, Java
- Integrated effective use of AI coding agents into the larger Android programming project to ensure students are prepared for the future of software development
- Began work on several AI integrations into course materials and systems, including retrieval-augment generation, code variable name analysis, and automatically generated quiz retake study guides
CS 124: Spring 2025CS 124: Spring 2025
Enrollment: 700 Format: Tutorial format with both online and in-person support, frequent small assessment Languages: Kotlin, Java
- Enhanced online proctoring interface to support remote students.
- Added quiz retake opportunities, allowing students additional chances to demonstrate mastery.
- Completed major database reorganization for improved system performance and scalability.
CS 124: Fall 2024CS 124: Fall 2024
Enrollment: 1294 Format: Tutorial format with both online and in-person support, frequent small assessment Languages: Kotlin, Java
- Deployed autogenerated testing exercises, providing students with practice writing test suites.
- Integrated code quality instruction and automated feedback into daily lesson content.
- Began coaching program to proactively contact students in need of support and offer individual course strategy sessions.
- Deployed Redis-based caching system for improved platform performance at scale.
CS 124: Spring 2024CS 124: Spring 2024
Enrollment: 782 Format: Tutorial format with both online and in-person support, frequent small assessment Languages: Kotlin, Java
- Enhanced compilation infrastructure to support mixed Java/Kotlin projects.
- Modernized platform architecture for improved performance and scalability.
CS 124: Fall 2023CS 124: Fall 2023
Enrollment: 1281 Format: Tutorial format with both online and in-person support, frequent small assessment Languages: Kotlin, Java
- Deployed enhanced mutation testing framework for automated debugging challenge generation.
- Continued stability improvements to website frontend and backend systems.
- Enhanced assessment platform with improved question delivery and evaluation.
CS 124: Spring 2023CS 124: Spring 2023
Enrollment: 879 Format: Tutorial format with both online and in-person support, frequent small assessment Languages: Kotlin, Java
- Added profiles of diverse computer scientists to our daily lessons and weekly quizzes as part of a CS People series.
- Began work on adding support for autograding test suites for all of the 700 questions in our problem library.
- Transitioned the course website to a new static site framework to improve login integration and avoid library deprecation.
- Deployed several new code quality analysis features.
- Completed work on Kotlin syntactic feature analysis, achieving parity with Java in preparation for a new feature-based code quality analysis pipeline.
- Began work with Leon Li and Katie Cunningham to analyze data on student usage of online tutoring resources.
CS 124: Fall 2022CS 124: Fall 2022
Enrollment: 1399 Format: Tutorial format with both online and in-person support, frequent small assessment Languages: Kotlin, Java
- Fully incorporated debugging challenges throughout the daily lessons, alongside an updated set of homework problems.
- 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.
- 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 2022CS 124: Spring 2022
Enrollment: 666 Format: Tutorial format, frequent small assessment Languages: Kotlin, Java
- Began work on debugging challenges generated from our growing library of student solutions to our homework problems.
- Released our CS1 materials publicly at
learncs.online. - Improved the staff mentoring program to connect junior and senior course staff members, including involving mentors in staff scheduling to help reduce absenteeism.
- Began work on improved quiz security features to better secure our online assessments.
CS 124: Fall 2021CS 124: Fall 2021
Enrollment: 1441 Co-Instructor: Colleen Lewis Format: Tutorial format, frequent small assessment Languages: Kotlin, Java
- Introduced Kotlin as a language option alongside Java, requiring the development of a parallel set of lessons, homework, and assessments, and project.
- Colleen Lewis joined as a co-instructor and provided a complete set of alternate explanations for Java-language content.
- Worked with Colleen Lewis to update several course policies, including enabling students to collaborate on homework problems and on the machine project.
- Prepared data collection from the daily lessons to examine how students develop preferences when explanations from multiple instructors are available.
CS 125: Spring 2021CS 125: Spring 2021
(Course website no longer online.)
Enrollment: 613 Format: Asynchronous online, frequent small assessment Language: Java
- Continued improving and stabilizing the systems supporting the new course format launched in Fall 2020.
CS 125: Fall 2020CS 125: Fall 2020
(Course website no longer online.)
Enrollment: 1103 Format: Asynchronous online lessons, frequent small assessment Language: Java
- 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.
- Deployed a novel homework autograder enabling rapid authoring and accurate evaluation of programming exercises.
- Transitioned to a new quizzing and proctoring tool integrating the homework autograder and multiple-choice questions designed to support efficient and secure online assessment.
- 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.
- 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 2020CS 125: Spring 2020
Enrollment: 380 Format: Synchronous online lectures, frequent small assessment Language: Java
- Transitioned the course online mid-semester due to onset of the COVID-19 pandemic.
- Over spring break, completed the first version of our online tutoring site to allow staff to efficiently provide remote support.
- Began preparing for fully-online instruction the next semester.
CS 125: Fall 2019CS 125: Fall 2019
Enrollment: 696 Format: Synchronous lectures, frequent small assessment Language: Java
- 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.
- 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.
- Migrated all course backend systems to new server infrastructure running in our own private cloud managed using Kubernetes.
CS 125: Spring 2019CS 125: Spring 2019
Enrollment: 459 Format: Synchronous lectures, frequent small assessment Language: Java
- Began work on an initial version of Jeed as an improved backend for the in-class programming examples embedded in the lecture slides.
- Improved the test suites for the Android programming assignments.
CS 125: Fall 2018CS 125: Fall 2018
Enrollment: 742 Format: Synchronous lectures, frequent small assessment Language: Java
- Created and deployed an initial set of ~60 daily programming exercises to accompany and support the CS 125 course content.
- Wrote an additional ~45 small programming exercises to accompany each weekly assessment, marking the first time that every CS 125 quiz included programming questions.
- Eliminated the high-stakes final exam, completing a transition to frequent small assessment.
- 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.
- Created several new assignments, including an adaptation 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 2018CS 125: Spring 2018
Enrollment: 439 Format: Synchronous lectures, high-stakes assessments Language: Java
- Rewrote all lectures to use interactive online materials and integrate participation tracking and in-class programming examples into classroom presentations.
- 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.
- Completed and deployed continuous assignment autograding.
- Deployed the first CS 125 online gradebook.
- Developed Java autograding support for PrairieLearn to enable programming questions on weekly quizzes, which had previously been entirely multiple-choice questions.
- Introduced Android programming to the course with new labs and assignments.
- Held the first ever CS 125 Project Fair, featuring 165 Android projects developed by teams of students.
- Moved the final exam to the computer testing center (CBTF), enabling autograded programming questions and reducing staff grading burden.
- Updated course development tools, replacing Eclipse with IntelliJ and Subversion with Git and GitHub Classroom.
- Began a course developer program with 10 students working on projects including new assignments, a new project fair, plagiarism detection, and data analysis.
- Created several new assignments on imperative programming, functions, and Android programming using APIs.
CS 125: Fall 2017CS 125: Fall 2017
Enrollment: 698 Co-Instructors: Bill Chapman, Lawrence Angrave Format: Synchronous lectures, high-stakes assessment Language: Java
- Updated course assignments and infrastructure while Bill Chapman and Lawrence Angrave gave the lectures.
- Rewrote and updated all assignments to use a modern build system (Gradle), exhaustive test cases, linter (
checkstyle), and modern Java idioms. - Rewrote all lab activities to better match course content and use online (rather than printed) materials.
- Designed and deployed a new course website and forum.
- Began work on a continuous Git autograder and online grade return system integrated into the course website.
- Created several new assignments covering photo manipulation, object-oriented programming, and recursion.
- 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 several 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 DevelopmentCurriculum Development
- 2024: Designed and deployed “CS 199 SOC: Technology and Society”, an exploratory seminar examining students’ relationship with technology through reading, reflection, and conversation (University of Illinois).
- 2020–: Led a team of faculty that proposed and passed a significant revision to the core programming sequence at the University of Illinois. The revision created several new courses and improved the accessibility of the computer science degree program for non-majors.
- 2016–2017: Led the Curriculum Development Committee which proposed and passed a significant revision to the undergraduate curriculum at the University at Buffalo. The revision created several new courses and updated several others to overall produce a more relevant and engaging undergraduate degree program.
- 2016: Designed and deployed “CS 199: How the Internet Works”, an undergraduate course at the University at Buffalo.
ProjectsProjects
Please see my projects page or my statement on scholarly activities for more details.
-
learncs.onlineis the public version of the materials developed to support CS 124—my CS1 course at Illinois. -
Interactive walkthroughs are a novel way to deliver live coding demos online while preserving code interactivity. They’ve also allowed us to create a vibrant and diverse community of instructional voices.
-
Questioner is a novel tool allowing us to write programming exercises 10x faster and more accurately than previous approaches. It leverages the fact that, when authoring homework problems, the solution is known, and can be used to both generate and validate a testing strategy.
-
Code quality autograding allows us to provide students with automated feedback on not just correctness, but also on multiple aspects of quality: linting (format checking), cyclomatic complexity, runtime and memory efficiency, source line counts, dead code detection, and recursion and feature analysis.
-
Autogenerated debugging exercises provide students with nearly-unlimited debugging practice, improving their ability to identify small mistakes, work with unfamiliar code, and apply minimal fixes.
-
Autogenerated testing exercises provide students with the chance to practice writing test suites. Writing test suites is not only a critical component of software creation, but provides students the opportunity to demonstrate their understanding of a problem, as well as learn to think defensively by anticipating corner cases and problematic inputs.
-
Our online tutoring site efficiently connects students with staff for one-on-one tutoring sessions, and has become a primary way that we support my CS1 course’s asynchronous format.
-
Jeed, the speedy JVM execution and analysis toolkit, is a central component supporting all of our other Java and Kotlin tools. It allows running untrusted code in a secure sandbox 1000 times faster than other approaches, and also supports a large and growing collection of source and bytecode analysis tools.
PublicationsPublications
Earlier publications from my research career are listed here.
-
02/2025: Yiqiu Zhou, Luc Paquette, and Geoffrey Challen. Investigating the Presence and Development of Student Instructor Preferences in a Large-Scale CS1 Course. In Proceedings of the 56th ACM Technical Symposium on Computer Science Education (SIGCSE 2025).
-
02/2025: Geoffrey Challen and Ben Nordick. Accelerating Accurate Assignment Authoring Using Solution-Generated Autograders. In Proceedings of the 56th ACM Technical Symposium on Computer Science Education (SIGCSE 2025).
-
03/2024: Hongxuan Chen, Ang Li, Geoffrey Challen, and Kathryn Cunningham. Implementation of Split Deadlines in a Large CS1 Course. In Proceedings of the 55th ACM Technical Symposium on Computer Science Education (SIGCSE 2024). DOI: 10.1145/3626252.3630873
-
11/2020: Liia Butler, Geoffrey Challen, and Tao Xie. Data-Driven Investigation into Variants of Code Writing Questions. In Proceedings of the 32nd IEEE Conference on Software Engineering Education and Training (CSEE&T 2020). DOI: 10.1109/CSEET49119.2020.9206195
-
11/2019: Jonathan Osei-Owusu, Angello Astorga, Liia Butler, Tao Xie, and Geoffrey Challen. Grading-based test suite augmentation. In Proceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering (ASE 2019). DOI: 10.1109/ASE.2019.00030
PresentationsPresentations
-
February 27, 2025: SIGCSE 2025: Accelerating Accurate Assignment Authoring Using Solution-Generated Autograders (with Ben Nordick)
-
February 27, 2025: SIGCSE 2025: Investigating the Presence and Development of Student Instructor Preferences in a Large-Scale CS1 Course (with Yiqiu Zhou and Luc Paquette)
-
March 21, 2024: SIGCSE 2024 Panel: Interviewing the Teaching Faculty Hiring Process (with Victoria Dean, Nate Derbinsky, Matt Wang, and Jacqueline Smith). DOI: 10.1145/3626253.3631664
-
June 6, 2023: Illinois Computer Science Summer Teaching Workshop (iCSTWS): The Dynamic Evolution of Student Preferences Towards Instructors in a CS1 Course: A Clickstream Data Analysis (Slides)
-
June 5, 2023: Illinois Computer Science Summer Teaching Workshop (iCSTWS): Guided by Complexity: Automated Code Quality Feedback in CS1 (Slides)
-
August 16, 2022: Illinois Computer Science Summer Teaching Workshop (iCSTWS): All the Reasons for Frequent Small Assessment (Video, Slides)
-
May 6, 2022: Western Canadian Conference on Computing Education (WCCCE): How the Pandemic (Permanently) Transformed My Teaching (Video, Slides)
FundingFunding
In my previous appointment as a research professor, I received almost $3M in competitive external funding from the NSF and Google, most as PI. Earlier grants are listed here.
- 2021–2022: Interactive Code Walkthroughs, $10K from the Grainger College of Engineering through the Strategic Instructional Innovations Program (SIIP). PI with Tiffani Williams and Michael Nowak.
- 2020–2022: Revising the CS Introductory Programming Sequence, $8.5K from the Grainger College of Engineering through the Strategic Instructional Innovations Program (SIIP). Co-PI with Michael Nowak, Carl Evans, Margaret Fleck, Michael Woodley, and Craig Zilles.
- 2017–: CAREER: Harnessing Implementation Flexibility to Enable Runtime Adaptation, $537K from the National Science Foundation. Sole PI.
ServiceService
For more details, please review my service statement.
- 2023–: Chair of the Instructional Computing Committee
- 2023–: Service on the Grainger College of Engineering New Course and Curricular Review Process Committee
- 2022–2024: Service on the University General Education Board
- 2022–: Published a freely-available public version of my CS1 materials at
learncs.online - 2021–2022: Served as the first teaching faculty chair of the teaching faculty hiring committee
- 2021: Helped organize the inaugural Illinois Computer Science Summer Teaching Workshop
- 2011–: Service on departmental committees including Undergraduate Study, Academic Appeals, Broadening Participation in Computing, and others
MentoringMentoring
-
2020– Mentored Assistant Teaching Professor Brad Solomon
-
2020– Mentored Assistant Teaching Professor Michael Nowak
-
2017– Mentored dozens of senior staff members for CS 125/4, and supervised over 2000 undergraduate and graduate course staff
Prior to 2017Prior 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.