|| The following is a collection of my NMSU CS projects and assignments. 📓
-
Compilers & Automata
Repo Link- As individuals, we created a simple one-pass compiler to handle a language best described as a mix between ALGOL and C. Utilizing regular expressions through Lex, training YACC on how to parse input and structure it into the desired Intermediate Representation of an Abstract Syntax Tree, and emitting MIPS assembly code from a given input file to run on the MARS simulator, I was able to create a working compiler that could handle the following:
- Variable Declarations
- Function Declarations
- Assignment Statements
- Read-Write Statements
- If/If-Else Statements
- While Statements
- Expressions
- Addition, Subtraction
- Multiplication, Division
- BITWISE AND, OR
- LOGICAL NOT
- Function Calls
- Type-Checking
- Integer
- Boolean
- Void
- As individuals, we created a simple one-pass compiler to handle a language best described as a mix between ALGOL and C. Utilizing regular expressions through Lex, training YACC on how to parse input and structure it into the desired Intermediate Representation of an Abstract Syntax Tree, and emitting MIPS assembly code from a given input file to run on the MARS simulator, I was able to create a working compiler that could handle the following:
To avoid plagiarism, this repo is privated, but access is available upon request with a GitHub username at: robertvargas.eptx@gmail.com
- Software Development
Individual Programs | Group Project Repo | Group Project Site- We collaborated in small teams to create a software solution for any idea we wish, while also maintaining source control and a high level of testing and documentation. For this project, we chose and iterated through a small, 2D top-down RPG, programming in C# through the Unity Game Engine. More details can be found through the Project Website linked above.
- Discrete Mathematics for Computer Science
- This class primarily focused on the fundamentals of logic, sets, permutations, and recursion with a heavy emphasis on inductive proofs.
- Intro to Data Structures
- This class went in-depth into different common data structures developers apply to solve a variety of different problems through software. This included, but was not limited to, Single and Doubly-Linked Lists, Generic Programming, Stacks, Queues, Hash Tables, Binary Search Trees, Heaps, and a touch of AVL trees. Additionally, there was a heavy focus on runtime complexity, and analyzing algorithms.
- Machine Programming & Organization
- This class focused on the principles of AVR, along with taking analog input and outputting it through an Arduino Uno board.
- Object-Oriented Programming
- This class focused primarily on C for the first half of the semester, and C++ on the second, along with a heavy emphasis on pointers, malloc(), and Object-Oriented concepts and programming.