Martin Odersky

ORCID: 0009-0005-3923-8993
Publications
Citations
Views
---
Saved
---
About
Contact & Profiles
Research Areas
  • Logic, programming, and type systems
  • Parallel Computing and Optimization Techniques
  • Formal Methods in Verification
  • Advanced Software Engineering Methodologies
  • Distributed systems and fault tolerance
  • Software Engineering Research
  • Logic, Reasoning, and Knowledge
  • Security and Verification in Computing
  • Advanced Database Systems and Queries
  • Distributed and Parallel Computing Systems
  • Model-Driven Software Engineering Techniques
  • Advanced Data Storage Technologies
  • Scientific Computing and Data Management
  • Natural Language Processing Techniques
  • Cloud Computing and Resource Management
  • Computational Physics and Python Applications
  • Embedded Systems Design Techniques
  • Computability, Logic, AI Algorithms
  • Petri Nets in System Modeling
  • Algorithms and Data Compression
  • Data Management and Algorithms
  • Real-Time Systems Scheduling
  • Constraint Satisfaction and Optimization
  • Software System Performance and Reliability
  • Service-Oriented Architecture and Web Services

École Polytechnique Fédérale de Lausanne
2013-2024

University of Waterloo
2023

University of Tübingen
2023

Laboratoire d'Informatique Fondamentale de Lille
2008-2015

École Normale Supérieure - PSL
2011

Yale University
1992-2009

University of South Australia
1998-2002

Australian National University
1999

Karlsruhe University of Education
1994-1997

Karlsruhe Institute of Technology
1995-1997

We present GJ, a design that extends the Java programming language with generic types and methods. These are both explained implemented by translation into unextended language. The closely mimics way generics emulated programmers: it erases all type parameters, maps variables to their bounds, inserts casts where needed. Some subtleties of caused handling overriding.GJ increases expressiveness safety: code utilizing libraries is no longer buried under plethora casts, corresponding inserted...

10.1145/286936.286957 article EN 1998-10-01

10.1016/j.tcs.2008.09.019 article EN publisher-specific-oa Theoretical Computer Science 2008-09-19

Software engineering demands generality and abstraction, performance specialization concretization. Generative programming can provide both, but the effort required to develop high-quality program generators likely offsets their benefits, even if a multi-stage language is used.We present lightweight modular staging, library-based approach that breaks with tradition of syntactic quasi-quotation instead uses only types distinguish between binding times. Through extensive use component...

10.1145/1868294.1868314 article EN 2010-10-10

We identify three programming language abstractions for the construction of reusable components: abstract type members, explicit selftypes, and modular mixin composition.Together, these enable us to transform an arbitrary assembly static program parts with hard references between them into a system components.The transformation maintains structure original system.We demonstrate this approach in two case studies, subject/observer framework compiler front-end.

10.1145/1094811.1094815 article EN 2005-10-12

The mismatch between the operational semantics of lambda calculus and actual behavior implementations is a major obstacle for compiler writers. They cannot explain their evaluator in terms source level syntax, they easily compare distinct different lazy strategies. In this paper we derive an equational characterization call-by-need prove it correct with respect to original calculus. theory strictly smaller than Immediate applications concern correctness proofs number implementation...

10.1145/199448.199507 article EN 1995-01-01

We present a general framework HM(X) for type systems with constraints. The stays in the tradition of Hindley/Milner system. Its system instances are sound under standard untyped compositional semantics. can give generic inference algorithm so that, sufficient conditions on X, will always compute principal term. discuss that deal polymorphic records, equational theories, and subtypes. © 1999 John Wiley & Sons, Inc.

10.1002/(sici)1096-9942(199901/03)5:1<35::aid-tapo4>3.0.co;2-4 article EN Theory and Practice of Object Systems 1999-01-01

