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
Sierra Kaplan-Nelson
Async I/O: A Case Study in Python
Saleil Bhat (pdf)
Concurrent Algorithms in C++ and Rust
Daniel McFalls
Efficient CUDA
★ Cody Coleman, Daniel Kang (pdf)
Exploring Hardware Parallelism’s Influence on Programming Through Convolution in CUDA and PyTorch
Christopher Sauer, Sam Redmond (pdf)
Producer/Consumer Models in Go, Rust, and C
Gabbi Fisher, Christopher Yeh (pdf)
ThreadCloud: Distributed computing in the browser
★ Robbie Ostrow

Lua

An Analysis of Various Lua Class Implementations
Evan Liang (pdf)
Complete Class System in Lua
Yiqi Chen (pdf)
Efficient Lua classes and Multiple Inheritance
Nihat Cem Inan (pdf)
Implementation and Evaluation of Matrix Libraries in Lua
Kevli Li, Peng-Wen Lin
Persistent Lua Memoization
Daniel Grazian (pdf)
Roguelike++
Connie Xiao, William Jiang (pdf)
Targeted Lua Optimization Using Terra
Tofe Alimi (pdf)

Machine Learning

Babble Labble: Training Models with Natural Language
★ Braden Hancock
Caffe2 vs Tensorflow
Baige Liu, Xiaoxue Zang (pdf)
Emel: One Line Machine Learning using Type Inference, Architecture Selection, and Hyperparameter Tuning
Barak Oshri, Nishith Khandwala (pdf)
Machine learning across Programming Paradigms
Stephanie Chen (pdf)
Performance and Control Flow in TensorFlow
Pang Wei Koh, Emma Pierson

Miscellaneous

An Empirical Study of Experienced Programmers’ Acquisition of New Programming Languages
★ Parastoo Abtahi, Griffin Dietz (pdf)
Beyond JavaScript: Building Stable Web Applications with Elm & Reason
Jack Swiggett (pdf)
Comparing Functional and Imperative Programming Languages on Classical Planning Problems
De-An Huang (pdf)
Networks and Diversity in the Development of the R Language
Bogdan State
Scheme Interpreter with Reflective Tower
Stephen Barnes (pdf)
The Expression Problem: An Extended Case Study
Kevin Tian, Colin Wei (pdf)

Rust

DAWPL: Rust-Based Algorithmic Music Composition
Armin Namavari (pdf)
Implementation and Exploration of Rust-based Graph Library
Rao Zhang (pdf)
Improving Media Codec Development with Rust
Jack O'Reilly (pdf)
Memory Management and Efficient Graph Processing in Rust
Kevin Chen, Elbert Lin (pdf)
Rivet: Dependency Injection in Rust
Michael Diamond, Matthew Vilim (pdf)
Rust Green Threads
Kevin Rosendahl (pdf)

Systems

Adding Support for Staged Functions in Spatial
David Koeplinger, Tushar Swamy (pdf)
Analyzing Compute Performance Across Languages & Hardware
Darren Baker (pdf)
Java Garbage Collection: Analysis of GC Algorithms
Malina Jiang
LLVM-Based JIT Circuit Simulation
Brennan Shacklett, Jennifer Tao (pdf)
Linux Key Management Subsystem in Rust
Matthew Denton (pdf)
Rust and C++ performance on the Algorithmic Lovasz Local Lemma
Anthony Perez (pdf)

SAT/SMT

Exploring Performance Tradeoffs in a Sudoku SAT Solver
Hana Lee (pdf)
Fuzzing Program Models with Z3
Wilson Nguyen
SMT Dependency Solver
Jerry Chen

Security

On Control Flow Hijacks of unsafe Rust
Yang Song (pdf)
Rust and the importance of memory safe systems programming languages
Marc Wong (pdf)
The Utility of a Cryptography DSL
William Kovacs (pdf)

Theory

Applications of GADTs in OCaml
Junjie Ke (pdf)
GADT Exploration
Ray Li (pdf)
Investigation of GADT applications and usage
Parth Shah (pdf)
Monads in OCaml
Siggi Kjartansson
Simple dependent type interpreter for matrix computation
Yen-Kai Huang (pdf)