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
My online CV (https://geoffreychallen.com) is usually more up-to-date than a paper copy.
I am currently a Teaching Associate Professor at the University of Illinois (Fall 2017–present).
My appointment is 80% teaching and my focus is teaching CS1 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 while using only 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, content, and assessments.
My CS1 course currently enrolls almost 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 late 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.
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 taught, and details about former group members.
Over nine semesters at Illinois I have taught a total of 7868 students, or an average of 874 per semester.
I have centered my teaching efforts on expanding and improving our introductory course for majors and students with a deep interest in the material—previously numbered CS 125 and now CS 124.
Additional information about each course is linked off of it’s main website.
Data about student success in each course and detailed student evaluation results available by request.
- 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 autogradable 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
- 2018: authored 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
- Restructured all course content to move away from outdated materials.
- Rewrote all lectures to use online materials and integrate participation tracking and in-class programming examples into classroom presentations.
- Deployed continuous assignment grading and the CS 125 online gradebook.
- Developed Java autograding support for PrairieLearn to enable programming questions on the weekly quizzes, which had previously been entirely multiple-choice.
- Held the first ever CS 125 Project Fair, featuring 165 Android projects developed by students working in pairs.
- Introduced Android programming to the course with new labs and a new Android assignment.
- Moved the final exam to the computer testing center (CBTF), enabling autograded programming questions and reducing TA grading burden.
- Updated outdated course development tools, replacing Eclipse with IntelliJ and Subversion with Git and GitHub Classroom.
- Began the course developer program with 10 students working on projects including new assignments, a new project fair, plagiarism detection, and data analysis.
- 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, style checker (checkstyle), and modern Java idioms.
- Rewrote all labs to better match course content and use online (rather than printed) materials.
- Designed and deployed a new course website and Discourse forum.
- Began work on a continuous autograder and online grade return system.
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.
- 2020–2021: 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”, a undergraduate course at the University at Buffalo.
Prior to 2017 I led the blue Systems Research Group at the University at Buffalo.
My CV there picks up where this one ends.