Connect with me


Classes I've taken

Intro to Computer Science &
Object Oriented Programming: Java

      An accelerated introduction to computer science and programming using the Java language and basic UNIX. Topics include: documentation, testing and verification techniques, inheritance and dynamic binding, modularity and abstraction, and experience with the AWT library.

Click for Assignments

Basic Data Structures &
Object Oriented Design

      Use and implementation of basic data structures including linked lists, stacks and queues, as well as advanced data structures such as self-balancing binary trees and has tables. Object-oriented design including interfaces, polymorphism, encapsulation, abstract data types pre-post-conditions.

Click for Assignments

Discrete Mathematics & Algorithms

      Basic discrete mathematical structures: sets, relations, functions, sequences equivalence relations, partial orders, and number systems. Methods of reasoning and proofs: prepositional logic predicate logic, induction, recursion, and pigeonhole principle. Infinite sets and diagonalization. Basic counting techniques; permutation and combinations. Applications will be given to digital logic design, elementary number theory, design of programs, and proofs of program correctness.

Click for Assignments

Computer Organization &
Systems Programming

      Introduction to organization of modern digital computers—understanding the various components of a computer and their interrelationships. Study of a specific architecture/machine with emphasis on systems programming in C and Assembly languages in a UNIX environment.

Click for Assignments

Advanced Data Structures

      High-performance data structures and supporting algorithms. Use and implementation of data structures like balanced/unbalanced trees, graphs, priority queues, and hash tables. Also memory management, pointers, recursion. Theoretical and practical performance analysis, both average case and amortized. Uses C++ and STL.

Click for Assignments

Components and Design Techniques for Digital Systems

      Design of Boolean logic and finite state machines; two-level, multilevel combinational logic design, combinational modules and modular networks, Mealy and Moore machines, analysis and synthesis of canonical forms, sequential modules.

Click for Assignments

Digital Systems Laboratory

      Implementation with computer-aided design tools for combinational logic minimization and state machine synthesis. Hardware construction of a small digital system.

Click for Assignments

Software Engineering
Group Project

      Introduction to software development and engineering methods, including specification, design, implementation, testing, and process. An emphasis on team development, agile methods, and use of tools such as IDE’s, version control, and test harnesses.

Click for Assignments

Computer Architecture

      Hands-on computer architecture project aiming to familiarize students with instruction set architecture, and design of process. Control and memory systems are also discussed.

Click for Assignments

Principles of Computer Operating Systems

      Basic functions of operating systems; basic kernel structure, concurrency, memory management, virtual memory, file systems, process scheduling, security, and protection.

Click for Assignments

Introduction to Artificial Intelligence: Search and Reasoning

      An Introduction to the probabilistic and statistical models at the heart of modern artificial intelligence. Topic include: probabilistic methods for reasoning and decision-making under uncertainty; inference and learning in Bayesian networks; prediction and planning in Markov decision processes; applications to intelligent systems, speech and natural language processing, information retrieval, and robotics.

Click for Assignments

Statistical Natural Language Processing

      This course explores statistical techniques for the automatic analysis of natural language data. Specific topics covered include probabilistic language models, which define probability distributions over text passages; text classification; sequence models; parsing sentences into syntactic representations; and machine translation.

Click for Assignments

Projects I'm Working On

Android

      Using the Android SDK, I've created multiple application ranging from tic-tac-toe to tracking your location.

Click for Projects

Arduino

      Using a combination of C/C++ programming, an Arduino microcontroller, and other hardware components, I've created multiple tools such as an led clock, a security alarm, and a wi-fi controlled light.

Click for Projects

Grand PrIEEE

      Worked in a team of 5 to design, test, and implement a RC car that can detect an arbitrary track and race autonomously, given a $500 budget.

Click to Learn More

Web Scraping

      Using a combination of different programming languages, I have learned how to scrape useful data from any website and display it in an orderly manner.

Click for Projects

Software Engineering
Group Project

      Introduction to software development and engineering methods, including specification, design, implementation, testing, and process. An emphasis on team development, agile methods, and use of tools such as IDE’s, version control, and test harnesses.

Click to Learn More

Micromouse

      Worked in a team of 5 to design, test, and implement a robotic mouse that can autonomously map out and complete a maze as fast as possible.

Click to Learn More

Work Experience

Buck Institute for Research on Aging

      Worked as a software engineering intern. I streamlined their data conversion process, which involved taking data from a mass spectrometer in the form of a .wiff file and running it through multiple programs until it outputted readable data.

Click to Learn More

Fidelity National Information Services Inc.

      Worked as a Android developer intern. I utilized Java and self-taught knowledge of Android programming to help the Customer Integration team add new features to a custom mobile banking application. Features include: password reset, highlighting primary account, and a spendable balance calculator.

Click to Learn More

Nortek Security & Control

      Worked as a software engineering intern. I added a caching layer to a microservice to reduce the number of requests it makes to an external API. I utilized Dockers and Kubernetes to deploy, build, and run multiple dockerized applications with automatic service discovery and load balancing. I implemented ELK Stack to collect, filter, and visualize application logs generated by different services across many AWS EC2 instances.

Click to Learn More