EDBT 2026 Demo / reviewers in the wild / expert
Shan Shan Huang
dblp:40/3056
· DBLP profile ↗
17ranked-venue papers
12as first author
0since 2021 · last 2016
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 12 · 9 first-authorDatabases, data management, data science and information retrieval · 2 · 1 first-authorGraphics, computer vision, multimedia, augmented reality and games · 2 · 2 first-authorSystems, architecture and hardware · 1
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
7 papers |
Programming languages and type systems · 66% Empirical software engineering · 16% Program synthesis and code generation · 10% | |
| Databases, data mining, and information retrieval
3 papers |
Data models and query languages · 50% Query processing and optimization · 27% Distributed and cloud data management · 23% | |
| Network and information security
1 paper |
Systems and software security · 100% |
Topics — the 17 heaviest of 20, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems
metaprogramming |
0.3 | 3 | 2011 | Morphing: Structurally shaping a class by reflecting on others · ACM Trans. Program. Lang. Syst. 2011 Domain-specific languages and program generation with meta-AspectJ · ACM Trans. Softw. Eng. Methodol. 2008 Expressive and safe static reflection with MorphJ · PLDI 2008 |
Empirical software engineering
end-user programming |
0.2 | 1 | 2016 | Model, execute, and deploy: answering the hard questions in end-user programming (showcase) · SIGSOFT FSE 2016 |
Programming languages and type systems
type systems |
0.2 | 2 | 2011 | Morphing: Structurally shaping a class by reflecting on others · ACM Trans. Program. Lang. Syst. 2011 Taming the wildcards: combining definition- and use-site variance · PLDI 2011 |
Data models and query languages
datalog |
0.2 | 2 | 2011 | Datalog and emerging applications: an interactive tutorial · SIGMOD Conference 2011 SecureBlox: customizable secure distributed data processing · SIGMOD Conference 2010 |
Query processing and optimization › recursive query
recursive query evaluation |
0.1 | 1 | 2011 | Datalog and emerging applications: an interactive tutorial · SIGMOD Conference 2011 |
Programming languages and type systems › type systems › polymorphism
genericity |
0.1 | 1 | 2011 | Morphing: Structurally shaping a class by reflecting on others · ACM Trans. Program. Lang. Syst. 2011 |
Programming languages and type systems › type checking
modular typechecking |
0.1 | 1 | 2011 | Morphing: Structurally shaping a class by reflecting on others · ACM Trans. Program. Lang. Syst. 2011 |
Distributed and cloud data management
distributed query processing |
0.1 | 1 | 2010 | SecureBlox: customizable secure distributed data processing · SIGMOD Conference 2010 |
Programming languages and type systems
aspect-oriented programming |
0.1 | 1 | 2008 | Expressive and safe static reflection with MorphJ · PLDI 2008 |
Program synthesis and code generation
domain-specific code generation |
0.1 | 1 | 2008 | Domain-specific languages and program generation with meta-AspectJ · ACM Trans. Softw. Eng. Methodol. 2008 |
Program synthesis and code generation › generative programming
template-based code generation |
0.1 | 1 | 2008 | Domain-specific languages and program generation with meta-AspectJ · ACM Trans. Softw. Eng. Methodol. 2008 |
Programming languages and type systems
domain-specific languages |
0.1 | 1 | 2016 | Model, execute, and deploy: answering the hard questions in end-user programming (showcase) · SIGSOFT FSE 2016 |
Compilers and program optimization
domain-specific language implementation |
0.1 | 1 | 2006 | Easy language extension with meta-aspectJ · ICSE 2006 |
Programming languages and type systems › language design
language extension |
0.1 | 1 | 2006 | Easy language extension with meta-aspectJ · ICSE 2006 |
Software-defined and programmable networks › network programming
declarative networking |
0.0 | 1 | 2011 | Datalog and emerging applications: an interactive tutorial · SIGMOD Conference 2011 |
Program analysis
static analysis |
0.0 | 1 | 2011 | Datalog and emerging applications: an interactive tutorial · SIGMOD Conference 2011 |
Programming languages and type systems › type systems
type soundness |
0.0 | 1 | 2008 | Expressive and safe static reflection with MorphJ · PLDI 2008 |
Methods — techniques the papers use, named apart from their topics
model-driven engineering · 0.5declarative programming · 0.5recursive query optimization · 0.4static metaprogramming · 0.2compile-time code generation · 0.2reflection · 0.1bytecode engineering · 0.1type inference · 0.1static analysis · 0.1pattern matching · 0.1context-sensitive parsing · 0.1aspect-oriented programming · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2016 | Model, execute, and deploy: answering the hard questions in end-user programming (showcase)abstractEnd-user programming, a frequently recurring dream, has thus far eluded large-scale, complex applications. Very real, hard questions stand in the way of its realization. How can its languages and tools support: (1) The development of applications with large data sets and sophisticated computation? (2) The co-development by end-users and professional developers when the complexity of an application demands it? (3) Beyond development, the maintenance, distribution, monitoring, and integration with other applications and services? We discuss our approach to these questions, as implemented in the LogicBlox Modeler. We discuss its use in developing applications for governments, major financial institutions, and large global retailers. We highlight the essential synergies between Programming Languages, Software Engineering, and Database research to achieve self-service at scale, and present open questions to which we look to the FSE community for inspirations and solutions. Shan Shan Huang |
SIGSOFT FSE | 1 |
| 2011 | Taming the wildcards: combining definition- and use-site varianceabstractVariance allows the safe integration of parametric and subtype polymorphism. Two flavors of variance, definition-site versus use-site variance, have been studied and have had their merits hotly debated. Definition-site variance (as in Scala and C#) offers simple type-instantiation rules, but causes fractured definitions of naturally invariant classes; Use-site variance (as in Java) offers simplicity in class definitions, yet complex type-instantiation rules that elude most programmers. John Altidor, Shan Shan Huang, Yannis Smaragdakis |
PLDI | 2 |
| 2011 | Datalog and emerging applications: an interactive tutorialabstractWe are witnessing an exciting revival of interest in recursive Datalog queries in a variety of emerging application domains such as data integration, information extraction, networking, program analysis, security, and cloud computing. This tutorial briefly reviews the Datalog language and recursive query processing and optimization techniques, then discusses applications of Datalog in three application domains: data integration, declarative networking, and program analysis. Throughout the tutorial, we use LogicBlox, a commercial Datalog engine for enterprise software systems, to allow the audience to walk through code examples presented in the tutorial. Shan Shan Huang, Todd J. Green, Boon Thau Loo |
SIGMOD Conference | 1 |
| 2011 | Statically safe program generation with SafeGen
Shan Shan Huang, David Zook, Yannis Smaragdakis |
Sci. Comput. Program. | 1 |
| 2011 | Morphing: Structurally shaping a class by reflecting on othersabstractWe present MorphJ: a language for specifying general classes whose members are produced by iterating over members of other classes. We call this technique “class morphing” or just “morphing.” Morphing extends the notion of genericity so that not only types of methods and fields, but also the structure of a class can vary according to type variables. This adds a disciplined form of metaprogramming to mainstream languages and allows expressing common programming patterns in a highly generic way that is otherwise not supported by conventional techniques. For instance, morphing lets us write generic proxies (i.e., classes that can be parameterized with another class and export the same public methods as that class); default implementations (e.g., a generic do-nothing type, configurable for any interface); semantic extensions (e.g., specialized behavior for methods that declare a certain annotation); and more. MorphJ's hallmark feature is that, despite its emphasis on generality, it allows modular type-checking: a MorphJ class can be checked independently of its uses. Thus, the possibility of supplying a type parameter that will lead to invalid code is detected early, an invaluable feature for highly general components that will be statically instantiated by other programmers. We demonstrate the benefits of morphing with several examples, including a MorphJ reimplementation of DSTM2, a software transactional memory library which reduces 1,484 lines of Java reflection and bytecode engineering library calls to just 586 lines of MorphJ code. Shan Shan Huang, Yannis Smaragdakis |
ACM Trans. Program. Lang. Syst. | 1 |
| 2010 | SecureBlox: customizable secure distributed data processingabstractWe present SecureBlox, a declarative system that unifies a distributed query processor with a security policy framework. SecureBlox decouples security concerns from system specification, allowing easy reconfiguration of a system's security properties to suit a given execution environment. Our implementation of SecureBlox is a series of extensions to LogicBlox, an emerging commercial Datalog-based platform for enterprise software systems. SecureBlox enhances LogicBlox to enable distribution and static meta-programmability, and makes novel use of existing LogicBlox features such as integrity constraints. SecureBlox allows meta-programmability via BloxGenerics - a language extension for compile-time code generation based on the security requirements and trust policies of the deployed environment. We present and evaluate detailed use-cases in which SecureBlox enables diverse applications, including an authenticated declarative routing protocol with encrypted advertisements and an authenticated and encrypted parallel hash join operation. Our results demonstrate SecureBlox's abilities to specify and implement a wide range of different security constructs for distributed systems as well as to enable tradeoffs between performance and security. William R. Marczak, Shan Shan Huang, Martin Bravenboer, Micah Sherr, Boon Thau Loo, Molham Aref |
SIGMOD Conference | 2 |
| 2008 | Liquid Metal: Object-Oriented Programming Across the Hardware/Software Boundary
Shan Shan Huang, Amir Hormati, David F. Bacon, Rodric M. Rabbah |
ECOOP | 1 |
| 2008 | Expressive and safe static reflection with MorphJabstractRecently, language extensions have been proposed for Java and C# to support pattern-based reflective declaration. These extensions introduce a disciplined form of meta-programming and aspect-oriented programming to mainstream languages: They allow members of a class (i.e., fields and methods) to be declared by statically iterating over and pattern-matching on members of other classes. Such techniques, however, have been unable to safely express simple, but common, idioms such as declaring getter and setter methods for fields. Shan Shan Huang, Yannis Smaragdakis |
PLDI | 1 |
| 2008 | Domain-specific languages and program generation with meta-AspectJabstractMeta-AspectJ (MAJ) is a language for generating AspectJ programs using code templates. MAJ itself is an extension of Java, so users can interleave arbitrary Java code with AspectJ code templates. MAJ is a structured metaprogramming tool: a well-typed generator implies a syntactically correct generated program. MAJ promotes a methodology that combines aspect-oriented and generative programming. A valuable application is in implementing small domain-specific language extensions as generators using unobtrusive annotations for syntax extension and AspectJ as a back-end. The advantages of this approach are twofold. First, the generator integrates into an existing software application much as a regular API or library, instead of as a language extension. Second, a mature language implementation is easy to achieve with little effort since AspectJ takes care of the low-level issues of interfacing with the base Java language. In addition to its practical value, MAJ offers valuable insights to metaprogramming tool designers. It is a mature metaprogramming tool for AspectJ (and, by extension, Java): a lot of emphasis has been placed on context-sensitive parsing and error reporting. As a result, MAJ minimizes the number of metaprogramming (quote/unquote) operators and uses type inference to reduce the need to remember type names for syntactic entities. Shan Shan Huang, David Zook, Yannis Smaragdakis |
ACM Trans. Softw. Eng. Methodol. | 1 |
| 2007 | Morphing: Safely Shaping a Class in the Image of Others
Shan Shan Huang, David Zook, Yannis Smaragdakis |
ECOOP | 1 |
| 2006 | Easy language extension with meta-aspectJabstractDomain-specific languages hold the potential of automating the software development process. Nevertheless, the adoption of a domain-specific language is hindered by the difficulty of transitioning to different language syntax and employing a separate translator in the software build process. We present a methodology that simplifies the development and deployment of small language extensions, in the context of Java. The main language design principle is that of language extension through unobtrusive annotations. The main language implementation idea is to express the language as a generator of customized AspectJ aspects, using our Meta-AspectJ tool. The advantages of the approach are twofold. First, the tool integrates into an existing software application much as a regular API or library, instead of as a language extension. This means that the programmer can remove the language extension at any point and choose to implement the required functionality by hand without needing to rewrite the client code. Second, a mature language implementation is easy to achieve with little effort since AspectJ takes care of the low-level issues of interfacing with the base Java language. Shan Shan Huang, Yannis Smaragdakis |
ICSE | 1 |
| 2006 | An envolutionary path towards virtual shared memory with random accessabstractNo abstract available. Jonathan Leighton Brown, Sue Goudy, Michael A. Heroux, Shan Shan Huang, Zhaofang Wen |
SPAA | 4 |
| 2005 | Statically Safe Program Generation with SafeGen
Shan Shan Huang, David Zook, Yannis Smaragdakis |
GPCE | 1 |
| 2004 | Generating AspectJ Programs with Meta-AspectJ
David Zook, Shan Shan Huang, Yannis Smaragdakis |
GPCE | 2 |
| 2004 | Program generators and the tools to make themabstractProgram generation is among the most promising techniques in the effort to increase the automation of programming tasks. In this paper, we discuss the potential impact and research value of program generation, we give examples of our research in the area, and we outline a future work direction that we consider most interesting. Specifically, we first discuss why program generators have significant applied potential. At the same time we argue that, as a research topic, meta-programming tools (i.e., language tools for writing program generators) may be of greater value. We then illustrate our views on generators and meta-programming tools with our latest work on the Meta-AspectJ meta-programming language and the GOTECH generator. Finally, we examine the problem of statically determining the safety of a generator and present its intricacies. We limit our focus to one particular kind of guarantee for generated code---ensuring that the generated program is free of compile-time errors. We believe that this research direction will see significant attention and will make a difference in the mainstream adoption of meta-programming technology. Yannis Smaragdakis, Shan Shan Huang, David Zook |
PEPM | 2 |
| 1988 | Spellmode recognition based on vector quantization
Shan Shan Huang, Robert M. Gray |
Speech Commun. | 1 |
| 1987 | Conditional histogram vector quantization for spellmode recognizerabstractIn speech recognition, vector quantizers have traditionally been used as a pre-processor for sophisticated algorithms such as hidden Markov modelling (HMM) or dynamic time warping (DTW). Recently, simpler systems based more directly on vector quantization (VQ) have been proposed for recognizing isolated words with small vocabularies. The major problem with these simple algorithms is the lack of temporal information. This paper describes a conditional histogram technique which incorporates temporal information by considering the relative likelihoods that certain codewords follow others. Simulation results show that this approach produces better decoding results than the simple VQ algorithm with similar complexity. Shan Shan Huang, Robert M. Gray |
ICASSP | 1 |