Empirical Study Of Concurrency in Open Source Object Oriented Software

Goal: Perform a study of the usage of concurrency and parallelism in Open Source OO software systems. The study can be a replication of the one that’s mentioned at the end as related reading or can take a different approach.

Research Questions

  • How often do people use concurrency and parallelism?
  • What are the primitives that developers are using? (e.g. simple synchronization, complex j.u.c. abstractions?)
  • [optional] If you run the same analysis over the years, what trends can be detected?
  • [optional] Can you compare different programming languages?
  • [optional] Which are the most discussed concurrency // parallelism issues online? Analyze StackOverflow.

Challenge #1: How to obtain large amounts of source code?

  • Look at Pangea
  • Look at online repositories: Ohloh, SqueakSource, ScalaForge, RubyForge

Challenge #2: How to detect concurrency?

  • reserved keywords, basic APIs (synchronize, Thread, Runnable, wait(), notify(), etc.)
  • well known APIs (e.g. java.util.concurrent)
  • third party libraries (STM, Hadoop, etc.)

Challenge #3: [optional] How to analyze and compare the usage of concurrency across programming languages?

Required Skills: You should like to conduct empirical research and be able to do coding for the fact extraction.

Related Reading: Are Java programmers transitioning to multicore?: a large scale study of Java FLOSS

Last changed by admin on 21 April 2009