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 and format (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

Cellular Automata

TypeScript

Configurable cellular automata simulator.

Source available on GitHub and live demo available here