Jack Bodine

Artifacts are tangible pieces of evidence demonstrating the skills and knowledge I’ve acquired from various learning experiences.

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.

Programming Practices

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

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 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, Big Data, Data Analytics

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 Language

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 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