Lectures

Here I’ve collected slides and papers/notes I’ve used for various presentations, talks, lectures and tutorials throughout high school and beyond.

Quantum Computing
Wednesday, March 21, 2018 for Mathematical Physics Class

Quantum algorithms are one of the most important areas in computer science, in that if and when large-scale quantum computers are developed, they will have massive impacts on the lives of almost every person on Earth. This paper is a tutorial in the basics of quantum computation, examining Grover’s algorithm for database searching and Shor’s algorithm for efficient integer factorization.

Paper/Notes
Post-Gödel Logic and Unanswered Questions
Wednesday, January 24, 2018 for Mathematical Logic Class

Since our instructor was out on paternity leave, I had the privilege of preparing and delivering the final lecture for the 2017-18 Mathematical Logic class at Blair. The topic was beginning to examine the state that math was left in after Gödel’s Incompleteness Theorems and other early 20th-century developments in set theory and logic, as well as the personal fates of Hilbert, Russell, Turing, and Gödel himself.

Slides
Formal Language Theory and Automata
Thursday, January 04, 2018 for MBHS Computer Team

This is a guided activity, which is a combination of lecture paper and exercises that I helped Computer Team members work through to introduce them to the fundamentals of the theory of computation: decision problems, languages, and automata.

Paper/Notes
Computer Systems VI: Compilers
Thursday, December 07, 2017 for MBHS Computer Team

Compilers are the backbone of modern software, enabling programmers to write efficient code at a highly-manageable level. This lecture is a introduction to what compilers are and how they work.

Slides
Ordinals
Wednesday, December 06, 2017 for Mathematical Logic Class

Informally, ordinals are extensions of the natural numbers to and beyond countable infinity. Formally, they are canonical representations of equivalence classes of well-ordered sets, with deep implications for axiomatic set theory. Here, with Dilhan Salgado, as one of Logic’s student presentations, I examined the intuition behind ordinals and what makes them so vitally important in mathematical logic.

Slides
Computer Systems V: Networking
Thursday, November 30, 2017 for MBHS Computer Team

The Internet, and computer networks in general, are ubiquituous in our everyday lives. In this lecture, we explore the fundamentals of computer networks and how they are structured, common Internet protocols, and how the World Wide Web works.

Slides
FASTA and FLOW: Adaptive and Accelerated Convex Optimization with a Sequential Paradigm for Iterative Numerical Algorithms
Wednesday, November 15, 2017 for Senior Research Project

Every important problem in mathematics, computer science, engineering, and the pure and applied science can be formulated in some way as an optimization problem. I developed a readable, user-friendly Python implementation of Goldstein’s FASTA algorithm for optimization of nonsmooth convex objectives.

Slides Paper/Notes
Computer Systems IV: Computer Engineering
Thursday, October 12, 2017 for MBHS Computer Team

The central processing unit, or CPU, is by far the most important component of the computer. CPUs simply sequentially execute a sequence of steps called instructions. However, the interface between the CPU and other components of the computer, such as memory and peripherals, as well as a drive to make CPUs faster, more efficient, and more parallel have driven a recent proliferation in advanced CPU optimizations.

Slides
Computer Systems III: Multitasking and Concurrency
Thursday, October 05, 2017 for MBHS Computer Team

Another key function of the kernel is to allow multiple user- and supervisor-level tasks to run in parallel, necessitating considerations and balances in terms of scheduling of tasks and concurrency between tasks.

Slides
Computer Systems II: Kernels and Memory Management
Friday, September 29, 2017 for MBHS Computer Team

The kernel is the most fundamental component of the operating system, the interface between software and hardware on a computer. Kernels, although of varying complexity and design, have several specific functions in common. One of the most important functions common to almost every kernel is memory management: the ability to control the layout and allocation of memory to user applications.

Slides
Computer Systems I: Introduction
Thursday, September 14, 2017 for MBHS Computer Team

Welcome to Computer Team! This year, I’ll be publishing all the lecture slides on my website. Computers are complex and multifaceted systems, and we begin by discussing the basic parts of the computer.

Slides