Tobias Kohn

dblp:159/0139 · DBLP profile ↗
← Back
15ranked-venue papers
5as first author
7since 2021 · last 2026
0000-0002-9251-8944ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Human-computer interaction and ubiquitous computing · 12 · 4 first-author · 6 since 2021Artificial intelligence and machine learning · 1Software engineering, systems software and programming languages · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 since 2021
YearPublicationVenuePosition
2026 WebTigerPython: A Low-Floor High-Ceiling Python IDE for the Browser
abstract
The shift to BYOD (bring your own device) policies at schools requires browser-based programming tools that balance accessibility and functionality. We introduce WebTigerPython, a Python IDE combining novice-friendly features (Turtle graphics, robotics, error messages) with advanced capabilities (NumPy, Matplotlib). Its client-side execution and web worker architecture ensure non-blocking interactivity. Python code is run in WebAssembly, performing only about three times slower than native CPython but significantly faster than other web-based IDEs to which we compared it. Deployed in classrooms with 800+ daily users, WebTigerPython supports offline use, URL-based sharing of code, and aligns with existing curricula—demonstrating how web tools can rival local IDEs without compromising power or accessibility.
Clemens Bachmann, Alexandra Maximova, Tobias Kohn, Dennis Komm
SIGCSE (1)3
2025 Models of Mastery Learning for Computing Education
abstract
The application of mastery learning, where students progress through their learning in a self-paced manner until they have mastered specific concepts, is considered appealing for teaching introductory programming courses. Despite its growing popularity in computing and its extensive use in other disciplines, there is no overview of the design of courses that use mastery learning. In this position paper, we present an overview of five mastery learning models and discuss examples of how these can be applied in practice, both in foundational programming as well as more advanced courses. Our analysis focuses on the student progression through the course, the assessment structure, and the support for self-paced learning, including for struggling students. This work provides a greater understanding of mastery learning and its application in a computing education context.
Claudia Szabo, Miranda C. Parker, Michelle Friend, Johan Jeuring, Tobias Kohn, Lauri Malmi, Judithe Sheard
SIGCSE (1)5
2024 "Something that Happens Each Day" - Students' Explanations of What Algorithms Are
abstract
Algorithm is a highly abstract concept that is difficult to define precisely, but has entered the public discourse. In addition to a procedural knowledge about algorithms, we also need to ensure pupils have a viable conceptual knowledge.
Martina Landman, Tobias Kohn
ITiCSE (1)2
2023 Generating High-Precision Feedback for Programming Syntax Errors using Large Language Models
Tung Phung, José Cambronero, Sumit Gulwani, Tobias Kohn, Rupak Majumdar, Adish Singla, Gustavo Soares
EDM4
2023 Generative AI for Programming Education: Benchmarking ChatGPT, GPT-4, and Human Tutors
abstract
Generative AI and large language models hold great promise in enhancing computing education by powering next-generation educational technologies. State-of-the-art models like OpenAI’s ChatGPT [8] and GPT-4 [9] could enhance programming education in various roles, e.g., by acting as a personalized digital tutor for a student, a digital assistant for an educator, and a digital peer for collaborative learning [1, 2, 7]. In our work, we seek to comprehensively evaluate and benchmark state-of-the-art large language models for various scenarios in programming education.
Tung Phung, Victor-Alexandru Padurean, José Cambronero, Sumit Gulwani, Tobias Kohn, Rupak Majumdar, Adish Singla, Gustavo Soares
ICER (2)5
2023 Coping With Scoping: Understanding Scope and Parameters
abstract
Understanding data flow and tracing the values of variables across a program is an essential skill for reading and comprehending program code. Two major hurdles in tracing variable values are variable (re)assignment and scopes with parameter passing and possible shadowing of variables.
Tobias Kohn, Dennis Komm
ITiCSE (1)1
2023 Transformed by Transformers: Navigating the AI Coding Revolution for Computing Education: An ITiCSE Working Group Conducted by Humans
abstract
The recent advent of highly accurate and scalable large language models (LLMs) has taken the world by storm. From art to essays to computer code, LLMs are producing novel content that until recently was thought only humans could produce. Recent work in computing education has sought to understand the capabilities of LLMs for solving tasks such as writing code, explaining code, creating novel coding assignments, interpreting programming error messages, and more. However, these technologies continue to evolve at an astonishing rate leaving educators little time to adapt. This working group seeks to document the state-of-the-art for code generation LLMs, detail current opportunities and challenges related to their use, and present actionable approaches to integrating them into computing curricula.
James Prather, Paul Denny 0001, Juho Leinonen 0001, Brett A. Becker, Ibrahim Albluwi, Michael E. Caspersen, Michelle Craig, Hieke Keuning, Natalie Kiesler, Tobias Kohn, Andrew Luxton-Reilly, Stephen MacNeil, Andrew Petersen 0001, Raymond Pettit, Brent N. Reeves, Jaromír Savelka
ITiCSE (2)10
2020 Dynamic pattern matching with Python
abstract
Pattern matching allows programs both to extract specific information from complex data types, as well as to branch on the structure of data and thus apply specialized actions to different forms of data. Originally designed for strongly typed functional languages with algebraic data types, pattern matching has since been adapted for object-oriented and even dynamic languages. This paper discusses how pattern matching can be included in the dynamically typed language Python in line with existing features that support extracting values from sequential data structures.
Tobias Kohn, Guido van Rossum, Gary Brandt Bucher II, Talin, Ivan Levkivskyi
DLS1
2020 Problem Solving and Creativity: Complementing Programming Education with Robotics
abstract
With its direct feedback and the tangible machine, robotics is a strong motivator for engaging students in STEM fields, as evidenced by the popularity of competitions and events such as FIRST and Robo Games. However, in the context of K-12 computer science education, the potential of robotics seems as yet hardly tapped into. In an attempt to bridge the gap, we designed a Python library for robotics with Lego's EV3 robots to complement programming classes. We employed our library to teach secondary school students as part of an outreach activity. Our approach is built around open-ended tasks instead of narrow exercise statements. Although our activity was based on the EV3 Space Challenge Set, we encouraged the students at any time to pursue their own ideas and even their own challenges. While students had little problems in using Python to program their robots, we still found a series of misconceptions and observed that female students were more interested in following their own creative projects than in solving given challenges.
Dennis Komm, Adrian Regez, Urs Hauser, Marco Gassner, Pascal Lütscher, Rico Puchegger, Tobias Kohn
ITiCSE7
2020 Tell Me What's Wrong: A Python IDE with Error Messages
abstract
Development environments play a crucial role for novice programmers. Not only do they act as interface to type in and execute programs, but a programming environment is also responsible for reporting errors, managing in- and output when the program is running, or offering the programmer access to the underlying notional machine. In recent years several new educational programming environments for Python have been presented. However, the important issue of reporting errors has rarely been addressed and evaluations often hint that students main issue is the poor quality of Python's error messages. We have therefore written an educational Python environment with enhanced error messages. This paper presents the design and rationale of its three primary features: modifications to Python, enhanced error messages, and the visual debugger.
Tobias Kohn, Bill Z. Manaris
SIGCSE1
2019 LF-PPL: A Low-Level First Order Probabilistic Programming Language for Non-Differentiable Models
abstract
We develop a new Low-level, First-order Probabilistic Programming Language (LF-PPL) suited for models containing a mix of continuous, discrete, and/or piecewise-continuous variables. The key success of this language and its compilation scheme is in its ability to automatically distinguish parameters the density function is discontinuous with respect to, while further providing runtime checks for boundary crossings. This enables the introduction of new inference engines that are able to exploit gradient information, while remaining efficient for models which are not everywhere differentiable. We demonstrate this ability by incorporating a discontinuous Hamiltonian Monte Carlo (DHMC) inference engine that is able to deliver automated and efficient inference for non-differentiable models. Our system is backed up by a mathematical formalism that ensures that any model expressed in this language has a density with measure zero discontinuities to maintain the validity of the inference engine.
Yuan Zhou 0013, Bradley Gram-Hansen, Tobias Kohn, Tom Rainforth, Hongseok Yang, Frank D. Wood
AISTATS3
2019 The Error Behind The Message: Finding the Cause of Error Messages in Python
abstract
The interaction between a novice programmer, and the compiler plays a crucial role in the learning process of the novice programmer. Of particular importance is the compiler's feedback on errors in the program code. Accordingly, compiler error messages are an important and active field of research. Yet, a language that has largely been left out of this discussion so far is Python. We have collected Python programs from high school students taking introductory courses. For each collected erroneous program, we sought to classify the effective error, and assess if the student was able to fix the error. Our study is a precursor to providing improved error messages in Python, and assess their effectiveness. As such, we are eventually interested in finding ways to automatically determine the effective error, so as to base the displayed message on. From our data, we found that a considerable part of students' errors can be attributed to minor mistakes, which can easily be identified and corrected. However, beyond such minor mistakes, a proper error diagnosis might have to be based on a goal/plan analysis of the entire program. Likewise, proper assessment of whether an error has been fixed frequently requires more context than is provided by the program alone.
Tobias Kohn
SIGCSE1
2017 Variable Evaluation: an Exploration of Novice Programmers' Understanding and Common Misconceptions
abstract
For novice programmers one of the most problematic concepts is variable assignment and evaluation. Several questions emerge in the mind of the beginner, such as what does x = 7 + 4 or x = x + 1 really mean? For instance, many students initially think that such statements store the entire calculation in variable x, evaluating the result lazily when actually needed. The common increment pattern x = x + 1 is even believed to be outright impossible. This paper discusses a multi-year project examining how high school students think of assignments and variables. In particular, where does the misconception of storing entire calculations come from? Can we explain the students' thinking and help them develop correct models of how programming works?
Tobias Kohn
SIGCSE1
2016 Making Music with Computers: Creative Programming in Python (Abstract Only)
abstract
This is an introduction to creative software development and music making in Python. This material is intended for CS0/CS1 courses and for courses at the intersection of computing and the arts. The workshop will introduce music making activities for teaching traditional CS1 topics, GUIs, event-driven programming, and connecting to external devices (e.g., smartphones, digital pianos) via MIDI and OSC (Open Sound Control). Participants will be introduced to Jython Music (http://jythonMusic.org), a library of Python modules for creative programming and music making, and will be making their own music artifacts a few minutes later. Intended audience: Computer science educators interested in teaching creative programming and computational thinking for CS0, CS1, introductory courses in the intersection of computing and the arts, and courses intended to attract and retain new CS majors. Some familiarity with Python expected. Each participant will receive a copy of (1) handouts to be used during the workshop, (2) sample student assignments and projects, (3) API documentation, (4) all required software, and (5) numerous sample programs. Laptop required (with Java JDK 7 or higher). All other software will be provided. Headphones are recommended.
Bill Z. Manaris, Tobias Kohn
SIGCSE2
2015 Making Music with Computers: Creative Programming in Python (Abstract Only)
abstract
This is an introduction to creative software development and music making in Python. This material is intended for CS0/CS1 courses and for courses at the intersection of computing and the arts. The workshop will introduce music making activities for teaching traditional CS1 topics, GUIs, event-driven programming, and connecting to external devices (e.g., smartphones, digital pianos) via MIDI and OSC (Open Sound Control). Participants will be introduced to Jython Music (http://jythonMusic.org), a library of Python modules for creative programming and music making, and will be making their own music artifacts a few minutes later. Intended audience: Computer science educators interested in teaching creative programming and computational thinking for CS0, CS1, introductory courses in the intersection of computing and the arts, and courses intended to attract and retain new CS majors. Each participant will receive a copy of (1) handouts to be used during the workshop, (2) sample student assignments and projects, (3) API documentation, (4) all required software, and (5) numerous sample programs. Laptop required (with Java JDK 7 or higher). All other software will be provided. Headphones are recommended.
Bill Z. Manaris, Andrew R. Brown, Tobias Kohn
SIGCSE3