Assistant 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
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).
Recent work
- 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
Teaching
Current year
- I have no fixed office hours, drop me an email if you want to meet!
- I will be teaching Programming language design (NPRG075).
- I will also run an Unofficial F# course for anyone interested.
- My other PL course Write your own tiny programming system(s)! (NPRG077) will not run this year!
In the future, NPRG077 will likely continue to alternate with NPRG075 and will be back in 2025/26. - 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.
Previous years
- In summer 2022/23, 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
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
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
Composable data visualizations, in Journal of Functional Programming 31, pp. e13, 2021
DOI: 10.1017/S0956796821000046
Programming as architecture, design, and urban planning, in Proceedings of the 2021 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, pp. 114–124, 2021
ISBN: 978-1-4503-9110-8, DOI: 10.1145/3486607.3486770
Typed Image-based Programming with Structure Editing, pre-print version available here.
Foundations of a live data exploration environment, in The Art, Science, and Engineering of Programming 4(3), pp. 8:1-8:37, 2020
DOI: 10.22152/programming-journal.org/2020/4/8
Evaluating programming systems design, in Proceedings of the 30th Annual Workshop of the Psychology of Programming Interest Group, 2019
What we talk about when we talk about monads, in The Art, Science, and Engineering of Programming 2(3), pp. 12:1-12:27, 2018
DOI: 10.22152/programming-journal.org/2018/2/12
Data Exploration through Dot-driven Development, in 31st European Conference on Object-Oriented Programming (ECOOP 2017), pp. 21:1–21:27, 2017
ISBN: 978-3-95977-035-4, DOI: 10.4230/LIPIcs.ECOOP.2017.21
Miscomputation in software: Learning to live with errors, in The Art, Science, and Engineering of Programming 1(2), pp. 14:1-14:24, 2017
DOI: 10.22152/programming-journal.org/2017/1/14
Effect Systems Revisited—Control-Flow Algebra and Semantics, in Semantics, Logics, and Calculi: Essays Dedicated to Hanne Riis Nielson and Flemming Nielson on the Occasion of Their 60th Birthdays, pp. 1-32, 2016
ISBN: 978-3-319-27810-0
Programming language theory: Thinking the unthinkable, in Proceedings of the 27th Annual Workshop of the Psychology of Programming Interest Group, pp. 31, 2016
Types from data: making structured data first-class citizens in F#, in Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 477–490, 2016
ISBN: 978-1-4503-4261-2, DOI: 10.1145/2908080.2908115
Against a universal definition of 'Type', in 2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!), pp. 254–266, 2015
ISBN: 978-1-4503-3688-8, DOI: 10.1145/2814228.2814249
Coeffects: a calculus of context-dependent computation, in Proceedings of the 19th ACM SIGPLAN International Conference on Functional Programming, pp. 123–135, 2014
ISBN: 978-1-4503-2873-9, DOI: 10.1145/2628136.2628160
Embedding effect systems in Haskell, in Proceedings of the 2014 ACM SIGPLAN Symposium on Haskell, pp. 13–24, 2014
ISBN: 978-1-4503-3041-1, DOI: 10.1145/2633357.2633368
In the Age of Web: Typed Functional-First Programming Revisited, in Proceedings ML Family/OCaml Users and Developers workshops, pp. 64–79, 2014
DOI: 10.4204/EPTCS.198.3
The F# Computation Expression Zoo, in Practical Aspects of Declarative Languages, pp. 33-48, 2014
ISBN: 978-3-319-04132-2, DOI: 10.1007/978-3-319-04132-2_3
Coeffects: Unified Static Analysis of Context-Dependence, in Automata, Languages, and Programming, pp. 385-397, 2013
ISBN: 978-3-642-39212-2, DOI: 10.1007/978-3-642-39212-2_35
Themes in information-rich functional programming for internet-scale data sources, in Proceedings of the 2013 workshop on Data driven functional programming, pp. 1–4, 2013
ISBN: 978-1-4503-1871-6, DOI: 10.1145/2429376.2429378
Extending monads with pattern matching, in Proceedings of the 4th ACM SIGPLAN Symposium on Haskell, pp. 1–12, 2011
DOI: 10.1145/2034675.2034677
Joinads: A Retargetable Control-Flow Construct for Reactive, Parallel and Concurrent Programming, in Practical Aspects of Declarative Languages, pp. 205-219, 2011
ISBN: 978-3-642-18378-2, DOI: 10.1007/978-3-642-18378-2_17
The F# Asynchronous Programming Model, in Practical Aspects of Declarative Languages, pp. 175-189, 2011
ISBN: 978-3-642-18378-2, DOI: 10.1007/978-3-642-18378-2_15
Collecting hollywood's garbage: avoiding space-leaks in composite events, in Proceedings of the 9th International Symposium on Memory Management, pp. 53–62, 2010
DOI: 10.1145/1806651.1806662