kaizencoderr / Programming

This repo contains various projects and assignments I worked on in my computer science courses.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Programming Projects

Path: Programming/Data Structures + algorithms/gitlet project/

-Gitlet description: A version-control system that mimics some of the basic features of the popular system Git. This allows users to make commits of different versions of files, reports the status of the current working directory, and allows the user to revert to prior versions of their project. This program allows a user to run 13 of the commonly used git commands including: init, add, commit, rm, log, global-log, find, status, checkout, branch, rm-branch, reset, merge. (Java)-(OOP, Trees, persistance, search algorithms, queues)

Path: Programming/Data Structures + algorithms/cube project/

-Cube description: A two player pure strategy boardgame consisting of an N×N array of squares, where N>1. At any time, each square may have one of three colors: red, blue, or white (neutral), and some number of spots (as on dice). Initially, all squares are white and have one spot. The neighbors of a square are the horizontally and vertically adjacent squares (diagonally adjacent squares are not neighbors). We say that a square is overfull if it contains more spots than it has neighbors. Thus, the four corner squares are overfull when they have more than two spots; other squares on the edge are overfull with more than three spots; and all others are overfull with more than four spots. There are two players, whom we'll call Red and Blue. The players each move in turn, with Red going first. A move consists of adding one spot on any square that does not have the opponent's color (so Red may add a spot to either a red or white square). A spot placed on any square colors that square with the player's color. This project contains an AI component to automatically play against a real user. The game can be played at this link: http://www.playonlinedicegames.com/jumpingcube (Java)-(Trees, OOP, game trees, alpha beta pruning)

Path: Programming/Data Structures + algorithms/enigma machine project/

-Enigma Machine description: A simulator for a generalized version of the WWII German enigma machine. This program takes descriptions of possible initial configurations of the machine and messages to encode or decode. The details of the enigma machine can be found at https://en.wikipedia.org/wiki/Enigma_machine This version of the enigma machine uses the same components as the real enigma machine but generalizes beyond the alphabet. (Java)-(OOP, interfaces, comparables)

Path: Programming/Data Structures + algorithms/colors project/

-Colors description: A game played on a W×H rectangular grid of square cells. Every square is colored from a set of available colors. The term active region refers to the set of grid cells having the same color as the upper-left cell and orthogonally reachable from that square. A cell is orthogonally reachable from a square S having color C if it can be reached by moving one square at a time up, down, left, or right starting from S and moving only to squares of color C. Each time the player clicks on a square with a color different from that of the active region, all the cells currently in the active region take on that color. So if there are cells of this color adjacent to the active region, they get added to the active region. The player's goal is to make all cells the same color by clicking a series of cells. The program sets an upper limit on the number of moves, depending on its own determination of how many moves are needed. (Java)-(OOP, arrays, hashsets)

Path: Programming/Structure of computer programs/bugs project/

-Bugs description: A game in which a battle between ants and bees takes place. There is a parent class "insects" that has children classes "ants" and "bees"; the ants and bees classes have many children themselves with differing attributes for each subclass. (Python)-(Inheritance, object-oriented programming, classes)

Path: Programming/Structure of computer programs/typer project/

-Typer description: A program that measures typing speed and implements typing autocorrect, which is a feature that attempts to correct the spelling of a word after a user types it. (Python)-(Recursion, abstraction, string manipulation, lists)

Path: Programming/Structure of computer programs/piggy project/

-Piggy description: Two players alternate turns trying to be the first to end a turn with at least 100 total points. On each turn, the current player chooses some number of dice to roll, up to 10. That player's score for the turn is the sum of the dice outcomes. (Python)-(Higher order functions, control statements, recursion)

Path: Programming/Data Structures + algorithms/Assignments/

-Assignments description: This folder contains lab/homework assignments that are much shorter and delve deeply into a specific topic.

Path: Programming/Structure of computer programs/Assignments/

-Assignments description: This folder contains lab/homework assignments that are much shorter and delve deeply into a specific topic.

About

This repo contains various projects and assignments I worked on in my computer science courses.


Languages

Language:Java 70.8%Language:Python 28.0%Language:Scheme 0.7%Language:Makefile 0.5%