Final Projects - Fall 2017
This is a list of the final projects completed for CS 242 in the Fall quarter of 2017, coarsely split into a few high-level categories. Report titles and PDFs are available, unless requested to be withheld by the author. The star (★) indicates a project as one of four awarded for the best presentation.
Concurrency
An Exploration of Regent and Legion in the Parallel Programming Landscape
Async I/O: A Case Study in Python
Concurrent Algorithms in C++ and Rust
Efficient CUDA
Exploring Hardware Parallelism’s Influence on Programming Through Convolution in CUDA and PyTorch
Producer/Consumer Models in Go, Rust, and C
ThreadCloud: Distributed computing in the browser
Lua
An Analysis of Various Lua Class Implementations
Complete Class System in Lua
Efficient Lua classes and Multiple Inheritance
Implementation and Evaluation of Matrix Libraries in Lua
Persistent Lua Memoization
Roguelike++
Targeted Lua Optimization Using Terra
Machine Learning
Babble Labble: Training Models with Natural Language
Caffe2 vs Tensorflow
Emel: One Line Machine Learning using Type Inference, Architecture Selection, and Hyperparameter Tuning
Machine learning across Programming Paradigms
Performance and Control Flow in TensorFlow
Miscellaneous
An Empirical Study of Experienced Programmers’ Acquisition of New Programming Languages
Beyond JavaScript: Building Stable Web Applications with Elm & Reason
Comparing Functional and Imperative Programming Languages on Classical Planning Problems
Networks and Diversity in the Development of the R Language
Scheme Interpreter with Reflective Tower
The Expression Problem: An Extended Case Study
Rust
DAWPL: Rust-Based Algorithmic Music Composition
Implementation and Exploration of Rust-based Graph Library
Improving Media Codec Development with Rust
Memory Management and Efficient Graph Processing in Rust
Rivet: Dependency Injection in Rust
Rust Green Threads
Systems
Adding Support for Staged Functions in Spatial
Analyzing Compute Performance Across Languages & Hardware
Java Garbage Collection: Analysis of GC Algorithms
LLVM-Based JIT Circuit Simulation
Linux Key Management Subsystem in Rust
Rust and C++ performance on the Algorithmic Lovasz Local Lemma
SAT/SMT
Exploring Performance Tradeoffs in a Sudoku SAT Solver
Fuzzing Program Models with Z3
SMT Dependency Solver
Security
On Control Flow Hijacks of unsafe Rust
Rust and the importance of memory safe systems programming languages
The Utility of a Cryptography DSL
Theory
Applications of GADTs in OCaml
GADT Exploration
Investigation of GADT applications and usage
Monads in OCaml
Simple dependent type interpreter for matrix computation