Jonathan Lam

EE/CS @ The Cooper Union


Projects

Commissioned projects

School projects (EE/CS)

Hackathons

Smaller projects


Maroon and Gold Labs (2019)

See it

Maroon and Gold Labs incubator for Cooper students. Created on Strikingly.


myGUT X22 and RespHealth X21 (2018)

RespHealth X21

myGUT X22

Gastrointestinal and upper respiratory take-home pathogen panels at Maverick Scientific (former Maverick Labs of Florida).


Safe Rides of Redding and Easton Web-App (2018)

See it

Source

Web app for the newly-founded Safe Rides program at JBHS. Not operational anymore.


C99 compiler (2021)

Source

A (poor) C99 compiler for the compilers class. Aims to implement most of the C99 standard. Compiler was built using the standard compiler tools flex (lex) and bison (yacc). Successive assignments included lexing; parsing (expressions, declarations, statements); quad generation; and target code generation. (WIP)


Cloud convex hull (2021)

Source

A convex hull cloud service, built on AWS in order to be scalable, highly-available, and performant. (WIP)


Parallel graph coloring (2021)

Checkpoint 1 README

Checkpoint 2 README

Checkpoint 2 visuals

Source

Graph coloring using the Gebremedhin-Manne distributed-memory speculative coloring algorithm for the ECE453 Cloud Computing. The goal is to achieve speedup with parallel (CPU) computation of a real distributed computing algorithm. The first assignment was to implement this on a multi-threaded single-node application, and the second assignment was to extend to multiple nodes. While this particular algorithm scaled well onto multiple threads, network speeds were insufficient to produce a speedup.


Lucy-Richardson Deconvolution on CUDA (2021)

Report

Source

A blind iterative deconvolution algorithm used to deblur an image. CUDA version compared with CPU version in terms of accuracy and speed. Deblurring effectiveness was evaluated using a LoG filter (edge detector). CUDA acceleration achieved an order of magnitude speed improvement, even with a naive implementation.


CYK parser (2021)

Source

Parse tree generator using CYK algorithm on a CNF grammar for ECE467.


Naive Bayes text categorization (2021)

Source

Report

Naive Bayes bag-of-words (supervised) text categorization on three sample corpora. Uses the NLTK word tokenizer and Laplace (+1) smoothing for ECE467.


Neural network in Scheme Lisp (2020)

Source

Report

Neural network written in Scheme. Uses functional approaches to typically imperative (array-based) approaches, at the cost of some performance.


Searching for a more minimal intrinsic dimension of objective landscapes (2020)

Source

Paper

Presentation

We base our methods and intuition off of Li et al. (2018), which attempts to define and estimate an "intrinsic dimension" of a given learning problem in conjunction with the neural architecture (the objective landscape). This is equivalent to approximating the minimum parameterization of an objective landscape, and may have practical application in model compression. We extend these methods with a series of experiments, mostly concerning using nonlinear transformations, in order to find a more minimal intrinsic dimension. For ECE472 final project.


Simulating Digital Coding Schemes (w/ Noise Distortion) in MATLAB (2020)

Report

Similar to the projects on digital and analog modulation schemes below, but experimenting with a linear block code (LBC) and error detection/correction. For ECE300.


Simulating Digital Modulation Schemes (w/ Noise Distortion) in MATLAB (2020)

Report

Similar to the project on analog modulation schemes below, but with digital modulation schemes. Experimented with binary antipodal, binary orthogonal, PSK, DPSK, QAM. Theoretical results are largely reproduced. For ECE300.


Checkers-playing AI (2020)

Source

Report

Checkers-playing AI using minimax-search with alpha-beta pruning and time-limited iterative deepening. Uses a custom heuristic based off of common Checkers strategy. Both a C++ and a Chez Scheme version were written, using very similar data structures and optimizations; Scheme version reaches roughly the same depth as C++ version. For ECE469.


Reproducing MobileNets on CIFAR-10 (2020)

Report

Created an implementation of the MobileNet architecture described in arXiv:1704.04861, and verified some of the results produced by the author. Used CIFAR-10 rather than ImageNet due to computational limitations. Assignment was to reproduce the findings of a research paper. Midterm project for ECE472.


Simulating Analog Modulation Schemes (w/ Noise Distortion) in MATLAB (2020)

Report

Used MATLAB to simulate signals and analog modulation schemes (conventional AM, SSB AM, FM, PM), and the results of applying changes to the parameters or of adding noise to the modulated signal. Able to reproduce most theoretical results fairly well. For ECE300.


