I graduated college in 2023 with a Bachelor’s and accelerated Master’s degree in Computer Science. Here I will go a bit in detail describing each course which further developed my knowledge of computer science and coding skills, as I find those are the most relevant. At the bottom of the page I have also included a brief list of other courses I have taken which may or may not be tangentially related to computer science.
Completed Courses
-
This course introduces students to an object-oriented model of programming. Students are taught how programs can be decomposed into classes and objects. By emphasizing design, this course shows how to implement small defect-free programs and evaluate design decisions to select an optimal design under specific assumptions. Topics include inheritance, exceptions, interface, design by contract, basic design patterns, and reuse. Students were expected to design, implement, and debug object-oriented programs composed of multiple classes and over a variety of data structures in the Java programming language. The course included a total of 6 Homeworks. For a full description of each homework and my own solutions to the problems, please visit my GitHub repository. I have completed this course in term B of my freshman year.
-
This course introduces students to a model of programming where the programming language exposes details of how the hardware stores and executes software. Students are taught the concepts of manual memory management, pointers, the machine stack, and input/ output mechanisms. The course involves large-scale programming exercises and is designed to help students confront issues of safe programming with system-level constructs. Students were taught to construct sequence diagrams and use test-driven development for producing functional and maintainable code in C++ and C. The course included a total of 6 Homeworks. For a full description and my own solution to each Homework assignment please visit my GitHub Repository. I have completed this course in term C of my freshman year.
-
The Algorithms course built upon the fundamental knowledge of data structures, data abstraction techniques, and mathematical tools, in order to develop a number of examples of algorithm design and worst and average case performance analysis. Topics included greedy algorithms, divide-and-conquer algorithms, dynamic programming, heuristics, and probabilistic algorithms. Problems were drawn from areas such as sorting, graph theory, and string processing. Students were expected to perform analysis on a variety of algorithms. The course included a total of 4 Homework assignments and a final Group Project. For a full description and my own solution to the homework assignments please visit my GitHub Repository. For a description of the Group Project, please visit the Projects page. I have completed the Algorithms course in term D of my freshman year.
-
This course provided a broad view of computer networks. The course exposed students to all seven layers of OSI Reference Model while providing an introduction into newer topics such as wireless networking and Internet traffic concerns. Topics covered include: physical layer considerations, network protocols, wide area networks, local area networks, wireless networks, switches and routing, congestion, Internet traffic and network security. Students were expected to do extensive systems/network programming and were expected to make use of simulation and measurement tools to gain an appreciation of current network design and performance issues. There were a total of 3 Homeworks in which students were asked to implement a low level HTTP client and server; an Alternating Bit Protocol for error checking and a distance-vector routing protocol among other things. For a detailed description of each assignment, as well as my own code solutions please visit my GitHub Repository. I have completed this course in term A of my Sophomore year.
-
This course introduced students to the structure and behavior of modern digital computers and the way they execute programs. Machine organization topics include the Von Neumann model of execution, functional organization of computer hardware, the memory hierarchy, caching performance, and pipelining. Assembly language topics include representations of numbers in computers, basic instruction sets, addressing modes, stacks and procedures, low-level I/O, and the functions of compilers, assemblers, linkers, and loaders. The course also presented how code and data structures of higher-level languages are mapped into the assembly language and machine representations of a modern processor. Programming projects were be carried out in the C language and the assembly language of a modern processor. There were a total of 3 Homework assignments for the class. For a detailed description of each assignment and my own code solutions please visit my GitHub Repository. I have completed this course in term B of my Sophomore year.
-
This course introduced the fundamental principles of software engineering. Modern software development techniques and life cycles were emphasized. Topics included requirements analysis and specification, analysis and design, architecture, implementation, testing and quality, configuration management, and project management. Students were expected to complete a project that employs techniques from the topics studied. The course included a smaller 2 week Individual Project, and a larger 5 Week Team Project. To see the full description of the Group Project please visit the Projects page. For the actual code (and original description) of both the Individual and Group Project, please visit my GitHub Repository. I have completed this course in term B of my Sophomore year.
-
This course introduced the student to the design, use, and application of database management systems. Topics included the relational data model, relational query languages, design theory, and conceptual data design and modeling for relational database design. Techniques that provide for data independence, and minimal redundancy were discussed. Students were expected to design and implement database system applications, as well as perform SQL queries on them. The course included 6 Homework assignments and a small Group Project. For a detailed description, and my own solutions to the Homework and Group Assignments please visit my GitHub repository. I have completed this course in term C of my Sophomore year.
-
This course provided the student with an understanding of the basic components of a general-purpose operating system. Topics included processes, process management, synchronization, input/output devices and their programming, interrupts, memory management, resource allocation, and an introduction to file systems. Students were expected to design and implement a large piece of system software in the C programming language. The course included 4 Homeworks in which the student developed solutions to challenging synchronization and concurrency problems using mutexes and semaphores, developed own memory (malloc) allocation method using system calls and developed own scheduling policies for process execution. To see a more detailed description of each Homework assignment as well as my own code solutions, please visit my GitHub Repository. I have completed this course in term C of my Sophomore year.
-
This course extended the study of the design and implementation of operating systems begun in the operating systems course to distributed and advanced computer systems. Topics included principles and theories of resource allocation, file systems, protection schemes, and performance evaluation as they relate to distributed and advanced computer systems. Students were expected to design and implement programs that emphasize the concepts of file systems and distributed computing systems using current tools and languages. The course included 3 Homework assignments, in which students were asked to implement their own file system in C, as well as the MapReduce library in Go. For a full description of the Homework assignments, as well as my own code solutions, please visit my GitHub Repository. I have completed this course in term D of my Sophomore year.
-
This course explored the computational aspects of network information systems as embodied by the World Wide Web (WWW). Topics included: languages for document design, programming languages for executable content, scripting languages, design of WWW based human/computer interfaces, client/server network architecture models, high level network protocols (e.g., http), WWW network resource discovery and network security issues. The course included 4 Individual Projects, of which most notable was Project “a3” which included authentication and persistent storage using MongoDB. The course also included a single Group Project on the level of Project “a3” however, with significantly less time. For a full description and code solutions to each project please visit my GitHub repository. For an overview of the Group Project, please visit the Projects page. I have completed this course in term A of my Junior year.
-
This course explored both theoretical and practical aspects of machine learning, including algorithms for regression, classification, dimensionality reduction, clustering, and density estimation. Specific topics included neural networks and deep learning, Bayesian networks and probabilistic graphical models, principal component analysis, k-means clustering, decision trees and random forests, support vector machines, and kernel methods. The course included 6 Homework and 1 Group Project assignment in which the student used different machine learning techniques on a variety of real and simulated data sets. To see a more detailed description of each Homework assignment as well as my own code solutions, please visit my GitHub Repository. I have completed this course in term B of my Junior year.
-
This course introduced students with fundamental concepts and state-of-the-art computer science literature in mobile and ubiquitous computing. Topics which were covered include mobile systems issues, human activity and emotion sensing, location sensing, mobile human-computer interaction, mobile social networking, mobile health, power saving techniques, energy and mobile performance measurement studies and mobile security. The course will introduce the programming of mobile devices such as smartphones running the Android operating system. As part of the final project for the course, I have designed a user-friendly prototype of the “WiFi Device X-ray Finder” personal project I worked on a year before. I completed this course in the Spring Semester of my Junior year (2023).
-
This course gave a broad survey of artificial intelligence. The course covered different graph search algorithms including breadth and depth-first search, iterative-deepening and A* search. Optimization techniques such as genetic algorithms, hill climbing with simulated annealing, feature manufacturing and heuristic generation using machine learning were discussed. Grid worlds and Markov decision processes were introduced. Reinforcement learning paradigms such as SARSA and Q-learning were developed . Finally, I created an AI for playing my “Sedmica” card game, which you can read about under the Projects module. All programming was done in Python3.0 and in groups of 3 to 5 team members. I have completed this course in the Spring Semester of my Junior Year (2022).
-
This course explored the current state of brain sensing and its application to human-computer interaction research. Topics on brain function, sensing technology, machine learning methods, and applications of brain-computer interfaces in various domains were covered. The course included reading as well as weekly presentations on the latest scientific literature covering BCI and HCI. Brain activity sensing technology was discussed with a focus on functional near-infrared spectroscopy (fNIRS). Steps required to use real-time brain sensing data as input to an interactive system were introduced. The domains and contexts in which brain-computer interfaces may be effective were discussed. For the final project I attempted to recreate the results of the Brain2Image paper, where researchers were able to use deep learning to reconstruct visual stimuli from brain data. I completed this course in the Spring Semester of my Junior year (2022).
-
Studied the process and tools for implementing a compiler for a recursive programming language. Topics included lexical analysis, syntax analysis, symbol tables, semantic analysis, intermediate code representations and code generation. Tools used include ANTLR4 for front-end, C++ and LLVM for back-end. As a final project for the course, I implemented a new recursive programming language from scratch called “WPL” or “WPI Programming Language”.
-
Created various exploits such as a TLS leaked certificate exploit, DNS Flooding for cookie-hijacking, and covert communication via TCP ports. Secured against the attacks by performing manual certificate revocation checking, employing DNSSec, and developing a custom NAT implementation with data entropy analysis to as part of the IDS for each attack respectively. Development was done on a virtual machine via CLI using tcpdump, Wireshark, Python and the scapy library. I completed this course in December of 2022.
-
Graduate-level course focused on design, analysis and proof of correctness of algorithms. Learned analysis techniques such as asymptotic worst case and average case, as well as amortized analysis. Discussed techniques for proving lower bounds on complexity, along with NP-completeness. I completed this course in December of 2022.
-
Learned in-depth about cryptography schemes such as DES, AES, RSA, ElGamal, elliptic-curve systems, cryptographic signature algorithms, hash functions, key distribution and identification schemes as well as advanced mathematical algorithms for attacking cryptographic schemes. Explored in depth about the WPA protocol used in WiFi communication and its weaknesses throughout its different versions. I completed this course in December of 2022.
-
Implemented own back-propagation and stochastic gradient descent algorithms on MLPs. Used CNNs for image recognition and classification; learned about LSTMs and Transformers for time series analysis, NLP and Machine Translation; auto-encoders for data compression; and generative networks for creation of artificial data. Incorporated optimization and regularization techniques such as dropout, pooling, and batch normalization. Used Python with Tensorflow and Pytorch packages for developing the models. I completed this course in May of 2023.
-
Performed various exploits of application binaries such as stack overflow exploits, code injections, format string vulnerability exploits, heap exploits, etc. in order to hijack the control flow and solve different CTF style challenges. Used Python with pwntools, gdb with gef and the bash shell to create and run the exploits. I completed this course in May of 2023.
Other Completed Courses
- Introduction to Program Design (CS 1101)
- Discrete Mathematics (CS 2022)
- Social Implications of Information Processing (CS 304#)
- Foundations of Computer Science (CS 3133)
- Introduction to Engineering Problems (ES 1020)
- Introduction to Static Systems (ES 2501)
- Intermediate Mechanics (PH 2201)
- Calculus IV (MA 1024)
- Ordinary Differential Equations (MA 2051)
- Matrices and Linear Algebra I (MA 2071)
- Applied Statistics (MA 2611)
- Probability for Applications (MA 2621)
- Elementary German I (GN 1511)
- Elementary German II (GN 1512)
- Intermediate German I (GN 2511)
- Intermediate German II (GN 2512)
- Advanced German I (GN 3511)
- Advanced German II (GN 3512)
- Introductory Macroeconomics (ECON 1120)