
Programming/Scripting Languages: Java, C, OCaml, Rust, Assembly, Python
Frameworks and Tools: UNIX, Git, VS Code, gdb, eclipse
Computer Systems: Developed strong skills in C programming, systems programming, and assembly language, focusing on user and OS/hardware interaction, with practical experience in the Linux environment.
Algorithms: In-depth study of algorithms for sorting, graphs (Dijkstra, BFS, DFS), trees, and combinatorics.
Programming Language Paradigms and Concepts: Explored various programming paradigms such as dynamic (e.g., OCaml), functional (e.g., Haskell), and memory-safe systems programming (e.g., Rust)
Computer and Network Security: Gained foundational knowledge in computer systems and network security, focusing on identifying, analyzing, and resolving security issues related to computer networks. Working on projects including buffer overflow and SQL injection.
Regular Expression Engine: Implemented a dynamically-typed version of OCaml which included a lexer, parser, and interpreter using OCaml.
Rust Vending Machine: Built a finite state machine representing a vending machine using Rust.
Buffer Overflow: Attacking a function that includes a buffer-overflow vulnerability over the network using C, GDB, and looking at assembly.