Associate professor
Department of Distributed and Dependable SystemsFaculty of Mathematics and Physics
Charles University, Czech Republic
E-mail: petricek@d3s.mff.cuni.cz
Web: http://tomasp.net
Office: 204, 2nd floor, Malá Strana
Teaching
In 2026/27, I am teaching two courses on programming langauges with Vít Šefl and I’m also involved in teaching two one-off courses related to history and philosophy of programming (see the poster)!
Interested in programming languages?
Join our two courses that cover the principles and theory of programming languages. Those will be around in the upcoming years, so you can also plan to attend later.
- Principles of programming languages - Introductory course in the summer semester
- Theory of programming languages - More theoretical course in the winter semster
Interested in history and philosophy?
The following are ad-hoc courses that will probably only exist in 2026/27. If you want to learn about the history of programming and programming concepts, do not miss them!
- Cultures of programming - Course based on my book (see below)
- Functions, trees, processes (winter) - Joint course with David Corfield and Jaroslav Nešetřil
(this will continue in the summer semester too).
Other teaching and information
- I have no fixed office hours, drop me an email if you want to meet!
- I will be supervising a lab for Programming in C# (NPRG035).
- I am happy to supervise projects for Ročníkový Projekt (NPRG035). Check out the project ideas page.
I get more inquiries than I can accept, so ask early. I prefer topics related to my research. - I am happy to supervise Bachelor and Master theses. Check out our group page for recently defended theses.
Research
I’m interested in understanding the nature of programming and finding new and better ways of doing it. I use various methods ranging from theoretical programming langauge research, applied work resulting in open-source software, as well as interdisciplinary approaches that look at programming through the perspectives of history and philosophy. I believe that the most interesting developments in programming happen when a new way of thinking makes difficult problems disappear.
My current work is focused on programming systems. Programs are created not by just writing code, but by interacting with rich stateful programming systems or environments. Programming systems still include code, but they also encompass live or structure editors, runtime environment and other developer tools. I believe that we need to (i) find new fundamental ways of studying programming systems, (ii) revisit past programming systems that offered interesting ways of interaction, and (iii) apply those ideas to domains such as data science tooling or low-code and no-code programming.
In recent years, I also worked on functional programming and contributed to the development of the F# language and type providers at Microsoft Research. My PhD from University of Cambridge was on coeffects, a theory of context-aware programming languages. At University of Kent and The Alan Turing Institute, I spent most of my time working on programming tools for data science.
Interested in programming langauges and systems?
- See Programming Languages and Systems group page for more information about our work.
- Check out PRG • PRG, the Prague programming languages and systems research network, sign up for email updates, join our reading group and other events!
- Look through the student project ideas, which includes many programming system topics.
- We are looking for PhD and post-docs to join our group to work on a range of topics related to programming languages and systems. See the PhD opportunities page and send me an informal inquiry (petricek@d3s.mff.cuni.cz).
Cultures of programming
Check out my open access book on the history of programming!
What defines a correct program? What education makes a good programmer? The answers to these questions depend on whether programs are seen as mathematical entities, engineered socio-technical systems or media for assisting human thought.
Programmers have developed a wide range of concepts and methodologies to construct programs of increasing complexity. This book shows how those concepts and methodologies emerged and developed from the 1940s to the present. It follows several strands in the history of programming and interprets key historical moments as interactions between five different cultures of programming.
Available from: Cambridge University Press
Recent work
- Critical architecture/software theory - what can the world of software learn from post-modern architecture?
- Technical dimensions of programming systems - a framework for studying stateful, interactive, graphical systems
- The Lost Ways of Programming: Commodore 64 BASIC - BASIC as an interactive programming system
- Histogram: You have to know the past to understand the present - experimental data exploration tool
- The Gamma: Tools for open data-driven storytelling (and more demos) - data exploration for non-programmers
- Compost.js: Composable data visualization library - functional charting library for the web
- Coeffects: Context-aware programming languages - interactive explanation of my PhD research
Past teaching
- In summer 2025/26, I ran the labs for Principles of programming languages (based on tiny systems)
- In winter 2025/26, I supervised a lab for Programming in C# (NPRG035)
- In winter 2025/26, I was teaching Write your own tiny programming system(s)! (NPRG077)
- In winter 2024/25, I ran an unofficial F# course for anyone interested
- In winter 2024/25, I was teaching Programming language design (NPRG075)
- In summer 2023/24, I supervised two labs for Advanced C# Programming (NPRG038)
- In winter 2023/24, I was teaching Write your own tiny programming system(s)! (NPRG077)
- In summer 2022/23, I supervised a lab for Introduction to Linux (NSWI177)
- In winter 2022/23, I was teaching Programming language design (NPRG075)
Education & experience
- Lecturer, University of Kent, UK, 2018-2022
- Visiting Researcher, The Alan Turing Institute, UK, 2016-2020
- Postdoc/contractor, Microsoft Research Cambridge, UK, 2014-2016
- PhD, Computer Laboratory, University of Cambridge, UK, 2017
- Mgr (MSc), Faculty of Mathematics and Physics, Charles University in Prague, 2010
Publications
Publications in the last 5 years are listed below. For a complete list, see the publications page.
Languages, Compilers, Analysis - From Beautiful Theory to Useful Practice: Essays Dedicated to Alan Mycroft on the Occasion of His Retirement, Springer Nature Switzerland, 2026
ISBN: 978-3-032-08186-5 978-3-032-08187-2, DOI: 10.1007/978-3-032-08187-2
On the Limits of Making Programming Easy, in Languages, Compilers, Analysis - From Beautiful Theory to Useful Practice: Essays Dedicated to Alan Mycroft on the Occasion of His Retirement, pp. 215-233, 2026
ISBN: 978-3-032-08187-2, DOI: 10.1007/978-3-032-08187-2_11
A Pragmatic Approach to Replay Compilation, in Companion Proceedings of the 9th International Conference on the Art, Science, and Engineering of Programming (Programming 2025), pp. 3:1–3:4, 2025
ISBN: 978-3-95977-382-9, DOI: 10.4230/OASIcs.Programming.2025.3
Comparing R Bytecode Compilers Written in R, Java, and Rust, in Companion Proceedings of the 9th International Conference on the Art, Science, and Engineering of Programming (Programming 2025), pp. 1:1–1:6, 2025
ISBN: 978-3-95977-382-9, DOI: 10.4230/OASIcs.Programming.2025.1
Cultures of Programming: The Development of Programming Concepts and Methodologies, Cambridge University Press, 2025
ISBN: 978-1-009-49234-8, DOI: 10.1017/9781009492379
Denicek: Computational Substrate for Document-Oriented End-User Programming, in Proceedings of the 38th Annual ACM Symposium on User Interface Software and Technology, pp. 1–19, 2025
ISBN: 979-8-4007-2037-6, DOI: 10.1145/3746059.3747646
OASIcs, Volume 134, Programming 2025, Complete Volume, Schloss Dagstuhl – Leibniz-Zentrum für Informatik, 2025
ISBN: 978-3-95977-382-9, DOI: 10.4230/OASIcs.Programming.2025
Toward a Typed Intermediate Language for R, in Companion Proceedings of the 9th International Conference on the Art, Science, and Engineering of Programming (Programming 2025), pp. 24:1–24:4, 2025
ISBN: 978-3-95977-382-9, DOI: 10.4230/OASIcs.Programming.2025.24
Don't Call Us, We'll Call You: Towards Mixed-Initiative Interactive Proof Assistants for Programming Language Theory, pre-print version available here.
Language and the Rise of the Algorithm by Jeffrey M. Binder (review), in Technology and Culture 65(1), pp. 427-429, 2024
Schema Evolution in Interactive Programming Systems, in The Art, Science, and Engineering of Programming 9(1), pp. 2:1-2:33, 2024
DOI: 10.22152/programming-journal.org/2025/9/2
AI Assistants: A Framework for Semi-Automated Data Wrangling, in IEEE Transactions on Knowledge and Data Engineering 35(9), pp. 9295-9306, 2023
DOI: 10.1109/TKDE.2022.3222538
Covid19, Charitable Giving and Collectivism: a data-harvesting approach, in Journal of Social Policy 52(3), pp. 473-494, 2023
DOI: 10.1017/S0047279421000714
Live & Local Schema Change: Challenge Problems, in , 2023
DOI: 10.48550/arXiv.2309.11406
Technical Dimensions of Programming Systems, in The Art, Science, and Engineering of Programming 7(3), pp. 13:1-13:59, 2023
DOI: 10.22152/programming-journal.org/2023/7/13
Ascending the ladder to self-sustainability, in To appear in Onward! 2022: Proceedings of the 2022 ACM SIGPLAN international symposium on new ideas, new paradigms, and reflections on programming and software, Auckland, New Zealand, December, 2022, 2022
Interaction vs. Abstraction: Managed Copy and Paste, in Proceedings of the 1st ACM SIGPLAN International Workshop on Programming Abstractions and Interactive Notations, Tools, and Environments, pp. 11–19, 2022
ISBN: 978-1-4503-9910-4, DOI: 10.1145/3563836.3568723
Linked visualisations via Galois dependencies, in Proceedings of the ACM on Programming Languages 6(POPL), pp. 7:1–7:29, 2022
DOI: 10.1145/3498668
The Gamma: Programmatic Data Exploration for Non-programmers, in 2022 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), pp. 1-7, 2022
DOI: 10.1109/VL/HCC53370.2022.9833134






