Coursework
Robot Learning
Grad level course. Studies modern machine learning and AI algorithms for autonomous robots as an embodied intelligent agent. It covers advanced topics that center around the principles and techniques on 1) how robots perceive the unstructured environments from raw sensory data, 2) how robots make decisions based upon its perception, and 3) how robots learn and adapt actively and continually in the physical world. Includes analysis of state-of-the-art research, presentations, and final project that leverages robomimic and OpenAI's MuJoCo project.
Neural Networks
This course covers both the theory and practice of deep learning, using hands-on implementations in PyTorch. Covered common applications in deep learning including computer vision, sequence modeling, deep reinforcement learning, and generative modeling. In practice, we develop a vision system for a racing simulator, SuperTuxKart. This is inspired by applications and experimentation on DAgger, a recent research breakthrough on iterative policy training algorithms via a reduction to online learning.
Artificial Intelligence (S&E)
Known as "Safe and Ethical" Artificial Intelligence. Course that takes rigorous approach to understanding issues with AI/ML algorithms through 3 components: 1) programming assignments that explore fairness, security, privacy issues in Machine Learning using real-world generated datasets. 2) Mathematical exercises on topics such as fair learning and differential policy. 3) Reading and discussion that connects the technical topics to broader debates about the role of AI in society and how to carefully craft robust systems.
Algorithms and Complexity
Course that encompasses a range of algorithmic techniques and optimal approaches to them. Includes: analysis of the history of algorithms, graph algorithms, greedy algorithms, divide-and-conquer, dynamic programming, network flow, NP-completeness, undecidability, polynomial-time reduction, approximation algorithms and randomized algorithms.
Principles of Machine Learning
In this course, we learn machine learning algorithms to find patterns in large input sets. Covers supervised, unsupervised, and reinforcement learning. We learn and apply regression, classification, clustering, anomaly detection, and association analysis. Learning is achieved through hand-written algorithms and Python (sklearn, pandas, numpy) & Jupyter. Work includes building Decision Tree classifiers, exploring sklearn, manipulating and analyzing data, creating neural networks and other classifiers, and a final project to explore an area of interest with ML.
Data Structures
In this course, we learned how to use and implement canonical data structures such as lists, iterators, stacks, queues, priority queues, trees, binary search trees, balanced binary search trees, sets, maps, hash tables, heaps, tries, and graphs. Includes testing, pre/post conditions, assertions, debugging, abstraction of data, basic algorithm analysis, recursion, canonical sorting and searching algorithms, an introduction to the object oriented concepts of encapsulation, inheritance, and polymorphism, dynamic programming, and functional programming.
Computer Architecture
Learned computer systems from a programmer's perspective, at a fairly low level of abstraction. Learned to program in C by creating complex: memory manager, command interpreter and a Y86-64 System Emulator. Learned to represent and manipulate data (doing basic operations on binary encodings, primitive data types, points, data structures, floating-points, etc. Deep dove into the x86-64 instruction set architecture (ISA), processor architectures, pipelines and implementations.
Operating Systems
In this course, we learn the intricacies of an operating system. This includes how the OS manages the resources of a computer to better the user experience. Core ideas include virtual addressing, memory protection, concurrent programming, file systems, and scheduling. Project is to build out components of an instructional operating system by Stanford CS, known as PintOS. Implemented priority scheduling, argument passing on the stack, system calls for user programs, added virtual memory, and converted existing file thread system into multi-threaded.
Sequential/Series/Multivariate Calculus
Learned data analysis and statistical methods. Subjects include random sampling; principles of observational study and experimental design; data summaries and graphics; and statistical models and inference, including the simple linear regression model and one-way analysis of variance.
Differential and Integral Calculus
UT’s standard calculus course. It is directed at students in the natural and social sciences and at engineering students. Includes theory of real‐valued functions of a real variable: limits, continuity, derivatives, maxima and minima, integration, area under a curve, volumes of revolution, trigonometric, logarithmic and exponential functions and techniques of integration. Course revolves around "Calculus Early Transcendentals, 8th edition" by Stewart Belmont.
Fundamentals of Theoretical Probability and Statistics
Learned about the fundamentals of probability theory, including discrete and continuous random variables, multiple random variables, and limit theorums. Topics include but are not limited to: probabilities of events, covariance and correlation, central limit theorem, maximum estimation, bayesian hypotheses, hypothesis testing, MLE and confidence intervals, conditional expectations, and MAP estimation.