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.

Shan Shan Huang

dblp:40/3056 · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Programming languages and type systems
metaprogramming
0.332011
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.212016
Model, execute, and deploy: answering the hard questions in end-user programming (showcase) · SIGSOFT FSE 2016
Programming languages and type systems
type systems
0.222011
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.222011
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.112011
Datalog and emerging applications: an interactive tutorial · SIGMOD Conference 2011
Programming languages and type systems › type systems › polymorphism
genericity
0.112011
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.112011
Morphing: Structurally shaping a class by reflecting on others · ACM Trans. Program. Lang. Syst. 2011
Distributed and cloud data management
distributed query processing
0.112010
SecureBlox: customizable secure distributed data processing · SIGMOD Conference 2010
Programming languages and type systems
aspect-oriented programming
0.112008
Expressive and safe static reflection with MorphJ · PLDI 2008
Program synthesis and code generation
domain-specific code generation
0.112008
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.112008
Domain-specific languages and program generation with meta-AspectJ · ACM Trans. Softw. Eng. Methodol. 2008
Programming languages and type systems
domain-specific languages
0.112016
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.112006
Easy language extension with meta-aspectJ · ICSE 2006
Programming languages and type systems › language design
language extension
0.112006
Easy language extension with meta-aspectJ · ICSE 2006
Software-defined and programmable networks › network programming
declarative networking
0.012011
Datalog and emerging applications: an interactive tutorial · SIGMOD Conference 2011
Program analysis
static analysis
0.012011
Datalog and emerging applications: an interactive tutorial · SIGMOD Conference 2011
Programming languages and type systems › type systems
type soundness
0.012008
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
YearPublicationVenuePosition
2016 Model, execute, and deploy: answering the hard questions in end-user programming (showcase)
abstract
End-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 FSE1
2011 Taming the wildcards: combining definition- and use-site variance
abstract
Variance 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
PLDI2
2011 Datalog and emerging applications: an interactive tutorial
abstract
We 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 Conference1
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 others
abstract
We 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 processing
abstract
We 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 Conference2
2008 Liquid Metal: Object-Oriented Programming Across the Hardware/Software Boundary
Shan Shan Huang, Amir Hormati, David F. Bacon, Rodric M. Rabbah
ECOOP1
2008 Expressive and safe static reflection with MorphJ
abstract
Recently, 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
PLDI1
2008 Domain-specific languages and program generation with meta-AspectJ
abstract
Meta-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
ECOOP1
2006 Easy language extension with meta-aspectJ
abstract
Domain-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
ICSE1
2006 An envolutionary path towards virtual shared memory with random access
abstract
No abstract available.
Jonathan Leighton Brown, Sue Goudy, Michael A. Heroux, Shan Shan Huang, Zhaofang Wen
SPAA4
2005 Statically Safe Program Generation with SafeGen
Shan Shan Huang, David Zook, Yannis Smaragdakis
GPCE1
2004 Generating AspectJ Programs with Meta-AspectJ
David Zook, Shan Shan Huang, Yannis Smaragdakis
GPCE2
2004 Program generators and the tools to make them
abstract
Program 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
PEPM2
1988 Spellmode recognition based on vector quantization
Shan Shan Huang, Robert M. Gray
Speech Commun.1
1987 Conditional histogram vector quantization for spellmode recognizer
abstract
In 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
ICASSP1