Madeline Endres

PhD Candidate, Full CV (Updated as of November 2020)

Computer Science and Engineering

University of Michigan



Do you want to help push forth the bounds of human knowledge? Are you a current or prior professional software developer? If so, consider participating in our study of how developers use stack overflow. The study will take one hour of your time, and you will be compensated $50. It will involve a recorded video conference while you search stack overflow.

If interested, fill out this short prescreening form, and we will contact you if you qualify!

I am a third-year computer science PhD student at the University of Michigan where I am advised by Westley Weimer. Broadly, my research is at the intersection of software engineering and human factors. In particular, I am interested in reducing computing barriers for both novice and expert programmers, especially through the lenses of program comprehension, education, and diversity. My recent research include using neuroimaging and transfer-training-based experiments to study connections between natural language, spatial reasoning, and software engineering. I have also researched and built a tool that automatically provides input-related hints to novice programmers by using template-based automatic program repair to fix erroneous inputs. When I'm not working on research, I enjoy cooking, reading, traveling, hiking, and having long, overwrought conversations about moral philosophy, history, and astrophysics. I also play cello, and I'm always up for improvising and swapping music recommendations!

Academic Highlights

Cognative Basis of Programming Expertise

In this area of work, I investigate what factors, at a cognative level, distinguish novice programmers from expert programmers. I use a variety of techniques, including programming tests, psychological assessments, and medical imaging.

Computer Science Focused Transfer Training

Coming soon

Automatic Program Input Repair

Around a third of all novice Python programs contain a call to standard input. These inputs can be surprisingly complex and can contain bugs. However, modern programming hint generators usually consider only the source code when identifying and fixing errors. With this work, I aim to understand input structures and and fix erroneous inputs for unique novice programs.

Indicative Papers

  • InFix: A tool for automatically repairing erroneous inputs for novice Python programs. Hopefully soon to be open source.
  • Conference and Journal Publications (Peer-Reviewed)

  • Madeline Endres, Westley Weimer, Amir Kamil: An Analysis of Iterative and Recursive Problem Performance: Special Interest Group on Computer Science Education (SIGCSE): to appear (2021). [ Stimuli and Data]

  • Georgios Sakkas, Madeline Endres, Benjamin Cosman, Westley Weimer, Ranjit Jhala: Type Error Feedback via Analytic Program Repair: Conference on Programming Language Design and Implementation (PLDI), 2020.

  • Benjamin Cosman, Madeline Endres, Georgios Sakkas, Leon Medvinsky, Yao-Yuan Yang, Ranjit Jhala, Kamalika Chaudhuri, Westley Weimer: PABLO: Helping Novices Debug Python Code Through Data-Driven Fault Localization: Special Interest Group on Computer Science Education (SIGCSE), 2020.

  • Madeline Endres, Georgios Sakkas, Benjamin Cosman, Ranjit Jhala, Westley Weimer: InFix: Automatically Repairing Novice Program Inputs: Automated Software Engineering (ASE), 2019. [ Slide Deck|  Code Repository |  Stimuli and Data]
  • Posters and Presentations

  • Automatically Repairing Input Data for Novice Programs: IPIT Student talks, Ann Arbor Michigan, 2019. [ Slide Deck]
  • Computer Science Courses: Design Experience

    University of Michigan

    Computer Science Courses: TA Experience

    University of Michigan

    Other Teaching Experience

    • 2909 Bob and Betty Beyster Building
      Computer Science and Engineering
      University of Michigan
      2260 Hayward Street
      Ann Arbor, MI 48109-2121