CC0 Compiler Enhancements
C, SML
Read the release notes here Over the past two semesters I have made several enhancements to the C0 compiler CC0. Some of the notable changes are:
- Implementing backtraces in the C0 runtime
- Implementing bytecode generation for generic (
void*
) pointers and function pointers - Implementing compiler warnings for common mistakes (unused variable, dead code, statements with no effect etc.)
- Implemented
printf
andformat
(i.e.asprintf
) into the language with full consideration for bytecode generation, type safety, etc.
Hopefully this will be released soon
F0 Language Compiler
Haskell
This compiles a subset of ML (including sum/product types, polymorphism, first-class functions, closures, etc.) into C1.
Source on GitHub. It is also accessible on Andrew via ~ibhargav/public/f0
C0 IDE Integration
TypeScript
This implements Microsoft’s Language Server Protocol for the programming language C0, which is used as part of the introductory CS course at CMU. It has many of the features you would expect such as semantic code completion, error squiggles, go-to-definition, etc. Download/get more information on the VSCode Marketplace
Model Checking
Haskell
This program is able to decide the validity (truth value) of first-order logic statements over a synchronous model. It can also provide examples which satisfy a given statement. It was developed as part of the final project for 15-354 Computational Discrete Math at CMU and was an exercise for using some higher-level constructs of Haskell’s type systems to implement dependant typing. Source code on GitHub
Spectral Clustering
Python, C
Calculates appropriate clusters for data points of arbitrary dimension using the spectral clustering algorithm, and then displays the results graphically, along with a visual representation of the constructed similarity graph.
The Spectral Clustering algorithm makes use of the k-means algorithm, which is implemented in C for speed. The Spectral Clustering component is written in Python because it uses numpy
to find eigenvalues.
I’ve written about matplotlib
integration as well as C extensions on this site.
Pixel Game
TypeScript
This is a particle physics simulator. There are several different pixel types, each with different properties.
The game world features forces, explosions, gravity, as well as mechanisms to override these for each individual particle type.
The source is available on GitHub and a live demo is available here
Carnegie Cupid
Node.js, JavaScript
1st place - GSK @ HackCMU 2018
Modern SPA which used a real-time video feed of the user in conjunction with Microsoft Azure machine learning services to identify facial expressions as part of calculating “interest”.
More details available on DevPost.
Source available on GitHub