Jack Bodine

Artifacts are tangible pieces of evidence demonstrating the skills and knowledge I’ve acquired from various learning experiences. Links labeled “currently unavailable” indicate either that I haven’t gotten around to publishing it or that the project contains exam/coursework which must remain private for furture iterations of the course. However, if you email me, I’ll try to expedite it.

January 2025

Buddy Allocator in Rust

Philipp Oppermann's blog

Code on Github

During winter break between my semesters, I was able to start working on a project I had always wanted to do: write an OS in Rust. I followed the incredibly well put together online textbook by Philipp Oppermann and used the OS dev wiki for reference and further reading. This project allowed me to continue to practice Rust, as it’s a language I enjoy but don’t often have the chance to use during work or classes.

The textbook details implementations for three allocators: Bump, Linked List and Fixed-size block. To demonstrate my understanding of the topics discussed in the book, I implemented an additional allocator using the buddy memory allocation technique.

Operating Systems, Rust

November 2024

Comparative Analysis of Graph Neural Networks

Advanced Topics in Deep Learning

Report and Code Available Upon Request

As a final assignment in Advanced Topics in Deep Learning, I worked with a team to write a research report testing how different Graph Neural Network (GNN) architectures scale under computational constraints. We compared conventional GCNs, JKNet, and DropEdge, examining their performance while measuring FLOPs and MACs during inference. By varying hidden dimensions and layer counts, we assessed both accuracy and scalability across multiple graph datasets (Cora, Citeseer, PubMed).

Machine Learning, Research

September 2024

NLP Toolkit

Natural Language Processing

Currently Unavailble

This NLP toolkit was made to implement various concepts from my NLP course. It includes n-gram models, logisitc regression classifiers, and sequence labeling models.

Natural Language Processing, Python, Machine Learning

June 2024

Better Programming Anki Deck

Becoming a Better Programmer

Available Soon

“How to Be a Better Programmer” is a textbook I read independently, unrelated to any class. It covers various “meta programming” concepts such as communication, good Git practices, debugging strategies, and more. To encapsulate the key points from the book, I created an Anki deck as an artifact for this resource.

Git, Agile, DevOps

May 2024

Python Data Structures in C

C Programming for Everybody

Code Available on Github

I took this course to refresh my knowledge on C in preparation for a notoriously challenging cybersecurity course. Before this, I had no formal education in C, so it was beneficial to gain a comprehensive understanding of the language. As evidence of learning C, I’ve made public a collection of Python data structures that I partially or wholly implemented during the course.

C, C++

April 2024

Kierkegaard Essay

Søren Kierkegaard - Subjectivity, Irony and the Crisis of Modernity

Available Upon Request

Outside of computer science I have a deep affinity for philosophy. And while there is unfortunately no room in my MSc schedule to take any philosophy courses, I enrolled in the online course “Søren Kierkegaard - Subjectivity, Irony and the Crisis of Modernity” offered by my university.

The course covered Kierkegaard’s life, from his personal affairs to his time at the university, and included an analysis of his works. For the course conclusion, I wrote a paper examining how Kierkegaard used Socrates as a model in his writing and explored the implications of Kierkegaard’s ideas in the present day.

This course was personally rewarding, especially as I discovered that one of Kierkegaard’s former residence is just a block from where I live. Additionally, his old desk is right outside my office at the Royal Danish Library, and his journals are on display just downstairs. Seeing these artifacts daily gives me a connection to his work and legacy.

Philosophy

March 2024

Reinforcement Learning Algorithms in Python

Online and Reinforcement Learning

Code Available on Github

This course delved into online learning and reinforcement learning algorithms. I implemented several key algorithms, including multi-armed bandit algorithms like EXP3 and Hedge, as well as value iteration, policy evaluation, and temporal difference methods.

Machine Learning, Reinforcement Learning

March 2024

HCI Research Papers

Advanced Topics in Human Centered Computing

Available Upon Request

Advanced Topics in Human Centered Computing focused on the latest research in the field of HCI. We read several papers per class session and were tasked with writing three papers to demonstrate our understanding. I wrote a literature review on the current state of typing-based input methods for Virtual and Augmented Reality. Additionally, I designed an experiment proposal to investigate how people interact differently with anthropomorphic interfaces and wrote technical evaluations of several recently published papers related to ubiquitous design in computing.

Research, Human Computer Interaction, UI/UX Design

November 2023

Erlang-Inspired Parser and Evaluator in Haskell

Advanced Programming

Currently Unavailable

This project involves the implementation of an parser and evaluator for an Erlang-inspired language. The language maintains a simplified syntax and semantics similar to Erlang, focusing on the core concepts of functional programming and message-passing concurrency. The evaluator and parser were developed in Haskell, using monads for handling language features such as function closures, pattern matching, and error handling.

The parser reads the language’s concrete syntax and converts it into abstract syntax trees, which are then processed by the evaluator. The evaluator handles sequential computation within the language, including expression evaluation and variable bindings. Key aspects of the evaluation model include the handling of function environments and exception management, ensuring that the language behaves predictably during execution.

Haskell, Compilers

November 2023

SQL-Inspired Database Server in Erlang

Advanced Programming

Currently Unavailable

This project offers a simple SQL-inspired database system implemented in Erlang. It includes a custom API for managing database operations, such as creating tables, executing queries, and managing concurrency. The system supports essential database operations, all of which are optimized for concurrent execution.

