My name's Shyam, and I'm a PhD student in Computer Science at the Johns Hopkins University. My research is focused on bringing database and programming languages technqiues together to create more intelligent compilers for large-scale data processing systems.
I can be found during most reasonable times, in Malone Hall on Homewood Campus, room 255. Alternatively, I can be reached by email.
I work primarily on K3, a high-level language for writing distributed data processing pipelines. K3 provides programming abstractions for specializing systems using workload- and deployment-specific information, all the way from algorithm design to low-level memory layouts.
K3 straddles database, programming language and compiler research, incorporating techniques including:
- static analyses such as types, effects and provenance,
- compile-time metaprogramming and delimited continuations,
- optimization through abstract interpretation,
- transaction semantics and conflict serializability,
- and many more!
Apart from being a research project, the K3 toolchain is also a veritable software engineering effort. The K3 compiler is 30K lines of Haskell code, and K3 programs are supported by a 3K LOC C++ runtime. If you're interested, you can find all of it on GitHub.
- The DBToaster Project - recursive incremental maintenance for materialized views.
- The Dyna Project - weighted logic programming with updates.
- K3: Declarative Data Systems Programming; P.C. Shyamshankar, Yotam Barnoy, Yanif Ahmad; New England Database Summit (NEDB) 2014.
- K3: Language Design for Building Multi-Platform, Domain-Specific Runtimes; P.C. Shyamshankar, Zachary E. Palmer, Yanif Ahmad; First Workshop on Cross-Model Language Design and Implementation (XLDI) 2012.
During my PhD, I've been a Teaching Assistant for a number of courses in the Computer Science department. These include:
- Declarative Methods (Spring 2014)
- Big Data, Small Languages, Scalable Systems (Fall 2013)
- Database Systems (Spring 2013, 2015)
- Randomized Algorithms (Fall 2012)