A final project from my CSC 492 - Programming with Unity course from the University of Rhode Island.
The project features a landscape dotted with trees, a base, and worker capsules. The concept is to organize the workers to gather resources from trees wich can be used to build turrets
along the landscape. At certain intervals of time, a wave of enemies will attempt to attack the base and lower the health of the building. The turrets will automatically detect and attack the enemies.
The game features a myriad of features and concepts in Unity and computer graphics such as collision detection, mouse-tracking, keyboard controls, raytracing, particle effects, and scene creation.
LeNet - 5 Convolutional Neural Network
October 4th, 2019
This was my one of my first successful neural networks written in the Python programing language. It is an approach to the LeNet - 5 CNN solution created by Yann Lecun in 1998.
The Network is written entirely in Python by me using only the library NumPy for assistance with the calculation of matrices. The simple user interface is written in C#.
The network consists of seven total layers which are used to identify images of hand-written numbers from the MNIST dataset. The first four are feature maps to learn identification 'features' via backpropogation. The final three layers are the traditional feed-forward
neural networks that compute a 'best-guess' when the final stage of the feature map data is flattened. This network's weights are also calculated over time using backpropogation.
Grocery List App - iOS and use of HTTP
March 29th, 2020
Bit of a side project I decided to work on. I built a simple app for grocery shopping to further get accustomed to iOS development and sending data over networks.
This was a great learning experience for understanding client-server communication with HTTP and how networking can be a helpful tool in using smart phones to their full potential.
I update an excel spreadsheet at home of what I need. Using server-side programming, the data can be requested on the iPhone app and displayed when I arrive at the store.
It also calculates spending (something I personally do often while shopping).
This was the first assignment in the CSC 412 course: Operating Systems and Networks. The primary focus of this project was to
get a first look at the Oracle VirtualBox program, set up a virtual machine of Ubuntu, learn simple Unix commands, and to get an idea for the format of
future assignments. The assignment started out by asking for a series of images to display adequate following of the instructions. The first image being that the virtual machine has
enough memory, processors allocated, and was overall setup correctly. The instructions of the assignment call for various uses and exposure to basic Unix commands that one may need such as
making directories, creating .txt files while passing data to them, deleting files, and editing in a nano text editor. The command history is then pulled and stored in a history.txt files that is
then edited in the nano editor to add my full name as the first line. History
CSC 412 - Programming Assignment 2
May 23rd, 2020
This assignment took an introductory look into C code syntax and bash shell scripting.
The combination of these two concepts resulted in a program that outputs a sequence of Fibonacci numbers given a primed input by the user.
The program then generates text files containing the summations in a directory named “Results”. In addition to the base requirements,
the extra credit opportunities were also fulfilled. This resulted in a program that also moves the contents of “Results” to a new directory named “Results_n”,
depending on the number of n folders already in existence. This was an assignment that was turned in poorly completed and was redone by me for personal self-education.
Link to report: Report
CSC 412 - Programming Assignment 3
June 14th, 2020
This programming assignment emphasized parallel processing. This is a fundamental concept used in modern operating systems.
Generally, I like to take no more than a week or two on these assignments but I did get caught up on some spring cleaning so I was delayed about a week. I found this project to be at a much higher difficulty(as expected) than the last assignment.
I think that not only was this a project looking at operating system concepts, but a fundamental look in how the C language works. While this was a project I feel I could probably complete in a short time with other languages, it was appropriate enough
that it required a level of self-teaching to nuances of memory management and pointers. Due to that, I think I was a bit slower this first time around. While this was challenging, I did find enjoyment out of solving the problems and learning many new techniques in computer science.
I anticipate the next project to be a bit quicker with my new knowledge of C. I may take some extra time to complete assignment 04 as I'm in the process of buying a new computer.
Link to report: Report Here is an explanation of the pattern search problem: Explanation
CSC 412 - Programming Assignment 4
July 15th, 2020 (Re-filmed July 28th)
The next project in this course was one that had a fairly practical function to it. We were tasked with creating a high dynamic range photo off of an overexposed, underexposed, and correctly exposed
image. The assignment then called for the students to thread a sub-image based on the number argument passed to the system. Threading is incredibly useful in that it is unlike parallel processing where the code can be executed simultaneously
at it's smallest sequence. Especially in the case of image processing where data can be quite large at times. Unfortunately, I was not able to get my new laptop and had to cancel my order. Apple is updating their
laptops with a new ARM architecture so I found it sort of silly to buy (not cheap!) a new computer for programming and general work. Delayed on my work for a wasteful reason but I hope it's worth the wait! Also my original recording
didn't seem to be successful and I haven't had the chance to make a new recording. This was completed on the 15th of July originally.
Link to report: Report Here is an explanation of the image problem: Explanation
CSC 412 - Programming Assignment 5 OPTIONAL
September 3rd, 2020
I was a bit distracted in my reading between projects. My latest book was Structured Computer Organization by Andrew S. Tanenbaum. He is a fantastic author! Even reading pretty much every day,
I was dragged in for about a month (minus one week when my dad visited). I found it to be incredibly informative for understanding computer architecture and the different levels of organization. I think my CSC 411 course will be the next
I review after my final project for this one. I thoroughly enjoyed this project and it likely has been favorite so far in CSC 412. This had to do with resource management, which is very necessary in modern operating systems, as processes
all attempt to complete their job with haste. It comprised of a simulation of travelers that each ate away at ink levels to draw their trails across the screen. The problem was that only one traveler could access the ink tanks at a time in order to prevent a race condition.
I also believe this has been my most elegant C programmed assignment thus far.
Link to report: Report Here is an explanation of the traveler problem: Explanation
CSC 412 - Programming Assignment Final ALTERNATIVE
September 21st, 2020
Well, it's nice to be finished with my review of operating systems and C. I have to say I'm rather proud of myself for going through each individual assignment on my own.
I'm happy knowing that I had the motivation to finish despite the random delays or distractions during my study. Reflecting on it too, I feel as though my time was well spent. I've gained a
serious amount of knowledge regarding operating system but also skills that I will be using in my profession as a programmer. I think for the time being, I'm going to be taking a break from strictly
programming to focus on studyig Linear Algebra. It'll be nice to be away from the screen for a bit.
Link to report: Report
CSC 411 - A Computer Architecture: The MIC 1/4th (Fibonacci Sequence)
February 12th, 2020
After finishing my reading of computer architecture I decided it was time to give this project an attempt. Certainly one that I found to be
both challenging and humbling in a unique way. A truly intimiate look at the primitive inner workings of the devices that power our entire lives today.
I have to admit I didn't think this would ever actually work succesfully in a simulation software such as this. The computer is largely based on
Andrew Tanenbaum's design of the MIC-1. The most significant differences being that this version uses a word size of one byte and as a result no shifter
is needed or used. There is also inefficient usage of the clock cycle mainly due to limitations in Logicly. The intention of the project was to
get an iterative Fibonacci sequence program up and running using the version of JVM Tanenbuam developed. This included also programming by hand the control
store for the microcode. It was apparent that anymore effort would cause Logicly to stop working - I was already pushing it to a limit it seemed.
I wouldn't consider it a perfect system, but one that is "good enough".
How does it all work?
Procedurally Generated Terrain - Diamond Square Algorithm
July 29th, 2021
This project uses the Unity game engine to create a 2D noise map from principles of the diamond-square algorithm. This noise map is then applied to a terrain game object within Unity to create points of heights that look to resemble a hill-like landscape.
As the character navigates and explores the world, new cells of terrain are created in real-time using data from the neighboring 2D noise map. As you can observe in the sample video, these terrain cells appear to continue in heights and landscapes so that the illusion of an infinite world is created.
The simulation is constantly aware of the characters location so it knows to always create terrain ahead of it. Each terrain cell has a boundary map to recognize when the character is approaching an edge.
Diamond-Square Wikipedia
Books of 2024
Politics and Passion: Toward a More Egalitarian Liberalism
By: Michael Walzer
Hood Feminism: Notes from the Women That a Movement Forgot
By: Mikki Kendall
En Sprø Fiskegryte
By: Olly Richards (Norwegian)
Books of 2023
The Lord of the Rings: The Fellowship of the Ring
By: J.R.R. Tolkien
Indigenous Food Sovereignty in the United States: Restoring Cultural knowledge, Protecting Enviroments, and Regaining Health
Edited by: Devon A Mihesuah and Elizabeth Hoover
Women Don't Owe You Pretty
By: Florence Givens
Books of 2022
Cracking the Coding Interview
By: Gayle Laakmann McDowell
Books of 2021
Linear Algebra and It's Applications: Part I
By: David C. Lay, Steven R. Lay, and Judi J. McDonald
Books of 2020
Fundamentals of Deep Learning
By: Nikhil Buduma
Introduction to Computer Architecture and Organization
By: Harold Lorin
In the Shadow of White
By: Shirley Ross
Operating Systems Concepts and Applications
By: Donald R. Horner
Disarming the Narcissist: Surviving & Thriving with the Self-Absorbed
By: Wendy T. Behary
Structured Computer Organization
By: Andrew S. Tanenbaum and Todd Austin
Books of 2019
The Negotiating Game
By: Chester L. Karrass
How to Make Money in Stocks
By: William J. O'Neil
Make Your Own Neural Network
By: Tariq Rashid
Connecting Paradgims: A Trauma-Informed & Neurobilogical Framework for Motivational Interviewing Implementation
By: Matthew S. Bennett
Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems
By: Aurélien Géron
Building Chatbots with Python: Using Natural Language Processing and Machine Learning
By: Sumit Raj
He Dazzled My Life With His Love
By: Shirley Ross
You, Inc.: The Art of Selling Yourself
By: Harry Beckwith & Christine Clifford
Startup Money Made Easy
By: Maria Aspan
The Total Money Makeover
By: Dave Ramsey
The Millionare Next Door: The Surprising Secrets of America's Wealthy
By: Thomas J. Stanley
Everyone Can Code: App Development with Swift
By: Apple