Erlang’s concurrency model allows the database to efficiently handle multiple operations simultaneously, such as performing queries and updates across different tables. The project also includes error handling and synchronization mechanisms. QuickCheck tests were developed to validate the API’s functionality and ensure reliable operation. This resource is ideal for those interested in exploring database systems in Erlang, or for those seeking to implement their own SQL-inspired database using a functional programming language.

Erlang, Database Systems, Concurrent Programming

May 2023

Cinemigos

Capstone in Computer Science

App Store Listing

During the senior year of my bachelors degree, I worked with Clark Brace to create Cinemigos, an social media app for finding and sharing movies with friends. This capstone project was one of the largest and most comprehensive projects I undertook during my undergraduate education, integrating various skills and knowledge areas.

The project involved learning Swift for iOS development, designing UIs with Adobe XD, managing databases with Firebase, and navigating the entire iOS development platform. It brought together different aspects of my education, including programming, collaboration, UI design, and machine learning.

iOS Development, Swift, UI/UX Design, Project Management

May 2023

Processing Art Projects

Art of Code

Available Soon

At my university, Art of Code was registered as an art class rather than a computer science class. This course taught me to apply my programming skills in a creative medium. Using Processing in both Python and Java, I created several art projects that showcase the unique intersection of coding and art I explored during this course. These projects illustrate how programming can be used as a tool for artistic expression.

Art, Python, Java

May 2022

Drunk Philosophers

Artificial Neural Networks and Deep Learning

Project Report

Drunk Philosophers bridges the gap between ancient philosophical discourse and modern computational techniques using generative neural networks to recreate conversations between historical philosophers. The objective was to bring the insights of great thinkers like Aristotle, Hume, Kant, and Nietzsche into contemporary debates, leveraging the power of AI to generate new dialogues and potentially uncover new insights.

We used a comprehensive dataset from Kaggle containing over 300,000 sentences from 51 philosophical texts across 10 major schools of philosophy. After pre-processing the data, we trained Long Short-Term Memory (LSTM) networks for each philosopher to generate text segments, which were then refined using GPT-3 for coherent conversations. Despite initial challenges, our philosopher-bots eventually produced text that not only reflected the style and themes of each philosopher but also engaged in somewhat coherent debates. This outcome demonstrates that the nuances of each philosopher’s writing style can be effectively captured by neural networks, opening new avenues for exploring and understanding philosophical ideas.

Philosophy, Machine Learning, Natural Language Processing

May 2022

Movie Analytics Project

Computational Analysis of Big Data

Code Available on Github

“Computational Analysis of Big Data” focused on methods to handle and analyze large datasets to extract meaningful trends and insights. As part of a project, I worked with two other students to scrape movie data and analyze metrics such as the most successful director/actor combinations. This project utilized tools like Pandas, NumPy, and Streamlit, demonstrating our ability to work with big data and perform complex analyses.

Python, Data Analytics

December 2021

www.jackbodine.com

Independent

You're here!

I created this website to showcase my projects and share my photography– it’s nice to have a corner of the internet that is separate from social media sites. While I’m not a web developer, I am proud of what I’ve accomplished using just some HTML and CSS.

My goal has always been to keep the website simple and static, avoiding JavaScript or unnecessary complexity. When I decided to expand the site to include a blog and artifacts, I transitioned it from a simple project directory to a Jekyll-generated site. This allowed me to incorporate advanced features while simultaneously simplifying the overall structure.

Although computer science is my primary passion, I have a strong interest in design as well. Using a pre-made static site template would have been easier, but building this website from scratch has allowed me to imbue it with my personal touch. I’ve updated the design several times, and I’m genuinely happy with how it has evolved.

UI/UX Design, Web Development

December 2021

Rad Routes

Principles of Database Systems

Code Available on Github

Rad Routes is a web app for finding and sharing outdoor bouldering routes. This project was made with two others as part of our Database Systems course. It involves designing a SQLite database, creating a back-end with Django and front-end with react.

Database Systems, JavaScript, Web Development

December 2021

Concurrent Sorting Algorithms

CSCI475 - Operating Systems

Available Soon

CSCI 475, Operating Systems, concentrated on the fundamentals of operating systems, with a significant focus on multithreaded programming and concurrency. As an artifact, I implemented MergeSort and QuickSort using multithreading, written in C and utilizing pthreads, demonstrating my understanding and application of these concepts.

Operating Systems, Concurrent Programming

December 2020

Battleship in MIPS

Assembly Language and Computer Architecture

Code Available on Github

To demonstrate my understanding of assembly language and low-level programming, I recreated the classic children’s game “Battleship” entirely in MIPS assembly language. This project involved detailed knowledge of computer architecture and memory management, and showcases writing and debugging code at a low level.

Assembly

June 2020

Evil Hangman iOS App

Independent

App Store Listing

After the first year of my bachelor’s degree, I tasked myself with creating and publishing an iOS app to showcase what I had learned. The result was Evil Hangman on iOS. This was a significant project, completed entirely on my own, and involved extensive research. The app was developed using Swift and SwiftUI. It is available for download on the iOS app store.

iOS Development, Swift, UI/UX Design, Project Management

April 2020

Matheroids

CSCI240 - Software Engineering

Code Available on Github

A portmanteau of “math” and “asteroids,” Matheroids is a childrens math game made for CSCI240 - Software Engineering at University of Puget Sound. This game was made by a team of five, and an online version is currently hosted by another teammate here.

The course focused on teaching software engineering principles like SCRUM, Git, and team collaboration. Additionally, we learned useful programming tools relevant to web development, including JavaScript and PHP.

Web Development, JavaScript, Php

Skills