Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Claudio V. Russo

dblp:73/5035 · DBLP profile ↗
← Back
19ranked-venue papers
5as first author
0since 2021 · last 2018
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 17 · 5 first-authorTheory of computation · 4 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
5 papers
Programming languages and type systems · 75% Concurrent programming · 25%
Artificial intelligence
3 papers
Probabilistic and Bayesian machine learning · 100%
Databases, data mining, and information retrieval
1 paper
Data models and query languages · 77% Data integration and cleaning · 23%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Parallel and multicore computing · 100%

Topics — the 17 heaviest of 20, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Machine learning › Probabilistic and Bayesian machine learning
probabilistic programming
0.422016
Fabular: regression formulas as probabilistic programming · POPL 2016
Tabular: a schema-driven probabilistic programming language · POPL 2014
Programming languages and type systems
domain-specific languages
0.212016
Fabular: regression formulas as probabilistic programming · POPL 2016
Programming languages and type systems
language design
0.222013
A model-learner pattern for bayesian reasoning · POPL 2013
Join patterns for visual basic · OOPSLA 2008
Machine learning › Probabilistic and Bayesian machine learning › statistical inference
bayesian inference
0.212013
A model-learner pattern for bayesian reasoning · POPL 2013
Programming languages and type systems
probabilistic programming
0.212013
A model-learner pattern for bayesian reasoning · POPL 2013
Programming languages and type systems › concurrent programming languages
coordination languages
0.112011
Scalable join patterns · OOPSLA 2011
Concurrent programming › concurrency theory › process calculi
join calculus
0.112011
Scalable join patterns · OOPSLA 2011
Concurrent programming › synchronization
synchronization primitives
0.112011
Scalable join patterns · OOPSLA 2011
Parallel and multicore computing
parallel programming models
0.112011
Scalable join patterns · OOPSLA 2011
Programming languages and type systems › language design
language constructs
0.112008
Join patterns for visual basic · OOPSLA 2008
Data integration and cleaning
imputation
0.112014
Tabular: a schema-driven probabilistic programming language · POPL 2014
Programming languages and type systems › functional programming › algebraic data types
generalized algebraic data types
0.112005
Generalized algebraic data types and object-oriented programming · OOPSLA 2005
Programming languages and type systems
object-oriented programming
0.112005
Generalized algebraic data types and object-oriented programming · OOPSLA 2005
Programming languages and type systems
type systems
0.112005
Generalized algebraic data types and object-oriented programming · OOPSLA 2005
Machine learning › Probabilistic and Bayesian machine learning
probabilistic inference
0.012013
A model-learner pattern for bayesian reasoning · POPL 2013
Programming languages and type systems › language design
language extension
0.012008
Join patterns for visual basic · OOPSLA 2008
Programming languages and type systems › type systems
type soundness
0.012005
Generalized algebraic data types and object-oriented programming · OOPSLA 2005

Methods — techniques the papers use, named apart from their topics

