Assistant professor

Department of Distributed and Dependable Systems
Faculty of Mathematics and Physics
Charles University

Malostranské náměstí 25
118 00 Praha 1
Czech Republic

Office: 309, 3rd floor


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.

Recent work


Education & experience


T. Petříček:
Language and the Rise of the Algorithm by Jeffrey M. Binder (review), in Technology and Culture 65(1), pp. 427-429, 2024
T. Petříček, G. Burg, A. Nazábal, T. Ceritli, E. Jiménez-Ruiz, C. Williams:
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
P. Taylor-Gooby, T. Petříček, J. Cunliffe:
Covid19, Charitable Giving and Collectivism: a data-harvesting approach, in Journal of Social Policy 52(3), pp. 473-494, 2023
DOI: 10.1017/S0047279421000714
J. Edwards, T. Petříček, T. van der Storm:
Live & Local Schema Change: Challenge Problems, in , 2023
DOI: 10.48550/arXiv.2309.11406
J. Jakubovic, J. Edwards, T. Petříček:
Technical Dimensions of Programming Systems, in The Art, Science, and Engineering of Programming 7(3), pp. 13:1-13:59, 2023
DOI: 10.22152/
J. Jakubovic, T. Petříček:
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
J. Edwards, T. Petříček:
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
R. Perera, M. Nguyen, T. Petříček, M. Wang:
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
T. Petříček:
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
T. Petříček:
Composable data visualizations, in Journal of Functional Programming 31, pp. e13, 2021
DOI: 10.1017/S0956796821000046
T. Petříček:
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
T. Petříček:
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/
J. Edwards, S. Kell, T. Petříček, L. Church:
Evaluating programming systems design, in Proceedings of the 30th Annual Workshop of the Psychology of Programming Interest Group, 2019
T. Petříček:
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/
T. Petříček:
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
T. Petříček:
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/
A. Mycroft, D. Orchard, T. Petříček:
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
T. Petříček:
Programming language theory: Thinking the unthinkable, in Proceedings of the 27th Annual Workshop of the Psychology of Programming Interest Group, pp. 31, 2016
T. Petříček, G. Guerra, D. Syme:
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
T. Petříček:
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
T. Petříček, D. Orchard, A. Mycroft:
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
D. Orchard, T. Petříček:
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
T. Petříček, D. Syme, Z. Bray:
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
T. Petříček, D. Syme:
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
T. Petříček, D. Orchard, A. Mycroft:
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
D. Syme, K. Battocchi, K. Takeda, D. Malayeri, T. Petříček:
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
T. Petříček, A. Mycroft, D. Syme:
Extending monads with pattern matching, in Proceedings of the 4th ACM SIGPLAN Symposium on Haskell, pp. 1–12, 2011
DOI: 10.1145/2034675.2034677
T. Petříček, D. Syme:
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
D. Syme, T. Petříček, D. Lomov:
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
T. Petříček, D. Syme:
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