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