Nico Ritschel
I currently teach modern software engineering in USU's new "AI in Software Engineering" immersion course. I am especially interested in teaching the entire process of building software, from requirements to release and beyond.
Previously, I have researched programming and learning tools for students and end-users without a traditional computer science background. I have worked on visual and block-based programming tools for industrial robot programmer, and tools for creating and sharing auto-gradable and randomizable course materials.
Before joining Utah State, I was a Postdoctoral Research Associate at the University of Illinois Urbana-Champaign, where I worked with Geoffrey Herman on the problems instructors encounter when adopting PrairieLearn. I completed my Ph.D. at the University of British Columbia with Reid Holmes and Ronald Garcia.
Teaching
CS 5890: AI-Augmented Software Engineering
Two-term, project-based immersion course in which students build and evolve a complex software system using a modern, AI-enabled workflow.
CS 498: Designing Software for Education
10 students; undergraduate/graduate class on developing educational tools for the platform PrairieLearn.
CS 101: Introduction to Programming for Scientists and Engineers
749 and 492 students over 2 terms; introductory class on Python programming for non-majors; co-instructed with Liia Butler and Max Fowler.
CS 500: Current Topics in Computing Education Research
19 students; undergraduate/graduate class on developing educational tools for the platform PrairieLearn; co-instructed with Geoffrey Herman and Mariana Silva.
CPSC 410: Advanced Software Engineering
52 students; condensed Summer class (taught over two months) on software engineering tools and methods, as well as domain-specific languages and formal verification.
Other Teaching-related Experience
Scholarship and Teaching for Engineering Postdocs (STEP) Program
Completed a two-term professional-development program covering teaching and research practices, including lecture observations and feedback on teaching materials.
Instructional Skills Workshop
Completed a five-day workshop that included multiple teaching sessions, discussions on supporting distance learning, and handling difficult classroom situations.
Publications
Enabling Open Educational Resource Adoption through Integrated Sharing in PrairieLearn
Proceedings of the 57th ACM Technical Symposium on Computer Science Education, Volume 1, pp. 859–865.
Block-based or graph-based? Why not both? Designing a hybrid programming environment for end-users
Interacting with Computers, volume 38, issue 1, pp. 40–57. Published online in 2025.
Block-based Programming for Two-Armed Robots: A Comparative Study
46th International Conference on Software Engineering.
Blocks? Graphs? Why Not Both? Designing and Evaluating a Hybrid Programming Environment for End-users
46th International Conference on Software Engineering: Companion Proceedings, pp. 326–327.
Training Industrial End-User Programmers with Interactive Tutorials
Software: Practice and Experience, volume 53, issue 3, pp. 729–747.
Can Guided Decomposition Help End-Users Write Larger Block-Based Programs? A Mobile Robot Experiment
Proceedings of the ACM on Programming Languages, volume 6, OOPSLA2, pp. 233–258.
Language Impact on Productivity for Industrial End-users: A Case Study from Programmable Logic Controllers
Journal of Computer Languages, volume 69, article 101087.
Enabling End-Users to Implement Larger Block-Based Programs
44th International Conference on Software Engineering: Companion Proceedings, pp. 347–349.
Comparing Block-Based Programming Models for Two-Armed Robots
IEEE Transactions on Software Engineering, volume 48, issue 5, pp. 1630–1643.
Novice-Friendly Multi-Armed Robotics Programming
International Workshop on Robotics Software Engineering, pp. 29–32.
Modular Capture Avoidance for Program Transformations
International Conference on Software Language Engineering, pp. 59–70.
Experience
Professional Practice Assistant Professor
Teaching and research in computer science education, software engineering, and programming tools.
Postdoctoral Research Associate
Studied barriers to adopting PrairieLearn and developed open-source infrastructure for educational content creation and sharing.
Graduate Researcher
Designed and evaluated programming tools for end-users without prior programming experience. Built functional prototypes and conducted controlled experiments, interviews, and surveys to study programming performance and user experience.
Sessional Instructor
Taught Advanced Software Engineering, including software design and evaluation, team-based development, and project mentoring.
Full-Stack Software Developer and Research Fellow
Developed and evaluated a web-based energy trading platform in collaboration with local energy suppliers.
Education
University of British Columbia
Thesis: Enriching Block-based End-user Programming with Visual Features
Supervised by Reid Holmes and Ronald Garcia.
Technische Universität Darmstadt
Thesis: A Meta Representation for Reactive Dependency Graphs
Supervised by Mira Mezini and Ragnar Mogk.
Technische Universität Darmstadt
Thesis: Modular Hygienic Program Transformations
Supervised by Mira Mezini and Sebastian Erdweg.
Personal Interests
Before coming to North America, I grew up in the beautiful city of Mannheim in Germany, and studied and worked in the not quite as beautiful, but academically more promising city of Darmstadt. During my Ph.D. in Canada, Vancouver and its surrounding areas gave me easy access to stunning hiking trails and beautiful ski resorts. In Utah (and beyond), I continue to enjoy all kinds of outdoor activities, including hiking, rock climbing, running, skiing and snowshoeing.
I also enjoy taking on service and community roles that bring people together. During my time at UBC I have served as a student representative on several departmental committees. From Spring 2018 to 2019, I was the UDLS czar of UBC's Computer Science department, where I hosted 33 undistinguished talks given by students and faculty about their hobbies and personal interests. From Spring 2019 to 2020, I was the President of UBC's Computer Science Graduate Student Association (CSGSA). For the following year, I was the CSGSA's VP Social. In 2023 and 2024, I have co-hosted puzzle hunts for graduate students at John's Hopkins Computer Science department with my partner.