CS6004: Code Optimization for Object-Oriented Languages

Manas Thakur | CSE, IIT Bombay

Offering: Spring 2024

About the course

OO programs are nice to write, as well as performant. This course teaches you how is the latter made possible!

Object-oriented languages have become a popular medium for designing large real-world systems. In spite of the several abstraction layers, programs written in modern OO languages (such as Java and C#) achieve comparable (and sometimes, higher) performance relative to lower level non-OO languages, on both single and multi-core systems. This has become possible with the adoption of several novel optimizations, introduced over the last couple of decades. This course aims to uncover many powerful optimizations implemented in OO runtimes, with focus on further research in this direction.

Contents:

References:

1. Yannis Smaragdakis and George Balatsouras. Pointer Analysis. Foundations and Trends in Programming Languages Vol. 2 No. 1. 2015.
2. Andrew W. Appel. Modern Compiler Implementation in Java. Second Edition. Cambridge University Press. 2004.
3. Y. N. Srikant and P. Shankar (Ed.) The Compiler Design Handbook: Optimizations and Machine Code Generation. CRC Press. 2002.
4. Amer Diwan, Kathryn S. McKinley, J. Moss and B. J. Eliot. Using Types to Analyze and Optimize Object-Oriented Programs. Computer Science Department Faculty Publication Series, University of Massachusetts – Amherst. 2001.
5. Joshua Bloch. Effective Java. Third Edition. Addison-Wesley Professional Publication. 2017.

Logistics

Evaluation

1. Programming (assignments, project): 45
2. Mid-sem exam: 20
3. End-sem exam: 25
4. Topic scribes: 6
5. Course participation: 4