core calculus · 0.5probabilistic model expressions · 0.4formal semantics · 0.4join calculus · 0.3typed bayesian model · 0.3markov chain monte carlo · 0.3factor graph · 0.3exact inference · 0.3type systems · 0.2type system · 0.2polyphonic c# · 0.1cω · 0.1subclassing · 0.1generics · 0.1
YearPublicationVenuePosition
2018 Transposing G to C♯: Expressivity of generalized algebraic data types in an object-oriented language
Andrew J. Kennedy, Claudio V. Russo
Theor. Comput. Sci.2
2017 Deriving Probability Density Functions from Probabilistic Functional Programs
abstract
The probability density function of a probability distribution is a fundamental concept in probability theory and a key ingredient in various widely used machine learning methods. However, the necessary framework for compiling probabilistic functional programs to density functions has only recently been developed. In this work, we present a density compiler for a probabilistic language with failure and both discrete and continuous distributions, and provide a proof of its soundness. The compiler greatly reduces the development effort of domain experts, which we demonstrate by solving inference problems from various scientific applications, such as modelling the global carbon cycle, using a standard Markov chain Monte Carlo framework.
Sooraj Bhat, Johannes Borgström, Andrew D. Gordon 0001, Claudio V. Russo
Log. Methods Comput. Sci.4
2016 Fabular: regression formulas as probabilistic programming
abstract
Regression formulas are a domain-specific language adopted by several R packages for describing an important and useful class of statistical models: hierarchical linear regressions. Formulas are succinct, expressive, and clearly popular, so are they a useful addition to probabilistic programming languages? And what do they mean? We propose a core calculus of hierarchical linear regression, in which regression coefficients are themselves defined by nested regressions (unlike in R). We explain how our calculus captures the essence of the formula DSL found in R. We describe the design and implementation of Fabular, a version of the Tabular schema-driven probabilistic programming language, enriched with formulas based on our regression calculus. To the best of our knowledge, this is the first formal description of the core ideas of R's formula notation, the first development of a calculus of regression formulas, and the first demonstration of the benefits of composing regression formulas and latent variables in a probabilistic programming language.
Johannes Borgström, Andrew D. Gordon 0001, Long Ouyang, Claudio V. Russo, Adam Scibior, Marcin Szymczak 0002
POPL4
2015 Probabilistic Programs as Spreadsheet Queries
Andrew D. Gordon 0001, Claudio V. Russo, Marcin Szymczak 0002, Johannes Borgström, Nicolas Rolland, Thore Graepel, Daniel Tarlow
ESOP2
2014 Tabular: a schema-driven probabilistic programming language
abstract
We propose a new kind of probabilistic programming language for machine learning. We write programs simply by annotating existing relational schemas with probabilistic model expressions. We describe a detailed design of our language, Tabular, complete with formal semantics and type system. A rich series of examples illustrates the expressiveness of Tabular. We report an implementation, and show evidence of the succinctness of our notation relative to current best practice. Finally, we describe and verify a transformation of Tabular schemas so as to predict missing values in a concrete database. The ability to query for missing values provides a uniform interface to a wide variety of tasks, including classification, clustering, recommendation, and ranking.
Andrew D. Gordon 0001, Thore Graepel, Nicolas Rolland, Claudio V. Russo, Johannes Borgström, John Guiver
POPL4
2014 F-ing modules
abstract
Abstract ML modules are a powerful language mechanism for decomposing programs into reusable components. Unfortunately, they also have a reputation for being “complex” and requiring fancy type theory that is mostly opaque to non-experts. While this reputation is certainly understandable, given the many non-standard methodologies that have been developed in the process of studying modules, we aim here to demonstrate that it is undeserved. To do so, we present a novel formalization of ML modules, which defines their semantics directly by a compositional “elaboration” translation into plain System F ω (the higher-order polymorphic λ-calculus). To demonstrate the scalability of our “F-ing” semantics, we use it to define a representative, higher-order ML-style module language, encompassing all the major features of existing ML module dialects (except for recursive modules). We thereby show that ML modules are merely a particular mode of use of System F ω . To streamline the exposition, we present the semantics of our module language in stages. We begin by defining a subset of the language supporting a Standard ML-like language with second-class modules and generative functors. We then extend this sublanguage with the ability to package modules as first-class values (a very simple extension, as it turns out) and OCaml-style applicative functors (somewhat harder). Unlike previous work combining both generative and applicative functors, we do not require two distinct forms of functor or signature sealing. Instead, whether a functor is applicative or not depends only on the computational purity of its body. In fact, we argue that applicative/generative is rather incidental terminology for pure versus impure functors. This approach results in a semantics that we feel is simpler and more natural than previous accounts, and moreover prohibits breaches of abstraction safety that were possible under them.
Andreas Rossberg, Claudio V. Russo, Derek Dreyer
J. Funct. Program.2
2013 A model-learner pattern for bayesian reasoning
abstract
A Bayesian model is based on a pair of probability distributions, known as the prior and sampling distributions. A wide range of fundamental machine learning tasks, including regression, classification, clustering, and many others, can all be seen as Bayesian models. We propose a new probabilistic programming abstraction, a typed Bayesian model, which is based on a pair of probabilistic expressions for the prior and sampling distributions. A sampler for a model is an algorithm to compute synthetic data from its sampling distribution, while a learner for a model is an algorithm for probabilistic inference on the model. Models, samplers, and learners form a generic programming pattern for model-based inference. They support the uniform expression of common tasks including model testing, and generic compositions such as mixture models, evidence-based model averaging, and mixtures of experts. A formal semantics supports reasoning about model equivalence and implementation correctness. By developing a series of examples and three learner implementations based on exact inference, factor graphs, and Markov chain Monte Carlo, we demonstrate the broad applicability of this new programming pattern.
Andrew D. Gordon 0001, Mihhail Aizatulin, Johannes Borgström, Guillaume Claret, Thore Graepel, Aditya V. Nori, Sriram K. Rajamani, Claudio V. Russo
POPL8
2013 Deriving Probability Density Functions from Probabilistic Functional Programs
Sooraj Bhat, Johannes Borgström, Andrew D. Gordon 0001, Claudio V. Russo
TACAS4
2012 Pause 'n' Play: Formalizing Asynchronous C#
Gavin M. Bierman, Claudio V. Russo, Geoffrey Mainland, Erik Meijer 0001, Mads Torgersen
ECOOP2
2011 Scalable join patterns
abstract
Coordination can destroy scalability in parallel programming. A comprehensive library of scalable synchronization primitives is therefore an essential tool for exploiting parallelism. Unfortunately, such primitives do not easily combine to yield solutions to more complex problems. We demonstrate that a concurrency library based on Fournet and Gonthier's join calculus can provide declarative and scalable coordination. By declarative, we mean that the programmer needs only to write down the constraints of a coordination problem, and the library will automatically derive a correct solution. By scalable, we mean that the derived solutions deliver robust performance both as the number of processors increases, and as the complexity of the coordination problem grows. We validate our claims empirically on seven coordination problems, comparing our generic solution to specialized algorithms from the literature.
Aaron Turon, Claudio V. Russo
OOPSLA2
2009 Parallel concurrent ML
abstract
Concurrent ML (CML) is a high-level message-passing language that supports the construction of first-class synchronous abstractions called events. This mechanism has proven quite effective over the years and has been incorporated in a number of other languages. While CML provides a concurrent programming model, its implementation has always been limited to uniprocessors. This limitation is exploited in the implementation of the synchronization protocol that underlies the event mechanism, but with the advent of cheap parallel processing on the desktop (and laptop), it is time for Parallel CML.
John H. Reppy, Claudio V. Russo, Yingqi Xiao
ICFP2
2008 Join patterns for visual basic
abstract
We describe an extension of Visual Basic 9.0 with asynchronous concurrency constructs- join patterns- based on the join calculus. Our design of Concurrent Basic (CB) builds on earlier work on Polyphonic C # and Cω. Since that work, the need for language-integrated concurrency has only grown, both due to the arrival of commodity, multi-core hardware, and the trend for Rich Internet Applications that rely on asynchronous client-server communication to hide latency. Unlike its predecessors, CB adopts an event-like syntax that should be familiar to existing VB programmers. Coupled with Generics, CB allows one to declare re-useable concurrency abstractions that were clumsy to express previously. CB removes its ancestors ’ inconvenient inheritance restriction, while providing new extensibility points useful in practical applications that must co-exist with or want to exploit alternative threading models available on the platform. CB is implemented as an extension of the production VB 9.0 compiler. Categories and Subject Descriptors D.3.3 [Programming Languages]: Language constructs and features—Concurrent programming structures;control structures; classes and objects
Claudio V. Russo
OOPSLA1
2007 The Joins Concurrency Library
Claudio V. Russo
PADL1
2006 Variance and Generalized Constraints for C# Generics
Burak Emir, Andrew Kennedy, Claudio V. Russo, Dachuan Yu
ECOOP3
2005 Generalized algebraic data types and object-oriented programming
abstract
Generalized algebraic data types (GADTs) have received much attention recently in the functional programming community. They generalize the (type) parameterized algebraic datatypes (PADTs) of ML and Haskell by permitting value constructors to return specific, rather than parametric, typeinstantiations of their own datatype. GADTs have a number of applications, including strongly-typed evaluators, generic pretty-printing, generic traversals and queries, and typed LR parsing. We show that existing object-oriented programming languages such as Java and C ♯ can express GADT definitions, and a large class of GADT-manipulating programs, through the use of generics, subclassing, and virtual dispatch. However, some programs can be written only through the use of redundant runtime casts. Moreover, instantiationspecific, yet safe, operations on ordinary PADTs only admit indirect cast-free implementations, via higher-order encodings. We propose a generalization of the type constraint mechanisms of C ♯ and Java to both avoid the need for casts in GADT programs and higher-order contortions in PADT programs; we present a Visitor pattern for GADTs, and describe a refined switch construct as an alternative to virtual dispatch on datatypes. We formalize both extensions and prove type soundness.
Andrew Kennedy, Claudio V. Russo
OOPSLA2
2004 Adventures in interoperability: the SML.NET experience
abstract
SML.NET is a compiler for Standard ML that targets the Common Language Runtime and is integrated into the Visual Studio development environment. It supports easy interoperability with other .NET languages via a number of language extensions, which go considerably beyond those of our earlier compiler, MLj.This paper describes the new language extensions and the features of the Visual Studio plugin, including syntax highlighting, Intellisense, continuous type inference and debugger support. We discuss our experiences using SML.NET to write SML programs that interoperate with other .NET languages, libraries and frameworks. Examples include the Visual Studio plugin itself (written in SML.NET, using .NET's COM interop features to integrate in a C++ application) and writing ASP.NET and Pocket PC applications in SML.
Nick Benton, Andrew Kennedy, Claudio V. Russo
PPDP3
2001 Recursive Structures for Standard ML
abstract
Standard ML is a statically typed programming language that is suited for the construction of both small and large programs. "Programming in the small" is captured by Standard ML's Core language. "Programming in the large" is captured by Standard ML's Modules language that provides constructs for organizing related Core language definitions into self-contained modules with descriptive interfaces. While the Core is used to express details of algorithms and data structures, Modules is used to express the overall architecture of a software system. In Standard ML, modular programs must have a strictly hierarchical structure: the dependency between modules can never be cyclic. In particular, definitions of mutually recursive Core types and values, that arise frequently in practice, can never span module boundaries. This limitation compromises modular programming, forcing the programmer to merge conceptually (i.e. architecturally) distinct modules. We propose a practical and simple extension of the Modules language that caters for cyclic dependencies between both types and terms defined in separate modules. Our design leverages existing features of the language, supports separate compilation of mutually recursive modules and is easy to implement.
Claudio V. Russo
ICFP1
2000 First-Class Structures for Standard ML
Claudio V. Russo
ESOP1
1999 Non-dependent Types for Standard ML Modules
Claudio V. Russo
PPDP1