How-to Series: Scheme Lisp (2020)

Video

Transcript

Exploratory session into Scheme as the first installation of the IEEExACM club How-to series.


Assorted Frequentist Machine Learning Techniques (2020)

Linear regression w/ L1, L2 regularization

Logistic (binomial and multinomial) regression with stepwise pruning, L1 regularization

Reproducing a wrong and correct methods for doing K-fold CV

Regression using gradient-boosted trees (xgboost) and random forests (sklearn)

Comparing feature importance and performance betweeen GBT and RF

Market-basket analysis (mlxtend)

Recommender systems, and an implementation using non-negative matrix factorization (NMF)

Experimenting with various machine learning techniques for ECE475. This includes supervised learning: linear regression/classification, ensemble classification (gradient-boosted trees and random forests), recommender systems; and unsupervised learning: market-basket analysis. Also explored proper validation techniques and regularization techniques: L1, L2, complexity pruning for decision trees.


Photocol Photo Gallery (2020)

Source

Explored various web design procedures and technologies, including but not limited to: CRLF injection attack, session cookies, Java Spring framework, React.JS, Bootstrap, HTTP protocols, containerization (w/ Docker), many-to-one relationships (e.g., access control) in PostgreSQL, prepared statements, one-way hashing (w/ bcrypt), SQL foreign keys, etc. For ECE366.


Theremin (2019)

Report

Constructed a theremin (the instrument) using the principles of circuit design and operational amplifiers. Final project for ECE291.


Dataset-optimized Sorting (2018)

Source

Implemented various common sorting algorithms adapted for provided datasets. Explored quicksort, counting/bin sort, indirect sort, insertion sort.


"The Regulators" Colorimetric Test Strip (2018)

Website

Source

Engineering design project aimed towards providing a low-cost alternative to diabetes test strip. Uses a chemical that changes color based on glucose composition. Accompanying Android app to help determine glucose composition from color. (First time using React.) For EID101.


Tron (2018)

Report

Recreated an 8x8 version of the Tron game in hardware as the Digital Logic Design final project. Involves use of CMOS 4000-series logic chips, flip-flops, and various timing optimizations. For ECE150.


Multiplayer Racing Game (2018)

Demo

Source

Report

Create Performance Task for AP CSP. Worked with Rahul Kiefer. Multiplayer "racing" game written with a Node.JS+socket.io backend, THREE.js 3D library, JS orientation library for smartphone controls. (Much of the same technology as Fruit Sensei.)


Itmine (2019)

Demo

Source

Itmine is a tool to help people not lose things. Generate a QR code to put on your belongings; if lost, it will generate a shipping label to the owner and give a small monetary award to the finder. Powered by the MEAN stack and the ShipEngine API. Submitted to the ERP Hackathon hosted by General Assembly.


Accelomap (2018)

Source

Map out a region using accelerometer data, using the basic principle that distance is the second integral of acceleration. Won third place project at Stonybrook Local Hack Day 2018.


Fluorination (2018)

Source

A gamified community with an education-focused forum. Won Best Use of Algolia award at HackCooper 2018.


MoMath Hackathon 2 (2018)

MoMath showcase

Source

Created a number of projects for the MoMath: Expressions 2018 hackathon. See repo for more details.


Fruit Sensei (2017)

Devpost

Source

Use your smartphone as a controller in a fruit-slicing game! Back when Fruit Sensei was popular. Won Best Game at StuyHacks Local Hack Day 2017.


MoMath Hackathon 1 (2017)

Source

Created a number of projects for the MoMath: Expressions 2017 hackathon. See repo for more details.


RingTune (2016)

Demo

Source

First hackathon project (LIHacks 2016)! Worked with Chris Vassallo to create a user-guided music generator using common sequences of notes. Won Most Entrepreneurial award.


Groovy Maven Template (2020)

Source

Template for compiling a Groovy application into an uber-JAR using mvn so that you can easily run export it without requiring a Groovy installation on the client.


Catcake (2020)

Demo

Source

Second attempt at making a gallery website. Preceded by Gatollery.


Project Euler in Java (2020)

Source

Second attempt at handling Project Euler, but in Java (first time was in JS). Slightly less naive implementations.


Gatollery (2019)

Demo

Source

First attempt at making a gallery website. Superseceded by Catcake.


Color layer generator (2019)

Demo

Source

CSS classes as "color filters" using Sass.


Everything is Sheep (EiS) (2018)

