I am a computer science sophomore at Carnegie Mellon currently looking for a research
position or internship. I am also interested in discrete mathematics and
am pursuing a double major in that field. I have strong practical programming
skills as well as a solid theoretical background that will enable me to
excel in any position I'm placed in.
Please see my resume and courses taken below.
Projects
- Conductor's
Beat Programmable Metronome. Traditional metronomes
only work in songs with one tempo and one time signature. My high school's
marching band frequently had to play challenging music where this was not
the case. As section leader, I needed a way to teach others. So, I wrote
Conductor's Beat. Conductor's Beat is a graphical, programmable metronome
capable of complex meters and tempo changes. It also supports accelerandos
and ritardandos (gradual changes in tempo). Users can input the meter
changes for any song via a simple graphical interface or a specially
formatted text file and have the program generate a click track for the
music. It is released under the GPL
with over 450 downloads on SourceForge. Written in C++ with the Qt
library with over 1100 lines of code.
- Jeopardy!®
Simulator. Multiplayer Jeopardy!® game. Players write
their names, answer categorized trivia questions, score points, and wager on
daily doubles, just like the real show. The program collects questions from J-Archive, a database of
previous Jeopardy!® questions and answers. These questions are parsed
and stored in
an SQLite database, allowing different sets of questions to be swapped in
and out with ease. Written in C++.
- Sudoku Solver.
Final project for AP Computer Science AB. A playable Sudoku game with heuristic solver.
The implementation allowed for extremely fast deduction and inference algorithms through bitwise operations.
By modeling the human thought process for solving Sudoku puzzles, the program is able to solve challenging puzzles
without guessing or brute-forcing. Written in Java.
- Learning in Tic Tac
Toe. High School science fair project. 2nd place overall.
Java Tic-Tac-Toe applet had the AI make random moves at first.
As the human beat it, the AI learned strategies and, after enough
training, could consistently pass a Turing Test.
- Matrix Library.
Simple matrix library to test local high schoolers' understanding of Linear Algebra
concepts. Unfortunately, the course was not offered again and the
library was never effectively used. However, it is a fairly
robust library which can handle basic concepts up to
eigenvectors. Written in C++.
Computer Science Courses
- 15-359: Probability in Computing (Spring 2012)
This course gives an introduction to probability as it is used in computer science theory and practice, drawing on applications and current research developments as motivation and context. Topics include combinatorial probability and random graphs, heavy tail distributions, concentration inequalities, various randomized algorithms, sampling random variables and computer simulation, and Markov chains and their many applications, from Web search engines to models of network protocols.
- 15-213: Introduction to Computer Systems (Spring 2012)
This course provides a programmer's view of how computer systems execute programs, store information, and communicate. It enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for courses on compilers, networks, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation.
- 15-251: Great Theoretical Ideas in Computer Science. Grade:
A
Professor Luis von Ahn.
Widely considered to be one of the hardest computer science courses at
CMU.
This course is about how to use theoretical ideas to formulate and
solve problems in computer science. It integrates mathematical material
with general problem solving techniques and computer science
applications. Examples are drawn from Algorithms, Complexity Theory,
Game Theory, Probability Theory, Graph Theory, Automata Theory, Algebra,
Cryptography, and Combinatorics.
- 15-210: Parallel and Sequential Data Structures
and Algorithms. Grade: A
Professor Guy Blelloch. Teaches students about how to design,
analyze, and program algorithms and data structures.
The course emphasizes parallel algorithms and analysis,
and how sequential algorithms can be considered a special case.
The course goes into more theoretical content on algorithm analysis than previous courses
while still including a significant programming component and covering
a variety of practical applications such as problems in data
analysis, graphics, text processing, and the computational sciences.
- 15-150: Principles of Functional Programming. Grade: A
Professor Bob Harper. An introduction to programming based on a "functional" model of computation.
The functional model is a natural generalization of algebra in which programs
are formulas that describe the output of a computation in terms of its
inputs—that is, as a function. But instead of being confined to real-
or complex-valued functions, the functional model extends the algebraic view to a
very rich class of data types, including not only aggregates built up from
other types, but also functions themselves as values. This course is an
introduction to programming that is focused on the central concepts of
function and type.
- 15-122: Principles of Imperative
Computation. Grade: A
Professor Frank Pfenning. Teaches imperative programming and methods for ensuring the correctness of
programs. Covers the process and concepts needed to go from
high-level descriptions of algorithms to correct imperative implementations,
with specific application to basic data structures and algorithms.
Math Courses
- 21-700: Mathematical Locic II (graduate level) (Spring 2012)
Higher-order logic (type theory). Syntax, Lambda-notation, Axioms of Description and Choice, computer-assisted formal proofs, semantics, soundness, standard and non-standard models, completeness, compactness, formalization of mathematics, definability of natural numbers, representability of recursive functions, Church's Thesis. Godel's Incompleteness Theorems, undecidability, undefinability.
- 21-484: Graph Theory (Spring 2012)
Topics include graphs and subgraphs, trees, connectivity, Euler tours and Hamilton cycles, matchings, graph colorings, planar graphs and Euler's Formula, directed graphs, network flows, counting arguments, and graph algorithms.
- 21-373: Algebraic Structures (Spring 2012)
Groups: Homomorphisms. Subgroups, cosets, Lagrange's theorem. Conjugation. Normal subgroups, quotient groups, first isomorphism theorem. Group actions, Cauchy's Theorem. Dihedral and alternating groups. The second and third isomorphism theorems. Rings: Subrings, ideals, quotient rings, first isomorphism theorem. Polynomial rings. Prime and maximal ideals, prime and irreducible elements. PIDs and UFDs. Noetherian domains. Gauss' lemma. Eisenstein criterion. Fields: Field of fractions of an integral domain. Finite fields. Applications to coding theory, cryptography, number theory.
- 21-600: Mathematical Logic I (graduate level). Grade: A
Professor Peter Andrews.
The study of formal logical systems, which model the reasoning of
mathematics, scientific disciplines, and everyday discourse.
Propositional Calculus and First-order Logic. Syntax, axiomatic
treatment, derived rules of inference, proof techniques,
computer-assisted formal proofs, normal forms, consistency,
independence, semantics, soundness, completeness, Lowenheim-Skolem
Theorem, compactness, equality.
- 21-301: Combinatorics. Grade: A
Professor Tom Bohman. A major part of the course concentrates on
algebraic methods, which are relevant in the study of error correcting
codes, and other areas. Topics covered in depth include permutations and
combinations, generating functions, recurrence relations, the principle
of inclusion and exclusion, and the Fibonacci sequence and the harmonic
series. Additional topics may include existence proofs, partitions,
finite calculus, generating combinatorial objects, Polya theory, codes,
probabilistic methods.
- 21-341: Linear Algebra. Grade: A
Professor Gautam Iyer. A mathematically rigorous introduction to Linear
Algebra.
Topics studied include abstract vector spaces, linear transformations,
eigenvalues, eigenvectors, inner products, invariant subspaces, spectral
theorem, singular value decomposition and determinants.
- 21-259: Calculus in Three Dimensions. Grade: A.
Professor Tim Flaherty. Vectors,
lines, planes, quadratic surfaces, polar, cylindrical and spherical
coordinates, partial derivatives, directional derivatives, gradient,
divergence, curl, chain rule, maximum-minimum problems, multiple
integrals, parametric surfaces and curves, line integrals, surface
integrals, Green-Gauss theorems.
- 21-127: Concepts of Mathematics. Grade: B
Professor Daniela Mihai. This course introduces the basic concepts, ideas and tools involved
in doing mathematics. As such, its main focus is on presenting
informal logic, and the methods of mathematical proof.
Topics discussed include
a basic introduction to elementary number theory, induction, the
algebra of sets, relations, equivalence relations, congruences,
partitions, and functions, including injections, surjections, and
bijections.
Other Relevant Courses
- 85-211: Cognitive Psychology. Grade: A
Professor David Reitter.
This course considers perception, language, attention, learning,
memory, reasoning, and decision making.
- 15-221: Technical Communication for Computer Scientists
Professor Tom Keating. The course is designed for sophomore computer
science majors to improve their abilities in practical, professional
communications (both written and oral). It aims to help students compose
clear, concise technical writings and oral presentations for
multi-level audiences. Assignments include technical definitions,
descriptions, instructions, process explanations, abstracts, memos, and
research reports. Assignments may incorporate recent computer science
research at Carnegie Mellon, projects in related technical courses, and
professional case studies.
Course descriptions taken from the
CMU Course Catalog.