Service Statement

During my time at Illinois I have focused my service activities on opportunities to improve and support teaching and learning both inside and outside the university. I have served on departmental committees (undergraduate studies, broadening participation, technology facilities and services, teaching faculty recruiting, and instructional computing) and engaged in university service (Academic Senate, General Education Board, and the Grainger College of Engineering New Course and Curricular Review Process Committee). I have also led new initiatives, including making significant changes to the undergraduate curriculum, inaugurating a new teaching faculty workshop, updating and improving our teaching faculty hiring process, and designing a new course on technology and society. I also engage in advocacy on behalf of teaching and teaching faculty, participate actively in an online community of practice with other computer science educators, and have made my CS1 materials publicly available. I describe some of my more significant service contributions below.

Revising the Undergraduate Core Programming Curriculum
Revising the Undergraduate Core Programming Curriculum

When I arrived in Fall 2017 and began teaching CS1(1), it quickly became clear that we had a problem in our early curriculum. Several years before I arrived, students would begin in CS1, where they would gain some programming experience—some for the first time. They would then spend a second semester in our discrete structures course learning the basics of proof-based mathematics. Both these courses prepared them for a third-semester course on data structures (DS), which leveraged both their programming and mathematical preparation.

However, it had been noted that our majors were struggling with programming tasks when they reached DS. The problem was the long gap between gaining preliminary programming experience in CS1 in their first semester and their arrival in DS in their third semester. For a typical first-year student, our course progression could result in as long as a nine-month gap between the end of their programming preparation in CS1 and the need to apply their skills in DS. Programming is a skill. Without practice, students were getting rusty. A refresher on basic programming was consuming the first month of DS and constraining the conceptual content the course covered.

The solution in place when I arrived was a second-semester programming class taken alongside discrete structures. This bridged the gap, kept students programming, and provided more practice before arriving in DS.

Unfortunately, this fix had a flaw—the second-semester programming course was only offered to students majoring in computer science (and CS+X, our set of blended CS degree programs). But a large and growing number of students coming through our early programming curriculum are non-majors—either pursuing a minor or just curious about the subject. As a result, the new second-semester programming course was failing to meet its design goals, and was actually making things more complicated for both CS1 and DS. CS1 had to continue to prepare non-majors to continue directly to DS with no additional programming preparation, and DS had to continue to accommodate those less-prepared students. A long-standing plan to remove the introductory programming material from DS was stalled. In addition, because admission to CS programs is highly-competitive, the second semester programming course was providing more preparation to academically talented students, while the non-majors were forced to make the jump directly to DS unaided, raising fairness and equity concerns.

I led a team of instructors that identified and corrected this problem, resulting in a redesigned set of early programming courses taken by all students—both majors and non-majors. On one level, the solution was simple—we made it possible and required for all students to take a second-semester programming course. However, one reason that course had been limited to majors is that it was never designed to scale, and was already consuming an unsustainable amount of space and staff resources. So our challenge was to redesign the course to scale while ensuring that the existing learning goals were still met. We accomplished this by refactoring the course—keeping the objectives that we could scale (learning more about programming and computer science), and moving the ones that we could not scale (human code review) into a separate course that remains closed to non-majors, but is not a prerequisite for other courses in our program. The consistent flow through the early programming core also provided the opportunity to revisit topic sequences and introduce new learning objectives.

I drafted design specifications for the new courses, prepared justifications and other materials, and supported the change through the many rounds of review and approvals required to accomplish a revision to our CS and CS+X degree programs—the first such change we had made in five years. I also helped recruit and am mentoring Michael Nowak, who joined the department in Fall 2020 and taught the first pilot of the new CS2 course in Spring 2021. After a multi-year approval process, the new curriculum went live for students entering in Fall 2021. Since then, I have continued to engage with instructors involved in teaching in the early core, as we monitor the success of these courses and their impact on our student population. In an exciting development—but also as planned—with more consistent inputs our data structures course has finally been able to drop the initial month of programming preparation, leaving room for more conceptual and theoretical content.

Improving Teaching Faculty Hiring
Improving Teaching Faculty Hiring

After serving on the teaching faculty hiring committee for several years, in 2021 I was the first teaching faculty to chair our teaching faculty search. Previously, teaching faculty searches had always been chaired by research faculty. I advocated for this change internally, including encouraging the department to listen to feedback from our new teaching faculty hires, who reported that we were one of the last departments where the teaching faculty search was not run by teaching faculty. As chair, I improved our process to better attract and recruit excellent candidates. I rewrote our ad and other promotional materials to highlight the many ways the department supports teaching faculty—through the ability to focus on a single course, stable course assignments, growing autonomy, support for technological innovation, and equitable pay, among other factors.

I also made significant changes to our interview process. Previously, our interview comprised a live teaching demonstration. However, this format has multiple weaknesses. Candidates will naturally overprepare their interview lesson, resulting in a best-case talk that may not represent the average-case presentation they’d give to an actual course. Faculty are generally a poor audience for teaching demonstrations. But more problematically, teaching demonstrations focus attention on the performative aspect of a candidate’s pedagogy—just one of many components that combine to create an effective course. Lecturing has long been known to be an ineffective instructional technique, and students are likely to learn more from an instructor who prepares great materials but is an awkward performer than from someone who is lively in front of an audience but does not provide high-quality content. Overall, relying on a teaching demonstration as the primary way to evaluate teaching faculty candidates suffers from the same problems and biases that have been identified when using student evaluations to evaluate instructors.

