Nico Ritschel

I have recently completed my Ph.D. at the University of British Columbia, co-supervised by Reid Holmes and Ron Garcia. I do research that is on the brink of Software Engineering, Programming Languages and Human Computer Interaction. I am interested in both the theoretical foundations of programming but also the impact that programming languages and tools have on people. Currently, my research focuses on designing programming tools that target end-users without programming experience. By combining visual and block-based design elements, I try to extend the range of tasks they can solve without making it harder to learn these tools.

Before coming to Canada, I grew up in the beautiful city of Mannheim in Germany, and studied and worked in the not as beautiful but academically more promising city of Darmstadt. I finished my undergraduate education and my Master's degree at the Technische Universität Darmstadt. In Spring 2016 I went on an exchange term to Simon Fraser University where I had a unique chance to experience Canada both as a student and as a long-term tourist. About one year later, I moved to Vancouver to continue my studies


Blocks? Graphs? Why Not Both? Designing and Evaluating a Hybrid Programming Environment for End-users

Nico Ritschel, Felipe Fronchetti, Reid Holmes, Ronald Garcia, and David C. Shepherd

To be presented as poster at the International Conference on Software Engineering (ICSE).
Extended abstract (once available) .


Block-based Programming for Two-Armed Robots: A Comparative Study

Felipe Fronchetti, Nico Ritschel, Logan Schorr, Chandler Barfield, Gabriella Chang, Rodrigo Spinola, Reid Holmes, and David C. Shepherd

To appear as full paper at the International Conference of Software Engineering (ICSE).
Pre-print; Supplementary materials.


Can Guided Decomposition Help End-Users Write Larger Block-Based Programs? A Mobile Robot Experiment

Nico Ritschel, Felipe Fronchetti, Reid Holmes, Ronald Garcia, and David C. Shepherd

Full paper at the conference on Object-oriented Programming, Systems, Languages (OOPSLA).
Paper; Pre-print; Supplementary materials (archived on Zenodo).


Training Industrial End-User Programmers with Interactive Tutorials

Nico Ritschel, Anand Ashok Sawant, David Weintrop, Reid Holmes, Alberto Bacchelli, Ronald Garcia, Chandrika K R, Avijit Mandal, Patrick Francis, and David C. Shepherd.

Full paper in the Journal of Software: Practice and Experience (SPE).
Paper; Pre-print.


Language Impact on Productivity for Industrial End-users: A Case Study from Programmable Logic Controllers

Felipe Fronchetti, Nico Ritschel, Reid Holmes, Linxi Li, Mauricio Soto, Raoul Jetley, Igor Wiese, and David C. Shepherd

Full paper in the Journal of Computer Languages (COLA).
Paper; Pre-print.


Enabling End-Users to Implement Larger Block-Based Programs

Nico Ritschel, Felipe Fronchetti, Reid Holmes, Ronald Garcia, and David C. Shepherd

Poster at the International Conference on Software Engineering (ICSE).
Extended abstract; Pre-print.


Comparing Block-based Programming Models for Two-armed Robots

Nico Ritschel, Vladimir Kovalenko, Reid Holmes, Ronald Garcia, and David C. Shepherd

Full paper in IEEE Transactions on Software Engineering (TSE).
Paper; Pre-print; Supplementary materials archived on Zenodo.


Novice-Friendly Multi-Armed Robotics Programming

Nico Ritschel, Reid Holmes, Ronald Garcia, and David C. Shepherd

Full paper at the International Workshop on Robotics Software Engineering (RoSE).
Paper; Pre-print.


Modular Capture Avoidance for Program Transformations

Nico Ritschel and Sebastian Erdweg

Full paper at the International Conference on Software Language Engineering (SLE).
Paper; Pre-print.



Graduate Researcher

University of British Columbia

Designed, implemented and evaluated domain-specific software development tools that are usable by end-users without previous programming experience.

Created mock-ups and fully-functional prototypes of user interfaces and workflows.

Designed and conducted controlled experiments, interviews and surveys to evaluate effects on programming performance and satisfaction of end-users.

Analyzed the collected data quantitatively and qualitatively and performed statistical tests.

Visualized and presented findings in writing and gave talks for scientific and general audiences.

September 2017 - December 2023

Sessional Instructor

University of British Columbia

Sessional Instructor for the lecture "Advanced Software Engineering", an in-person course with 52 students.

Taught advanced software design and evaluation, as well as team-based development practices.

Held lectures, organized, mentored and assessed student teams, designed programming assignments, and successfully managed a team of 4 teaching assistants.

Achieved high student satisfaction (100% favourable end-of-term ratings; 4.6/5 overall score).

May 2022 - June 2022

Teaching Assistant

University of British Columbia

Teaching assistant for the lectures "Advanced Software Engineering", "Definition of Programming Languages", "Introduction to Compiler Construction" and "Software Construction".

Responsible for holding tutorial sessions and office hours; design and grading of assignments; grading of midterms and final exams.

8 terms
September 2017 - December 2021

Full-Stack Software Developer and Research Fellow

Darmstadt University of Applied Sciences

Developed and evaluated a web-based energy trading platform as part of a commercial research project in collaboration with local energy suppliers.

Conducted formative interviews with interdisciplinary stakeholders to gather and formalize software and design specifications.

Created user interfaces and APIs based on domain and project requirements, and iteratively refined their design based on user studies and semi-structured interviews.

June 2016 - August 2017

Teaching Assistant

Technische Universität Darmstadt

Teaching assistant in lecture “Concepts of Programming Languages”.

Responsible for holding tutorial sessions and office hours; design and grading of online programming exercises and support in creating tasks for the final exam.

2 terms
April 2015 - March 2017

Exchange Student Advisor

Technische Universität Darmstadt

University advisor for incoming exchange students.

Planned of events for incoming exchange students, gave academic advice for computer science students, and provided support on studying and living in Germany.

August - October 2016

Undergraduate Research Assistant

Darmstadt University of Applied Sciences

Research Assistant on the project “Energy Storage Optimization in Local Distribution Grids (SolVer)”.

Developed communication inferfaces and protocols for a network-enabled battery in a local distribution grid.

Supported back-end and front-end development of a web-based energy storage management platform.

April 2012 - August 2015


University of British Columbia

Ph.D. Computer Science
Software Practices Lab
Thesis "Enriching Block-based End-user Programming with Visual Features", supervised by Reid Holmes and Ron Garcia

Technische Universität Darmstadt

M.Sc. Computer Science
Software Technology Group
Thesis "A Meta Representation for Reactive Dependency Graphs", supervised by Mira Mezini and Ragnar Mogk

Technische Universität Darmstadt

B.Sc. Computer Science
Thesis "Modular Hygienic Program Transformations", supervised by Mira Mezini and Sebastian Erdweg

Personal Interests

Living in Vancouver fortunately gives me easy access to outdoor activities like running, hiking, snowboarding and camping. I have hiked a fair share of trails around Vancouver, but my proudest hiking achievement (and most stunning experience) was reaching to the top of the Half Dome in Yosemite Valley in the US. I also enjoy rock climbing, although I blasphemously prefer belayed indoor climbing over the multitude of outdoor climbing areas that are available close-by.

I have served as a student representative on several departmental committees, including Graduate Affairs, Graduate Recruiting and Faculty Hiring for Educational Leadership. From Spring 2018 to 2019, I was the UDLS czar of UBC's Computer Science department. During this time I have successfully begged bribed encouraged grad students and faculty to give a total of 33 undistinguished talks about anything they are interested in except their own research. 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, I have co-hosted a puzzle hunt for the John's Hopkins Computer Science department with my partner.