Demo

My (current) personal blog. Built on a Node.JS backend, hosted on Heroku. No front end frameworks employed (all JS/CSS is vanilla).


Unscrambler (2018)

Demo

Source

Anagram finder. Additionally, scrambles words as a game for you to find an anagram.


Blank new tab Chrome extension (2018)

Source

Simplicity in the new tab page on Google Chrome. For those who don't like clutter.


Remeet (2018)

Demo

Source

Messing around with WebRTC for P2P video streaming.


Personal website (v2) (2018)

Demo

Source

Second iteration of a personal website.


Elastic band (2018)

Demo

Source

Playing around with what we learned in physics class. Spring/elastic band simulation using p5/processing.js. Adjustable spring constants.


Gravity points (2018)

Demo

Source

Using what we learned in AP Physics.


Barlow Bowling website (2018)

Demo

Source

Website to keep track of scores for the JBHS bowling club and predict Varsity players for the upcoming week. First time attempting to use Angular Material.


Haiku generator (2018)

Source

Randomly scrapes random Wikipedia pages and chooses sentences that start with a 5-7-5 syllable pattern (according to Datamuse API).


Fractals (2016)

Julia set

Mendelbrot set

Koch curve

Chaos game square

Chaos game hexagon

Generate fractals with Chaos game (Sierpinski triangle & chaos squares/hexagons), the Thue-Morse sequence (Koch curve), and convergence of complex series (Julia/Mendelbrot sets)


Memory game (2016)

Demo

Source

Simple memory game in JS.


Tic Tac Toe (2016)

Demo

Source

Simple JS tic tac toe. Doesn't play very well.


rps-random (2016)

Source

Rock paper scissors against a random computer opponent.


ttt (2016)

Source

A simple tic-tac-toe player in C.


Paste to HTML (2016)

Demo

Source

If you copy HTML from a webpage using Ctrl+C, you can paste it into this input box (using Ctrl+V) and get the underlying HTML. Handy little tool.


Word visualizer (2016)

Demo

Source

Save image as text! Also change font family, size, (some) lighting, letter colors, and more! Can be used to imitate simple text-only logos.


htmldebug (2016)

Source

My attempt at making a simple debugging console like Firebug, since the browser developer console was slow (at the time).


Nutmeg Bowl website proposal (2016)

Demo

Source

My second attempt at revamping the original Nutmeg Bowl of Fairfield website. They didn't accept it.


jkcd (2016)

Source

Desktop xkcd viewer with a JavaFX GUI. Requires Java 8+.


xkcd-term (2016)

Source

Desktop xkcd viewer in the (Linux) terminal. Requires ImageMagick.


Pop the lock (2016)

Demo

Source

Imitation of the original game of the same name.


Real coding time (2016)

Client source

Server source

Real-time coding in the browser (like Google Docs but for code). Similar to the original chat, but experimented with syntax highlighting for inputted text.


The Homework Life (2016-18)

Source

First attempt at a blog. MySQL backend. Lazy-loading front-end. All the posts have been migrated to Everything is Sheep. Used to be hosted at thehomeworklife.co.nf.


Periodic Letters (2016)

Demo

Source

Fun tool to make strings of text out of periodic element boxes. I used this to make a Christmas tree out of some Christmas song for Honors Chemistry.


Balencistry (2016)

Demo

Source

Visual aid to help when balancing chemical equations for Honors chemistry.


Personal website (v1) (2015)

Demo

Source

First iteration of a personal website.


Chat (2015)

Source

Chrome extension source

My first Node.js application (!!!). Learned how to use ExpressJS and socket.io to create a real-time chat server. Was also playing around with Chrome extensions at the time and made one that connects to the main chat server.


Speller (2015)

Demo

Source

Aimed to help my sister win the regional Spelling Bee (which she did!). Playing around with the voice using the native JS speech synthesis API.


Planetary (2015)

Demo

Source

Fun little visual. Props to Hunter Lightman for the visuals and showing me how to use trig to animate circles with code for the first time.


Flappy (2015)

Demo

Source

Naive attempt at Flappy bird. Buggy but kind of fun.


(Early attempts at) Project Euler in JS (2015)

Source

First attempt at Project Euler. Many of these are brute force. Written while attending a summer program for learning C.


"Programath" PLTW Final Project (2014)

Demo

First website presented to peers. Calculator tools (in JS), and an explanation of how HTML/CSS/JS/PHP fit together to form a website.



© Copyright 2021 Jonathan Lam