To address these concerns, I redesigned the interview talk as a presentation on effective pedagogy. This allows candidates to provide us with a holistic overview of how they teach—addressing things like course format, assessment, materials, grade design, calibration, community, collaboration, student motivation, scaling, support structures, data collection and analysis, and creating an equitable and inclusive learning environment. We still ask candidates to provide a pre-recorded presentation of technical content, which is evaluated separately. But the pedagogy-focused talk format has proven an effective way for candidates to help us understand how they approach all of the many aspects that go into effective instruction. It also drives more engagement by faculty attending the talk, while helping expose us to new educational ideas and approaches. We have also paired this with an increased focus on examining teaching materials throughout the hiring process, to make sure that we don’t miss candidates who are doing an outstanding job of supporting learning where most of it happens—outside the classroom.

Publicly-Available CS1 Materials
Publicly-Available CS1 Materials

In Spring 2022 I began the process of making our Java and Kotlin CS1 material freely available at learncs.online. My goal is to support independent learners by providing access to all of the same interactive components that have made my CS1 course so successful: 900 interactive playgrounds containing editable and executable code examples, 2,600 interactive walkthroughs provided by almost 300 instructors explaining core computer science concepts, almost 300 programming problems to test comprehension, and dozens of debugging exercises providing students with practice identifying and correcting programming errors. Access to our public materials does not replicate the experience of actually taking my CS1 course, as independent learners do not take weekly quizzes or have access to the dawn-to-dusk online individual tutoring provided by my course staff. However, the materials themselves are effective enough that we see a fairly sizable group of students in CS1 who are able to succeed with little staff support: 20% of students require no tutoring resources. Our ability to make these materials available also rests on both computational resources provided by the University of Illinois, and significant engineering effort invested over the previous years to make our backend systems more efficient. For example, our novel approach to safely executing untrusted Java and Kotlin code improves performance by 1000x over alternatives, making it possible to support a large amount of interactive use through playgrounds and homework problems using a small number of servers.

Over its first year of operation, learncs.online has supported thousands of independent learners. It is clear from our logs that many of these students are also highly engaged, and have generated hundreds of thousands of submissions to the homework problems during that time. learncs.online is also beginning to generate outreach opportunities. It was used to support a teacher training course here at Illinois in Fall 2022, and will be used as the interactive textbook for a Summer 2023 high school outreach program for diverse STEM-talented high school students run through the Discovery Partners Institute in Chicago. We have also piloted a collaboration with another education institution, with Ellen Spertus from Northeastern both using learncs.online to support her Kotlin course and contributing new interactive walkthroughs. Over the coming years I hope to recruit more external users and contributors to these materials, while increasing the amount of content that we share through this public resource.

Other Activities
Other Activities

Course Design: In 2024 I designed and deployed CS 199 SOC: Technology and Society, an exploratory seminar examining students’ relationship with technology through reading, reflection, and conversation. This course provides students with opportunities to think critically about their use of technology and its broader societal implications.

Summer Teaching Workshop: Together with several teaching faculty colleagues, I helped launch the Illinois Computer Science Summer Teaching Workshop. The workshop “brings together college instructors engaged with teaching computer science to discuss best practices, challenge the status quo, propose new directions, and present surprising or preliminary results.” The inaugural event in Summer 2021 focused on how the pandemic transformed our teaching, and featured four keynote speakers and twelve talks selected by the organizing committee. Now in its fifth year, the teaching workshop continues to provide a welcoming space for open discussion on innovation and best practices among college computer science educators.

Academic Data Analysis: We collect a lot of data in my course, including information about students not always mirrored elsewhere, and this has allowed me to support departmental academic data analysis. For example, I was able to use historical CS1 data to derive program retention statistics in preparation for a 2020 site visit from the Center for Inclusive Computing. I have also served in an official capacity on the department’s BPC Data Subcommittee, where we compiled data on representation from diverse groups in our computing programs.

Support for Instructional Computing Infrastructure: As a heavy user of instructional computing, I have been active in discussions about how to provision these resources. I have served in an official capacity on the department’s technology and facilities committee. However, most of my service in this area has been through multiple years of liaising with our IT support staff, to help them better understand the computational needs of my course and how to support innovative courseware. This has led to improved support for other innovative courses with similar requirements, including our new CS2 course. We have also established more official support expectations, allowing us to attract educators with an interest in building novel educational technologies.

Advocacy: Over the past several years I have begun to post essays on teaching and other related topics on my website. My goal is to share insights about topics like teaching at scale, frequent small assessment, research and development in education, and the status and treatment of teaching faculty, in an informal format. A set of essays on evaluating teaching faculty positions generated a significant amount of interest, and was cited by several of our recent teaching faculty applicants as a reason that they decided to apply to teach at the University of Illinois.

Mentoring: I am fortunate to have the opportunity to work closely each semester with a small number of undergraduates and graduate students selected to help lead my CS1 course. Since 2017, over 2,200 students have served as members of the CS 125/4 course staff. I mentored several junior teaching faculty, including Brad Solomon and Michael Nowak, and helped guide Michael Nowak into the establishment of several best practices that we have established in my CS1 course—including daily lessons and continuous autograding. I have also supervised independent student projects and engaged students in summer work contributing to our course tools and systems.

Community of Practice: Since 2021, at the invitation of Jérémie Lumbroso and Kristin Stephens-Martinez, I have been an active participant in an online community of practice with over 100 other computer science educators from dozens of institutions across the world. I have been highly engaged with this community on issues affecting teaching and education, and have learned an enormous amount through interactions with these colleagues.