Title: A Typed Intermediate Language for Object-Oriented Programming Languages Abstract: Typed intermediate languages are being actively studied in programming language research because it can provide assurance for partial correctness of compilers and facilitate type directed compilation and code optimization. Typed intermediate languages for object oriented programming (OOP) languages are of particular interest, given the wide adoption of OOP languages in many practical applications. In this paper, we proposed a simple encoding for objects in a dependent type system, which can serve as a practically viable typed intermediate language for an OOP language that supports not only common OOP features such as inheritance and dynamic dispatching, but also advanced features such as (bounded) generic classes and interfaces. The simplicity of this encoding comes from the preservation of a light weight notion of classes and abstract objects in the intermediate language and a total separation between the nominal subclassing relation on class names and the structural subtyping relation on types. To our knowledge, this is the first work in the literature that formally addresses the issue of (bounded) generic classes and interfaces in the setting of OOP typed intermediate languages.