Developing high-performance software is a difficult task that requires the use of low-level, architecture-specific programming models (e.g., OpenMP for CMPs, CUDA GPUs, MPI clusters). It typically not possible to write single application can run efficiently in different environments, leading multiple versions and increased complexity. Domain-Specific Languages (DSLs) are promising avenue enable programmers high-level abstractions still achieve good performance on variety hardware. This...

10.1145/2584665 article EN ACM Transactions on Embedded Computing Systems 2014-04-01

Good software engineering practice demands generalization and abstraction, whereas high performance specialization concretization. These goals are at odds, compilers can only rarely translate expressive high-level programs to modern hardware platforms in a way that makes best use of the available resources. Generative programming is promising alternative fully automatic translation. Instead writing down target program directly, developers write generator, which produces as its output. The...

10.1145/2184319.2184345 article EN Communications of the ACM 2012-05-23

We study an extension of the Hindley/Milner system with explicit type scheme annotations and declarations. The can express polymorphic function arguments, user-defined data types abstract components, structure fields. More generally, all programs lambda calculus be encoded by a translation between typing derivations. show that reconstruction in this reduced to decidable problem first-order unification under mixed prefix.

10.1145/237721.237729 article EN 1996-01-01

Type classes were originally developed in Haskell as a disciplined alternative to ad-hoc polymorphism. have been shown provide type-safe solution important challenges software engineering and programming languages such as, for example, retroactive extension of programs. They are also recognized good mechanism concept-based generic and, more recently, evolved into type-level computation.

10.1145/1869459.1869489 article EN 2010-10-17

We describe a non-blocking concurrent hash trie based on shared-memory single-word compare-and-swap instructions. The supports standard mutable lock-free operations such as insertion, removal, lookup and their conditional variants. To ensure space-efficiency, removal compress the when necessary.

10.1145/2145816.2145836 article EN 2012-02-25

As heterogeneous parallel systems become dominant, application developers are being forced to turn an incompatiblemix of low level programming models (e.g. OpenMP, MPI, CUDA, OpenCL). However, these do little shield from the difficult problems parallelization, data decomposition and machine-specific details. Most programmersare having a time using effectively. To provide modelthat addresses productivity performance requirements for average programmer, we explore domainspecificapproach programming.

10.1145/1869459.1869527 article EN 2010-10-17

High level data structures are a cornerstone of modern programming and at the same time stand in way compiler optimizations. In order to reason about user- or library-defined compilers need be extensible. Common mechanisms extend fall into two categories. Frontend macros, staging partial evaluation systems can used programmatically remove abstraction specialize programs before they enter compiler. Alternatively, some allow extending internal workings by adding new transformation passes...

10.1145/2429069.2429128 article EN 2013-01-22

We describe the implementation of first-class polymorphic delimited continuations in programming language Scala. use Scala's pluggable typing architecture to implement a simple type and effect system, which discriminates expressions with control effects from those without accurately tracks answer modification incurred by effects. To tackle problem implementing under adverse conditions brought upon Java VM, we employ selective CPS transform, is driven entirely effect-annotated types leaves...

10.1145/1596550.1596596 article EN 2009-08-31

Domain-specific languages offer a solution to the performance and productivity issues in heterogeneous computing systems. The Delite compiler framework simplifies process of building embedded parallel DSLs. DSL developers can implement domain-specific operations by extending framework, which provides static optimizations code generation for hardware. runtime automatically schedules executes on

10.1109/mm.2011.68 article EN IEEE Micro 2011-08-03

10.5555/1883978.1884002 article EN European Conference on Object-Oriented Programming 2010-06-21

We present a calculus that captures the operational semantics of call-by-need. The call-by-need lambda is confluent, has notion standard reduction, and entails same observational equivalence relation as call-by-name calculus. system can be formulated with or without explicit let bindings, admits useful notions marking developments, straightforward interpretation.

10.1017/s0956796898003037 article EN Journal of Functional Programming 1998-05-01
Coming Soon ...