I am a Master Computer Science student at NC State University. I have completed my bachelor's degree in Computer Science from Iowa State University.
I am fascinated with Software Development, Data Structures, Algorithms, Big Data, Databases, Data Analysis and Data Mining. I'm a quick learner, adaptable and willing to learn any new technology!
DrCCTProf is a fine-grained call path profiling framework for binaries running on ARM and X86 architectures.
Converted the HPCToolKit and TAU to DrCCTProf using Hatchet (Python-based library).
See the project here
Fun Projects
Slapjack Card Game
Education
North Carolina State University
Master's degree / Computer Science / August 2021 – May 2023
CSC 505 - Design and Analysis of Algorithms
Algorithm design techniques: use of data structures, divide and conquer, dynamic programming, greedy techniques, local and global search. Complexity and analysis of algorithms: asymptotic analysis, worst case and average case, recurrences, lower bounds, NP-completeness. Algorithms for classical problems including sorting, searching and graph problems (connectivity, shortest paths, minimum spanning trees).
CSC 510 - Software Engineering
An introduction to software life cycle models; size estimation; cost and schedule estimation; project management; risk management; formal technical reviews; analysis, design, coding and testing methods; configuration management and change control; and software reliability estimation. Emphasis on large development projects. An individual project required following good software engineering practices throughout the semester.
CSC 512 - Compiler Construction
The course will concentrate on the theory and practice of compiler-writing. Topics to be covered will include techniques for parsing, code generation, and optimization. Furthermore, the theoretical underpinnings of compilers such as LR parsing will be covered. Exposed to compiler construction tools, and obtained hands-on experience in building a compiler for a small programming language.
CSC 514 - Foundations of Cryptography
Cryptography is the study of mathematical techniques for securing digital information, systems and distributed computation against adversarial attacks. In this class you will learn the concepts and the algorithms behind the most used cryptographic protocols: Learned how to formally define security properties and how to formally prove/disprove that a cryptographic protocol achieves a certain security property. Discovered that cryptography has a much broader range of applications. It solves absolutely paradoxical problems such as proving knowledge of a secret without ever revealing the secret (zero-knowledge proof), or computing the output of a function without ever knowing the input of the function (secure computation).
CSC 522 - Automated Learning and Data Analysis
This course provides an introduction to concepts and methods for extracting knowledge or other useful forms of information from data. This activity, also known under names including data mining, knowledge discovery, and exploratory data analysis, plays an important role in modern science, engineering, medicine, business, and government. Students will apply supervised and unsupervised automated learning methods to extract patterns, make predictions and identify groups from data. Students will also learn about the overall process of data collection and analysis that provides the setting for knowledge discovery, and concomitant issues of privacy and security.
CSC 533 - Privacy in the Digital Age
Privacy is a growing concern in our modern society. We interact and share our personal information with a wide variety of organizations, including financial and healthcare institutions, web service providers and social networks. Many times such personal information is inappropriately collected, used or shared, often without our awareness. This course introduces privacy in a broad sense, with the aim of providing students an overview of the challenging and emerging research topics in privacy.
CSC 540 - Database Management Concepts and Systems
Completed a JDBC project and implemented SimpleDB with LRM. Advanced database concepts. Logical organization of databases: the entity-relationship model; the relational data model and its languages. Functional dependencies and normal forms. Design, implementation, and optimization of query languages; security and integrity, consurrency control, transaction processing, and distributed database systems.
CSC 554 - Human-Computer Interaction
Basic theory and concepts of human-computer interaction. Human and computational aspects. Cognitive engineering. Practical HCI skills. Significant historical case studies. Current technology and future directions in user interface development.
CSC 570 - Computer Networks
General introduction to computer networks. Discussion of protocol principles, local area and wide area networking, OSI stack, TCP/IP and quality of service principles. Detailed discussion of topics in medium access control, error control coding, and flow control mechanisms. Introduction to networking simulation, security, wireless and optical networking.
CSC 574 - Computer and Network Security
This course presents foundational concepts of computer and network security and privacy. It covers a wide breadth of concepts, including; Fundamentals of computer security and privacy, including security models, policies, and mechanisms; Cryptography for secure systems, including symmetric and asymmetric ciphers, hash functions, and integrity mechanisms; Authentication of users and computers; Network attacks and defenses at the network and application layers; Common software vulnerabilities and mitigation strategies; Secure operating systems and seminal access control models and policies; Principles of intrusion detection; Privacy, including considerations of end-user technologies.
Iowa State University
Bachelor's degree / Computer Science / August 2016 – May 2021
CS 227 - Object-Oriented Programming
Computer programming using objects as the mechanism for modularity, abstraction, and code reuse. Instance variables, methods, and encapsulation. Review of control structures for conditionals and iteration. Developing algorithms on strings, arrays, and lists. Recursion, searching, and sorting. Text parsing and file I/O. Interfaces, inheritance, polymorphism, and abstract classes. Exception handling. Tools for unit testing and debugging. Emphasis on a disciplined approach to specification, code development, and testing.
CS 228 - Data Structures
An object-oriented approach to data structures and algorithms. Object-oriented analysis, design, and programming, with emphasis on data abstraction, inheritance and subtype polymorphism, and generics. Abstract data type specification and correctness. Collections including lists, stacks, queues, trees, heaps, maps, hash tables, and graphs. Big-O notation and algorithm analysis. Searching and sorting. Graph search and shortest path algorithms. Emphasis on object-oriented design, writing and documenting medium-sized programs.
CS 311 - Design and Analysis of Algorithms
Basic techniques for design and analysis of algorithms. Sorting, searching, graph algorithms, string matching, and NP-completeness. Design techniques such as dynamic programming, divide and conquer, greedy method, and approximation. Asymptotic, worst-case, average-case and amortized analyses. Topics from advanced data structures such as balanced trees and hashing.
CS 342 - Principles of Programming Languages
Study of concepts in programming languages, especially functional programming concepts. Overview of major programming paradigms, their relationship, and tradeoffs among paradigms enabling sound choices of programming language for application-specific development. Programming projects.
CS 352 - Operating Systems
Survey of operating system, networking and parallel programming issues. Introduction of processes, threads, process synchronization, deadlocks, memory, file systems, networking, security threats and encryption. Programming projects.
CS 409 - Software Requirements Engineering
The requirements engineering process including elicitation, requirements analysis fundamentals, requirements specification and communication, and requirements evaluation. Modeling of functional and nonfunctional requirements, traceability, and requirements change management.
CS 412 - Formal Methods in Software Engineering
A study of formal techniques for model-based specification and verification of software systems. Topics include logics, formalisms, graph theory, numerical computations, algorithms, and tools for automatic analysis of systems.