Course Description

The material I present in this course is an introduction to modern implementations of programming language features. We will focus on languages that execute via managed runtime systems (i.e., garbage collected and dynamically interpreted/compiled languages) for high-level languages (e.g. Java, Python, Javascript), including their similarities and differences. In addition, we will investigate the the inner workings of the interpreter and just-in-time/dynamic compiler and how they can use information about the running program to optimize its execution.


Class topics and material
Evolution of runtime systems for high-level languages (how we got here)
Structure and layout of the Java bytecode classfile format (code and symbollic data), i.e. the Java Language and Virtual Machine specification
Bytecode verification (+ type-safety checking at load time) *if time*
Garbage collection (fundamentals and advanced extensions)
Interpretation and interpreter optimization (+python runtime)
Dynamic/Just-in-Time and adaptive compilation
Program performance profiling
Trace compilation (+javascript runtimes)
Cross-language interoperation *if time*


Class Times
Monday/Wednesday 9-11:50am
  • The course will be taught via remote instruction using Zoom. Please join us using your laptop each Monday and Wednesday (Mar 30-Jun 5) from 9-10:50am, using this link. Please note that you first must log into UCSB Zoom (select "Sign-in" on the right) for this link to work.
  • Please note that our Zoom class meetings will be recorded and the links will be posted via piazza (do not share/post these links). All enrolled students are required to participate as part of each class meeting in order to earn the class participation points (50% of the class grade).
Chandra Krintz <>
Computer Science Department
Office Hours 3:30pm-4:30pm Monday's via zoom (log into UCSB zoom first to access)