Assistant professor
Department of Distributed and Dependable SystemsFaculty of Mathematics and Physics
Charles University
Malostranské náměstí 25
118 00 Praha 1
Czech Republic
E-mail: petricek@d3s.mff.cuni.cz
Web: http://tomasp.net
Office: 309, 3rd floor
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 doing research on programming systems?
We have funding available for PhD and post-doc positions a range of topics related to programming languages and systems starting in 2024. If you are interested in joining us in Prague, please send me an informal inquiry at petricek@d3s.mff.cuni.cz.
If you are a Matyfz student already and are thinking about staying for a PhD or doing a research-oriented Master’s project focused on programming languages, email me at petricek@d3s.mff.cuni.cz to arrange a meeting or stop by after a lecture!
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
- I have no fixed office hours, drop me an email if you want to meet!
- In winter 2023/24, I will be teaching Write your own tiny programming system(s)! (NPRG077)
(In the future, NPRG077 will alternate with NPRG075) - 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
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
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