Courses

Note: The following is a list of all the courses I have taken (or am registered for) of relevance to the CS major at UNC Greensboro. Each section is separated by a horizontal line, defined by the semester. Above these is a list of classes I have TA'd (or tutored) for. Those listed in bold are graduate courses taken as an undergraduate. As such, they require extra work (e.g. writing a paper or project) compared to their undergraduate counterparts.

Some classes will have links associated. These will redirect to the project associated with the course, or relevant assignments.

  • PHI 310 Introduction to Formal Logic (Section 01). Fall’20.
  • CSC 130 Introduction to Computer Science (Sections 03 & 04). Fall’20.
  • CSC 130 Introduction to Computer Science (Section 03). Spring’20.
  • CSC 130 Introduction to Computer Science (Section 01). Fall’19.

  • CSC 490 Senior Capstone. Spring ’21.
  • CSC 362 System Programming. Spring’21.

  • CSC 439 Introduction to Compiler Design. Fall’20.
  • CSC 677 Principles of Computer Networks. Fall’20.
  • CSC 662 Principles of Operating Systems. Fall’20.

  • CSC 654 Algorithm Analysis & Design. Spring’20.
  • CSC 471 Principles of Database Systems. Spring’20.
  • CSC 461 Principles of Computer Architecture. Spring’20.

  • CSC 652 Theory of Computation. Fall’19.
  • CSC 340 Software Engineering. Fall’19.
  • CSC 339 Concepts of Programming Languages. Fall’19.
  • PHI 310 Introduction to Formal Logic. Fall’19.

  • CSC 330 Advanced Data Structures. Spring’19.
  • CSC 350 Foundations of Computer Science II. Spring’19.
  • CSC 261 Computer Organization & Assembly Language. Spring ’19.

  • CSC 230 Elementary Data Structures & Algorithms. Fall’18.
  • CSC 250 Foundations of Computer Science I. Fall’18.

Research

DISCLAIMER: The following research projects are part of my undergraduate career at the University of North Carolina at Greensboro. As such, the quality and thoroughness of the work presented is not at the caliber of a full-time researcher or graduate student. Rather, what is here is a short summary of what I have worked on primarily with Dr. Nancy L. Green. Other works include those that I have completed in classes or individually (and hence are unpublishable).

Projects

