List of topics and papers (M1ICE, ECa, P1)

Software Preservation

Software Heritage: Why and How to Preserve Software Source Code, by Roberto Di Cosmo, Stefano Zacchiroli.

Software engineering principles

Software Engineering at Google, by Fergus Henderson.

Why Google Stores Billions of Lines of Code in a Single Repository, by Rachel Potvin, Josh Levenberg. In Communications of the ACM, Vol. 59 No. 7, Pages 78-87, 2016.

Development and Deployment at Facebook, by Dror Feitelson, Eitan Frachtenberg, and Kent Beck. In IEEE Internet Computing 17, 4 (July 2013).

Deploying Search Based Software Engineering with Sapienz at Facebook, by Nadia Alshahwan, Xinbo Gao, Mark Harman, Yue Jia, Ke Mao, Alexander Mols, Taijin Tei, and Ilya Zorin. In Search-Based Software Engineering 2018, Springer.

The antifragile organization, by Ariel Tseitlin. In Commun. ACM 56, 8 (August 2013).

Software Testing

Chaos Engineering, by Ali Basiri, Niosha Behnam, Ruud de Rooij, Lorin Hochstein, Luke Kosewski, Justin Reynolds, Casey Rosenthal. In IEEE Software vol. 33 no. 3, p. 35-41, 2016.

State of Mutation Testing at Google, by Goran Petrovic and Marko Ivankovic. In Proceedings of the 40th International Conference on Software Engineering 2017 (SEIP).

A Large-Scale Study of Test Coverage Evolution, by Michael Hilton, Jonathan Bell and Darko Marinov. In Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering (ASE ’18), ACM.

Programming Language

A Large-Scale Study of Programming Languages and Code Quality in GitHub, by Baishakhi Ray, Daryl Posnett, Premkumar Devanbu, Vladimir Filkov. In Communications of the ACM, Vol. 60 No. 10, Pages 91-100, Oct. 2017.

A programmable programming language, by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, and Sam Tobin-Hochstadt. In Communications of the ACM 61, 3, Pages 62-71, Feb. 2018. DOI:


Against a Universal Definition of ‘Type’, by Tomas Petricek. In Proceedings of Onward! Essays 2015.

In Search of Types, by Stephen Kell. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (Onward! 2014).

To Type or Not to Type: Quantifying Detectable Bugs in JavaScript by Z. Gao, C. Bird and E. T. Barr. In IEEE/ACM 39th International Conference on Software Engineering (ICSE’17), Buenos Aires, 2017, pp. 758-769.

On understanding data abstraction, revisited by William R. Cook. In the 24th ACM SIGPLAN conference on Object Oriented Programming Systems Languages and Applications (OOPSLA ‘09), 2009.

Approximate computing

A survey of techniques for approximate computing, by Mittal, S. ACM Computing Surveys (CSUR), 48(4), 62 (2016).

Software modularity

Traits: Composable Units of Behavior, by Nathanael Schärli, Stéphane Ducasse, Oscar Nierstrasz and Andrew Black. In European Conference on Object-Oriented Programming (ECOOP 2003).

Aspect-oriented programming, by Kiczales G. et al. European Conference on Object-Oriented Programming (ECOOP 1997).

Software synthesis

Automatic patch generation by learning correct code, by Fan Long and Martin Rinard. In Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ‘16). ACM, New York, NY, USA, 298-312.