I am a principal researcher at Oracle Labs, working on the Graal language infrastructure project. My research is focused on composable, scalable and modular programming language abstractions for large-scale distributed computing, as well as implementation of frameworks, languages and runtimes for distributed programming.
Previously, I worked at Google on cloud computing infrastructure and big data analytics for Google Maps. Before that, I was working as a research assistant in the School of Computer and Communication Sciences at the EPFL in Switzerland, in the LAMP laboratory on Scala development under the supervision of dr. Martin Odersky, where I received a doctoral degree in 2014.
- Data Structures and Algorithms for Data-Parallel Computing in a Managed Runtime
LAMP, Faculté Informatique et Communications, École Polytechnique Fédérale de Lausanne
Lausanne, Switzerland, July 2014
[PDF] [Link] [General Public Presentation]
- Learning Concurrent Programming in Scala
London, UK, November 2014
[Book Website] [Link]
Pluggable Scheduling for the Reactor Programming Model – Extended Version
AGERE! State-of-the-Art Volume
Encoding the Building Blocks of Communication
Vancouver, Canada, October 2017
Making Collection Operations Optimal with Aggressive JIT Compilation
Aleksandar Prokopec, David Leopoldseder, Gilles Duboscq, Thomas Wuerthinger
Scala Symposium 2017, co-located with SPLASH
Vancouver, Canada, October 2017
Conc-Trees for Functional and Parallel Programming
Aleksandar Prokopec, Martin Odersky
The 28th International Workshop on Languages and Compilers for Parallel Computing
Raleigh, North Carolina, September 2015
Efficient Lock-Free Work-stealing Iterators for Data-Parallel Collections
Aleksandar Prokopec, Dmitry Petrashko, Martin Odersky
Parallel, Distributed, and Network-Based Processing 2015 (PDP 2015)
Turku, Finland, March 2015
Containers and Aggregates, Mutators and Isolates for Reactive Programming
Aleksandar Prokopec, Philipp Haller, Martin Odersky
The 5th Annual Scala Workshop, co-located with ECOOP
Uppsala, Sweden, July 2014
Near Optimal Work-Stealing Tree Scheduler for Highly Irregular Data-Parallel Workloads
Aleksandar Prokopec, Martin Odersky
The 26th International Workshop on Languages and Compilers for Parallel Computing (LCPC 2013)
Santa Clara, California, September 2013
Composition and Reuse with Compiled Domain-Specific Languages
Arvind K. Sujeeth, Tiark Rompf, Kevin J. Brown, HyoukJoong Lee, Hassan Chafi, Victoria Popic, Michael Wu, Aleksandar Prokopec, Vojin Jovanovic, Martin Odersky, Kunle Olukotun
The European Conference on Object-Oriented Programming (ECOOP 2013)
Montpellier, France, July 2013
FlowPools: A Lock-Free Deterministic Concurrent Dataflow Abstraction
Aleksandar Prokopec, Heather Miller, Tobias Schlatter, Philipp Haller, and Martin Odersky
The 25th International Workshop on Languages and Compilers for Parallel Computing (LCPC 2012)
Tokyo, Japan, September 2012
Concurrent Tries with Efficient Non-blocking Snapshots
Aleksandar Prokopec, Nathan Bronson, Phil Bagwell, Martin Odersky
17th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPOPP 2012)
New Orleans, Louisiana, February 2012
Lock-Free Resizeable Concurrent Tries
Aleksandar Prokopec, Phil Bagwell, Martin Odersky
The 24th International Workshop on Languages and Compilers for Parallel Computing (LCPC 2011)
Fort Collins, Colorado, September 2011
Best Paper Presentation Award
Adaptive Mutation Operator Cycling
Aleksandar Prokopec, Marin Golub
The Second International Conference on the Applications of Digital Information and Web Technologies (ICADIWT 2009)
London, UK, August 2009
- Prilagodljivi genetski algoritam (An Adaptive Genetic Algorithm)
Faculty of Electrical Engineering and Computing
Zagreb, Croatia, May 2009
[PDF] (in Croatian)
This section shortly describes some of the projects I’ve been working on.
An event-based framework for distributed programming based on event streams, channels and reactors.
Scala Coroutines is a library-level extension for the Scala programming language that introduces first-class coroutines.
Coroutines are a language abstraction that generalizes subroutines (i.e. procedures, methods or functions). Unlike a subroutine, which is invoked once and executes until it completed, a coroutine can pause execution and yield control back to the caller, or another coroutine. The caller can then resume the coroutine when appropriate.
SBT plugin for workflow automation.
A data-parallel programming framework that optimizes collection operations and offers superior performance to that provided by the Scala standard library collections.
ScalaMeter is a microbenchmarking and performance regression testing framework for the JVM platform that allows expressing performance tests in a way which is both simple and concise.
It features quick and easy setup for simple microbenchmarks, multiple configurable JVM microbenchmarking methodologies, concise DSL for performance tests and input data generation, automated regression detection and configurable performance test reporting.
The concurrent trie, or Ctrie, is a trie-based concurrent non-blocking data structure which supports efficient, scalable insertions, lookups and removals. It is designed to be cache aware and space efficient. The worst-case complexity of all operations is logarithmic with a very low constant factor. It is designed for efficient hash-based element storing and retrieval. Unlike most concurrent hash tables, there is no global resize phase as the data structure grows or shrinks.
The concurrent tries support an efficient linearizable snapshot operation, which allows consistent, linearizable concurrent implementations of methods like size, iterator or removing all the elements.
- Technical report – pseudocode, performance tests and the correctness proof of the operations
- PPoPP paper describes the snapshot operation in more depth
- Source code is also available in this repository and is available for pre-2.10.0 releases of Scala
- Scala 2.10.x standard library introduced a concurrent tries implementation
Scala Parallel Collections
The Scala Parallel Collection framework parallelizes collection operations in a generic way. This framework is easy to use and straightforward to extend to new collections. It implements parallel collections such as parallel arrays, parallel hash maps, parallel hash tries and parallel vectors. It is integrated with the regular Scala Collection framework and allows the user to switch between the parallel and sequential implementation of a collection easily.
Evolutionary Computing IDE
Algorithms in the domain of evolutionary computing often require a large amount of experiments. Experiments involve tuning a number of parameters to find the optimal set of parameters for a given problem or a given instance of the problem. To ease algorithm development, the Evolutionary Computing IDE provides a graphical user interface which allows tweaking the parameters, testing and visualizing the algorithm, running batch jobs and producing performance graphs.
- Source code
- Binaries – for Windows, Linux, Mac OS X
- Paper – an adaptive genetic algorithm variant developed using this framework
VHDLLab is an online system used for modelling and simulation of digital circuits, whose main components are the VHDL code editor, automaton-to-circuit synthesizer, a circuit schema editor and a circuit simulator. This system is designed for online use during practical exercises in digital electronics and digital logic courses. It is used on the Bologna studies on the Faculty of Electrotechnics and Computer Science in Zagreb. It is devised to soften the learning curve of students who are being introduced to topics such as digital circuits, modelling and simulation.
- Source code
- Rector Award Writeup (in Croatian) – VHDLLab report that won the University of Zagreb Rector Award
- Bee-Scala 2016 [Slides]
- ScalaDays Berlin 2016, Berlin, Germany, June 2016 [Slides] [Video]
- VoxxedDays Zurich 2016, Zurich, Switzerland, March 2016 [Slides] [Video]
- Onward! 2015, Pittsburgh, Pennsylvania, USA, October 2015 [Slides]
Reactive Collections and Game Engine Design
- Scala Workshop 2014, Uppsala, Sweden, July 2014 [SlideShare]
- ScalaDays 2014, Berlin, Germany, June 2014 [SlideShare] [Video]
- Scala eXchange 2013, London, UK, December 2014 [PDF] [Video]
- LCPC 2013, San Jose, California, September 2013 [PPT]
- Oracle VM Meetup 2014, Zurich, Switzerland, November 2014 [Speaker Deck]
- Scala eXchange 2012, London, UK, November 2012 [PPT] [Video]
- ScalaDays 2012, London, UK, April 2012 [Video] [Source]
- Croatian IEEE Computer Chapter, Zagreb, Croatia, April 2012
- PPOPP 2012, New Orleans, Louisiana, February 2012 [PPT]
- LCPC 2011, Fort Collins, Colorado, September 2011 [PPT]
Scala Parallel Collections
- Euro-Par 2011, Bordeaux, France, September 2011
- Scala eXchange 2011, London, UK, June 2011 [PPT] [Video] [Source]
- ScalaDays 2011, Palo Alto, California, US, June 2011 [PPT] [Video] [Source]
- ScalaDays 2010, Lausanne, Switzerland, April 2010
- “Scala – The Learning Curve”, Jazoon 2015, Zurich, Switzerland, October 2015 [HTTP] [PDF]
- “Scala as a Research Tool”, ECOOP 2013, Montpellier, France, July 2013 [HTTP]
- “Introduction to Scala”, Java User Group Grenoble, Grenoble, France, March 2011 [PPT]
SIP-20: Improved Lazy Val Initialization
Aleksandar Prokopec, Miguel Garcia, Jason Zaugg, Hubert Plociniczak, Viktor Klang, Martin Odersky
Lausanne, Switzerland, May 2013
Lausanne, Switzerland, November 2012
Parallel Collections Overview
Aleksandar Prokopec, Heather Miller
Lausanne, Switzerland, April 2012
SIP-14: Futures and Promises
Philipp Haller, Aleksandar Prokopec, Heather Miller, Viktor Klang, Roland Kuhn, and Vojin Jovanovic
Lausanne, Switzerland, January 2012
- Journal of Logical and Algebraic Methods in Programming 2017
- SPAA 2017
- POPL 2017
- PPL (2016)
- OPODIS 2015
- Transactions on Computers (2015)
- HLPP 2014
- ECOOP 2013
- ScalaDays 2010
- ICADIWT 2009
I worked on the following courses:
- Parallel Programming 2016, lecturer and course organizer at EPFL and Coursera
- Principles of Reactive Programming 2013 - first iteration of the course at Coursera!
- Programming Principles 2013 - also at Coursera
- Programming Principles 2013 (spring) - at Coursera
- Programming Principles 2012 - also at Coursera
- Advanced Programming 2011
- Advanced Programming 2010
You can find my reading journal here.
You can see a list of my awards and honours here.
|I used to use Emacs for a long time. I still find it good for editing through command-line.|
|I'm now using the Sublime text editor. This editor really increased my productivity, and its future looks promising. I hope its maintained and developed for a long time to come.|
|I like to program in Scala. Scala is a very nice language and its popularity is constantly growing. If you like Java, chances are that you will fall in love with Scala. So many things are so much simpler, easier, faster with it. Try it out.|
|I have a gold Scala badge at Stackoverflow.|
|I hack code for my Android phone in free time.|
|I like to model in 3ds MAX from time to time as a hobby.|
|My Open Source Report Card on GitHub.|