Note: Throughout my career as a computer science student, I have worked on several extensive projects that showcase my software engineering capabilities. Many of these projects have since been archived, and most have their source code published (and publicly available) on GitHub. Some contain bugs and unfinished pieces. My intention in creating them was to further my programming horizons.

  • Principles of Computer Networks Tools and Calculators (Sep. 2020 - Nov. 2020)
    • Information: For my graduate computer networks course, we had to do an extra project or component in addition to the other course material and assignments. Since a large portion of the class focused around formulas and IP address calculations that are typically computed by hand, I decided to automate some of that cumbersome labor. This is the culmination of several smaller programs that all perform different but related network calculations.
    • Author(s): Joshua Crotts
    • Programming Language(s): C
    • Source Code

  • LittleC Compiler (Aug. 2020 - Nov. 2020)
    • Information: LittleC is the language we invented for my compiler's course at UNCG. We are designing the lexical analyzer, parser, intermediate code generation, and target code generation (MIPS Assembly).
    • Author(s): Joshua Crotts
    • Programming Language(s): Java with ANTLR4
    • Source Code (Unavailable at this time)

  • Network Simulator (Aug. 2020 - Nov. 2020)
    • Information: For my Principles of Computer Networks course, we have to design a Java GUI that traces a packet through the OSI model, showing the different abstractions and algorithms used in the transport protocol.
    • Author(s): Joshua Crotts
    • Programming Language(s): Java
    • Source Code (Unavailable at this time)

  • Website With Database Interface (Feb. 2020 - May 2020)
    • Information: For the first time ever, I had to write in PHP. For my database class, we were required to write a website that interfaces with a SQL database. I chose MySQL and PHP because they were the most relevant choices. As I said, before this project, I had never written a single line of PHP, and I was very inexperienced in SQL. After this, while I don't enjoy web development or front-end any more than I previously did, I learned a lot about remote connections to databases, and how to establish said connection between the front-end HTML and the back-end MySQL/PHP code.
    • Author(s): Joshua Crotts
    • Programming Language(s): PHP, MySQL, HTML, CSS
    • Source Code

  • Rhetorical Devices Detector (Jan. 2020 - Apr. 2020)
    • Information: For my undergraduate research project in the 2019-2020 school year, I worked with Dr. Nancy L. Green to develop an application that allows for detection of several rhetorical devices in science policy articles (loaded in via XML). We used Python, and the Natural Language Toolkit to build a GUI for an pleasant user-experience.
    • Author(s): Joshua Crotts, Dr. Nancy L. Green
    • Programming Language(s): Python
    • Github: Private

  • Lock Out Protocol (Aug. 2019 - Dec. 2019)
    • Information: A top-down 2D zombie-esque shooter game! Zombies have taken over, and you must stop them!
    • Author(s): Ronald Abrams, Rinty Chowdhury, Joshua Crotts
    • Programming Language(s): Java
    • Source Code

  • Deterministic Pushdown Automata Parser (Oct. 2019)
    • Information: A GUI program that lets users create their own DPDA schema, input a string, and follow it through the diagram. This is primarily useful for Theory of Computation courses, and was my graduate project for CSC-652 at UNCG.
    • Author(s): Joshua Crotts
    • Programming Language(s): Java
    • Source Code

  • SWED: Software Engineering Ethics Debater (May 2019 - Aug. 2019)
    • Information: Dr. Green wanted a way for users to create argument trees with a supplied argument scheme, case study and ethical evidence. This application lets users easily do that.
    • Author(s): Joshua Crotts, Dr. Nancy L. Green
    • Programming Language(s): Java
    • Source Code

  • Fractal Generator (Sep. 2020)
    • Information: This is a small fractal generator that I built out of curiosity. It features zooming, undo-ing a zoom, and inputting any complex equation, as well as the amount of zoom iterations.
    • Author(s): Joshua Crotts
    • Programming Language(s): Java
    • Source Code

  • C-Standards Game Library (Jul. 2020)
    • Information: C - Standards is the continuation of the Standards game library, originally written in Java.
    • Author(s): Joshua Crotts
    • Programming Language(s): C
    • Source Code

  • Brick Breaker (Jul. 2020)
    • Information: Brick-Breaker is a remake of the original Brick Breaker arcade game, acting somewhat as the successor to my AP Computer Science Principles Performance Task project.
    • Author(s): Joshua Crotts
    • Programming Language(s): C
    • Source Code

  • MySQL Graphical User Interface (Oct. 2019)
    • Information: For my Lock Out Protocol project, I always had to log in to the Google Cloud suite to alter the database. I created a way to easily manipulate tables and data in a presentable format.
    • Author(s): Joshua Crotts
    • Programming Language(s): Java
    • Source Code

  • Standards Game Library (Jan. 2020 - Dec. 2020)
    • Information: Standards is the new (and revived) version of the former Standards 1.0/2.0 library. It is based in Java, and includes all the basic materials and code necessary to create a basic game.
    • Author(s): Joshua Crotts, Andrew Matzureff
    • Date: Jan. 2020 - Dec. 2020
    • Programming Language(s): Java
    • Source Code

  • Hash Table Implementation (Jun. 2019)
    • Information: This is a small project following a tutorial on implementing the hash table data structure in C. Most of the code is admittedly from the tutorial, but the basis of doing this project was to learn more about the underlying implementation of a hash table (despite knowing it in Java), and to gain further exposure to the C language.
    • Author(s): Joshua Crotts
    • Date: Jun. 2019
    • Programming Language(s): C
    • Source Code

  • Database Implementation (Jun. 2019)
    • Information: Learning SQL is fun and all, but it's even more fun to go down to the level where everything happens, and rebuild it from the ground up.
    • Author(s): Joshua Crotts
    • Programming Language(s): C
    • Source Code
    • Status: Inactive

  • Elementary Virtual Machine (Jun. 2019)
    • Information: Assembly is one of my favorite languages for a couple of reasons. One is because I love working as close to the hardware as possible. The second is because I'm absolutely insane.
    • Author(s): Joshua Crotts
    • Programming Language(s): C
    • Source Code

  • iOS Calculator (Nov. 2017)
    • Information: A simple calculator app written in XCode. It is based on a queue data structure for parsing input and output.
    • Author(s): Joshua Crotts
    • Programming Language(s): Swift
    • Source Code

  • Castlevania Legion (Apr. 2017 - May 2017)
    • Information: A remake of my original Castlevania game, back better than ever with new monsters, weapons and physics!
    • Author(s): Joshua Crotts, Andrew Matzureff
    • Programming Language(s): Java
    • Source Code

  • Breakout (Apr. 2017)
    • Information: Recall Breakout from the original arcade machines? This is a remake of that. Fun, addictive, with colorful graphics and exciting, bubbly music! (Edited Aug. 10, 2020, this version of Breakout was for my AP CS Principles project).
    • Author(s): Joshua Crotts
    • Programming Language(s): Java
    • Source Code

  • Castlevania (Apr. 2016 - May 2016)
    • Information: My first game written in Java. I love the Castlevania games, and this is a poor representation of that.
    • Author(s): Joshua Crotts, Brandon Willis
    • Programming Language(s): Java
    • Source Code