Shan Shan Huang
Computer Scientist and International Media Sensation
Curriculum Vitae
Research Interests | Education | Honors and Awards | Research Experience | Teaching Experience | Professional Experience | Publications | Services | Invited Talks | Professional Membership | Software | References | Personal Data
Research Interests
Application of programming language techniques to support software engineering. Specifically, designing language abstraction mechanisms to support modular program construction; using advanced type systems to guarantee program correctness properties at compile-time; applying program generation techniques to aid in domain-specific language implementation and automated software engineering.
Education
-
Ph.D. in Computer Science, expected (August 2003 — July 2009)
Georgia Institute of Technology, College of Computing, Atlanta, GA
Advisor: Yannis Smaragdakis
Design and develop language abstraction mechanisms that support better modularity and code reuse; Apply advanced type system techniques to statically guarantee the various safety properties of programs; Develop program generation tools to aid in automated software engineering. -
B.S. in Electrical Engineering and Computer Science
(September 1996 — June 2000)
Massachusetts Institute of Technology, Cambridge, MA
Honors and Awards
- Fellowships & Scholarships
- National Science Foundation (NSF) Graduate Research Fellowship, 2005 — 2010.
- Intel Ph.D. Fellowship, 2005.
- Presidential Fellowship, Georgia Institute of Technology, 2003 — 2008.
- College of Computing Dean’s Supplement Award, Georgia Institute of Technology, 2003 — 2008.
- Paper Awards
- Best Paper Award [8], Generative Programming and Component Engineering Conference (GPCE 2004).
Research Experience
-
Summer Research Intern (June 2007 — August 2007)
IBM T.J. Watson Research Center, Hawthorne, NY
Mentors: David Bacon, Rodric Rabbah
Summer research intern on the Liquid Metal project. Liquid Metal aims to have one unified language, Lime, whose programs can be compiled against and run on a heterogeneous architecture—an architecture where CPUs, FPGAs, cell processors, etc., co-exist. I designed and developed Lime, an extension of Java that provides the high-level abstractions that software engineers are familiar with, yet at the same time, amenable to bit-level analysis and exposes parallelism—crucial properties for efficient synthesis to hardware. Work resulted in publication [3]. -
Summer Research Intern (June 2005 — August 2005)
Sandia National Laboratory, Albuquerque, NM
Mentor: Zhaofang Wen
Designed and implemented an extension of C++ supporting SIMD-style parallel programming. Conducted experiments to evaluate the performance benefits of the language on problems with large numbers of fine-grain random accesses. Resulted in publication [13]. -
Undergraduate Research Assistant (September 1999 — February 2000)
Massachusetts Institute of Technology, Media Laboratory, Cambridge, MA
Integrated a speech synthesis system with an digital interactive agent. -
Undergraduate Research Assistant (September 1998 — February 1999)
Massachusetts Institute of Technology, Media Laboratory, Cambridge, MA
Implemented algorithms for image analysis for an image search engine.
Teaching Experience
-
CIS 410/510 Object Oriented Languages and Systems (2008)
-
with Professor Yannis Smaragdakis
Delivered lectures on the survey of type systems.
Professional Experience
-
Principal Software Engineer (May 2001 – May 2003 )
Fidelity Investments, Boston, MA
Project lead on the design and development wireless.fidelity.com site, Fidelity's web application built specifically for PDA's. -
Software Engineer (July 2000 – April 2003)
ArsDigita, Inc., Cambridge, MA -
Software Engineer Summer Intern (June 1999 – August 1999)
GemStar, Inc., Bedford, MA
Publications
-
Refereed Journal Articles
- Shan Shan Huang , David Zook, and Yannis Smaragdakis. Domain-Specific Languages and Program Generation with Meta-AspectJ. In ACM Transactions on Software Engineering and Methodology (TOSEM). 18(2):1–32, 2008. (pdf)
- Shan Shan Huang , David Zook, and Yannis Smaragdakis. Statically Safe Program Generation with SafeGen. In Science of Computer Programming (SCP). To appear. (pdf)
-
Refereed Conference Publications
- Shan Shan Huang , Amir Hormati, David Bacon, and Rodric Rabbah. Liquid Metal: Object-Oriented Programming Across the Hardware/Software Boundary. In 22nd European Conference on Object-Oriented Programming (ECOOP 2008), pages 76103, Springer, 2008. Acceptance rate: 19%. (pdf)
- Shan Shan Huang and Yannis Smaragdakis. Expressive and Safe Static Reflection. In ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation (PLDI 2008), pages 7989, ACM Press, 2008. Acceptance rate: 18%. (pdf)
- Shan Shan Huang , David Zook, and Yannis Smaragdakis. Morphing: Safely Shaping a Class in the Image of Others. In Proceedings of European Conference on Object-Oriented Programming (ECOOP 2007), pages 399424, Springer, 2007. Acceptance rate: 16%. (pdf)
- Shan Shan Huang , David Zook, and Yannis Smaragdakis. cJ: Enhancing Java with Safe Type Conditions. In Proceedings of Aspect-Oriented Software Development, (AOSD 2007), pages 185198, ACM Press, 2007. Acceptance rate: 18%. (pdf)
- Shan Shan Huang , David Zook, and Yannis Smaragdakis. Statically Safe Program Generation with SafeGen. In Proceedings of Generative Programming and Component Engineering Conference, (GPCE 2005), pages 309326, Springer, 2005. Acceptance rate: 29%. (pdf)
- David Zook, Shan Shan Huang , and Yannis Smaragdakis. Generating AspectJ Programs Using Meta-AspectJ. In Proceedings of Generative Programming and Component Engineering Conference, (GPCE 2004) pages 118, Springer, 2004. Acceptance rate: 33%. (pdf) Best Paper Award
-
Invited Publications
- Yannis Smaragdakis, Shan Shan Huang , and David Zook. Program Generators and Tools to Make Them. In Proceedings of Symposium on Partial Evaluation Program Manipulation (PEPM 2004). ACM, 2004. (pdf)
-
Refereed Workshop Publications
- Shan Shan Huang , and Yannis Smaragdakis. Morphing Software for Easier Evolution. In Proceedings of the 4th ECOOP Workshop on Reflection, AOP, and Meta-data for Software Evolution (RAM-SE 2007). (pdf)
-
Refereed Short Papers / Posters
- Shan Shan Huang , and Yannis Smaragdakis. Building Scalable Libraries with cJ. In Proceedings of the 29th International Conference on Software Engineering, Companion Guide (ICSE 2007) pages 4546, ACM Press, 2007. (pdf)
- Shan Shan Huang , and Yannis Smaragdakis. Easy Language Extension with Meta-AspectJ. In Proceedings of the 28th International Conference on Software Engineering (ICSE 2006) pages 865868, ACM Press, 2006. (pdf)
- Jonathan Leighton Brown, Sue Goudy, Mike Heroux, Shan Shan Huang , and Zhaofang Wen. An Evolutionary Path Towards Virtual Shared Memory with Random Access. In Proceedings of the 18th Annual ACM Symposium on Parallel Algorithms and Architectures (SPAA 2006) page 117, ACM Press, 2006.
Services
-
Program Committee
- GPCE 2009 : 8th Conference on Generative Programming and Component Engineering.
- PEPM 2008 : 2008 Workshop on Partial Evaluation and Program Manipulation
-
Conference Co-reviewing
- PLDI 2009 : 2009 Conference on Programming Languages Design and Implementation.
- CC 2009 : 12th International Conference on Compiler Construction.
- GPCE 2008 : 7th Conference on Generative Programming and Component Engineering.
- FSE 2008 : Sixteenth International Symposium on Foundations of Software Engineering
- OOPSLA 2008 : 2008 International Conference on Object-Oriented Programming, Systems, Languages, and Applications
- ISSTA 2008 : 2008 International Symposium on Software Testing and Analysis
- PLDI 2008 : 2008 Conference on Programming Languages Design and Implementation
- POPL 2008 : 35th Symposium on Principles of Programming Languages
- OOPSLA 2007 : 22nd Conference on Object-Oriented Programming Systems and Applications
- FSE 2006: 14th Symposium on Foundations of Software Engineering
- GPCE 2005 : 4th Conference on Generative Programming and Component Engineering
-
Journal Reviewing
- TOPLAS : Transactions on Programming Languages and Systems.
- SCP : Science of Computer Programming, Special Issue on Generative Programming
-
On-Campus Committees
- Organizer of Graduate Research Forum, University of Oregon, Fall 2007
- Faculty Recruiting Committee Student Representative, College of Computing, Georgia Institute of Technology, 2006.
- Ph.D. Recruiting Chair, College of Computing, Georgia Institute of Technology, 2003 — 2005.
- Women@CC Membership Chair, College of Computing, Georgia Institute of Technology, 2003.
Invited Talks
- Disciplined Meta-Programming for Object-Oriented Languages, January 2008, Delft University of Technology, Delft, The Netherlands.
Professional Membership
- Association for Computing Machinery (SIGSOFT, SIGPLAN).
- Institute of Electrical and Electronic Engineers.
Software
-
MorphJ: http://code.google.com/p/morphing/
MorphJ is an extension of Java that supports morphing. Morphing allows code to be declared by statically reflecting over and pattern-matching on the methods or fields of other types—including unknown type parameters. For instance, one can declare a MorphJ generic class SynchronizeMe<X> such that, for every method of X, SynchronizeMe<X> declares a method with the same signature, but inserts synchronization code in each method. MorphJ is the only language to reach this level of expressiveness while maintaining the guarantee of separate type-checking — a MorphJ generic class is type-checked independently of its uses to guarantee that it is well-typed for all possible instantiations.
-
cJ: http://www-static.cc.gatech.edu/~ssh/cj/
cJ is an extension of Java that allows fields and methods of a class or interface to be provided only under some static subtyping conditions. cJ allows the statically type-safe expression of a program’s conditional features—a disciplined implementation #ifdef, where not only the consis- tency of the definition and use of features is statically checked, conditions are also much more expressive. cJ is shown to be useful in a concise and type-safe reimplementation of the Java Collections Framework, the standard data structures library for Java, as well as for applications in the Feature-Oriented Programming domain.
-
Meta-AspectJ: http://www-static.cc.gatech.edu/maj/
Meta-AspectJ is a language tool for generating AspectJ (and, by extension, Java). Meta-AspectJ can be used to implement Domain-Specific Languages using AspectJ as a bytecode transforma- tion backend, or to enhance AspectJ itself with more expressive pointcuts and introductions.
References
Please see the pdf version of my vitae for detailed contact information.
- Professor Yannis Smaragdakis, Department of Computer Science, University of Massachusetts, Amherst.
- Dr. David Bacon, IBM T.J. Watson Research Center, Hawthorne, NY.
- Professor Todd Millstein, Department of Computer Science, University of California, Los Angeles.
- Professor Oege de Moor, Computing Laboratory, Oxford University.
Personal Data
-
Citizenship: United States of America