- cuFLAVR - Neural Network Frame Interpolation on the GPU
- CUDA Path Tracer
- WebGL Forward+ and Clustered Deferred Shading
- CUDA Boid Flocking Simulator
- CUDA Scan, Stream Compaction, Radix Sort
- Mini-Minecraft
- x86lite Assembler and Interpreter
- Superscalar Pipelined RISC CPU
- Turkish Morphology
- Shell
- J Compiler
- Go
- CdSS: Constrained Style Sheets
- Malbolge VM
C++
CUDA
cuDNN
Python
PyTorch
An implementation of the neural-network flow-agnostic frame-interpolation architecture FLAVR using CUDA and cuDNN.
This project implements the decoder stage of the architecture using cuDNN and combines it with an encoder
adapted from the reference FLAVR implementation in Python and PyTorch. This is a 3-person team project.
Original (30 FPS)
2x interpolated (30 FPS)
C++
CUDA
Vulkan
A path-tracer based on Physically Based Rendering implemented using CUDA.
Features include BSDF diffuse, specular, and refractive surfaces; Fresnel effects; depth-of-field; arbitrary OBJ mesh
loading; stream compaction on terminated rays; caching first bounces; and stochastic-sampled antialiasing.
Conversion from OpenGL to Vulkan is a work-in-progress. This is a CIS 565 project.
Rendered with 5000 iterations:
JavaScript
WebGL
Simulation of a scene with a large number of light sources using different methods of rendering light:
Forward Rendering, Forward+ Rendering, and Clustered Deferred Rendering. Also features Blinn-Phong shading. This is a CIS 565 project.
Try the Live Demo.
Tested on Google Chrome, requires WebGL extensions enabled by default on Chrome.
C++
CUDA
Implementation of the Reynolds boid algorithm using
CUDA. This is a CIS 565 project.
C++
CUDA
Parallel scan and stream compaction implemented with CUDA. Also includes a radix sort implementation that can outperform std::sort for large arrays and a novel work-in-progress parallel UTF-8 decoder/encoder in CUDA. This is a CIS 565 project.
C++
OpenGL
Qt
A Minecraft-like game. This is a 3-person team final project for CIS 460. I implemented efficient multithreaded terrain generation using pthreads, chunk rendering, swimming, and biomes.
OCaml
x86_64
Interpreter for a subset of x86. Assembles a subset of x86_64 to a pseudo-binary representation
and interprets it. The included sample x86lite program is an implementation of left-reduce in assembly.
This is a project for CIS 341.
Verilog
5-stage pipelined dual-channel CPU for a RISC architecture.
This is a 2-person team project for CIS571.
Go
Algorithms implementing features of Turkish Morphology. Currently consists of a package inflection that performs agglutination on a root followed by a series of suffixes, respecting Turkish phonotactical rules. E.g.
avrupa lI lAş DIr AmA DIK lAr (I)mIz DAn (y)mIş sInIz -> avrupalılaştıramadıklarımızdanmışsınız
C
Implementation of a subset of the Unix Shell with support for job control. Supports redirection, pipes, background processes, job control with the commands jobs
, fg
, bg
; and relays signals to child processes.
C
Compiler for J, a Forth-like language, targeting a 16-bit RISC architecture assembly. This is a project for CIS240.
Java
GUI implementation of the Go board game in Java using Swing.
Python
CSS
OR-Tools
CSS with optional variable constraints. This project implements a transpiler from a superset of CSS that includes variables
and constraint programming to plain CSS using Google's OR-Tools. This is a 2-person team final project for CIS 189.
C
An interpreter for the Malbolge esoteric programming language written in ANSI C.
Malbolge is a language designed to be extremely difficult to program in.