Peter Mocarski

B.Sc and M.Eng in Computer Science

Personal Projects

Weighted Higher-Order Clustering

Clustering is an important component of understanding network structure. This paper develops a metric for analyzing higher-order clustering of weighted graphs.

Prac-Man 3D

As part of a semester long design course, I worked with a team of three to design Prac-Man: a 3D implementation of PAC-MAN envisioned as a horror game. The project was implemented in WebGL and JavaScript without any use of outside graphics libraries. My individual contributions involved developing dynamic shading models, implementing multiple camera views, integrating music into game events, animating player and ghost movement, and optimizing project design to maintain a consistent frame rate of 60 FPS.

Because I do not own the copyrights to PAC-MAN, I am currently unable to distribute or publish the source code to this project.


CompanySearch is a tool for investors to discover publicly traded companies on the stock market. As an example, a user can specify that they are looking for a large-cap company in the information technology sector which specializes in the cloud. CompanySearch will then use supervised machine learning techniques to search through thousands of companies, finding the top ten which best match this query. In addition to displaying company descriptions and current stock prices, Twitter sentiment analysis is also performed for every company, providing a glimpse into current public opinions about the market. The back-end was implemented using Python/Flask, while the front-end uses JavaScript/React. Please note that CompanySearch is currently hosted on a free hosting service with very limited computational resources and for this reason, may take a while to load.

Ray Tracer and Shaders

As part of a computer graphics course offered at Cornell, I worked with a partner to implement a ray tracer in Java. A ray tracer renders a computer image by simulating the way light propagates through space and interacts with objects. Given a triangle mesh, the ray tracer generates the scene along with shadows, light reflectance, and textures. The ray tracer supports orthogonal and perspective viewing, Monte Carlo illumination, and multiple surface shading models. My role in the project involved implementing ray generation and intersection, computing shading during the rendering process, integrating anti-aliasing, and implementing an acceleration structure for large models.

Throughout the course, I implemented a Blinn-Phong shader, a Cook-Torrance shader, as well as shaders based on environment mapping, normal mapping, and displacement mapping. Additionally, I implemented shaders for different types of materials, such as metal and glass.

ConsTableaux: Automated Theorem Prover

ConsTableaux is an automated theorem prover, proof visualizer, and educational tool based off of the method of analytic tableaux. It was implemented as a team of three using Scala for the back-end and JavaScript/D3.js for the front-end. Given a formula in propositional logic, ConsTableaux proves whether or not it is a tautology, and generates an interactive, step-by-step tree visualization of a proof or counter-example. The project aims to help students who have trouble grasping the underlying intuition behind proofs of propositional logic by presenting them through a visual medium. I worked on the backend of this project, and was responsible for implementing the parser and the core logic behind proof evaluation. ConsTableaux was created under the supervision of Professor Robert Constable and was featured at Bits On Our Minds 2017.

Pokemon: Pebble Edition

Conceived at the RIT BrickHack Hackathon, and winning the Best Pebble Hack Award, Pokemon Pebble Edition brings the virtual Pokemon world to reality, using geolocation and player movement to create a location-based version of the classic videogame. Players can battle and capture Pokemon in the real world using their Pebble smartwatch, and use their Android smartphone as a Pokedex. I was responsible for developing all game mechanics on the Pebble smart watch, as well as integrating sensor data from the Android handset into game events. Despite high interest in further development, Pokemon Pebble was discontinued in late 2015 once Pokemon Go was announced, due to a large overlap in content.

Chess Opening Recommender

Based on your playing style, the chess opening recommendation engine suggests chess openings which are a perfect match for you. You can find openings which are aggressive, passive, positional, tactical, theory-heavy, simple, open, closed, and anywhere in between. Descriptions for various chess openings are scraped from Wikipedia and analyzed for textual similarity to keywords corresponding to user input. The app is entirely implemented using JavaSript/jQuery, while Python was used for extracting the dataset from Wikipedia.