- Classwork
-
Below is an abbreviated enumeration of the courses I took as an
undergraduate student at the University of Maryland. Some of the
lower-level and required courses are ignored.
Upper-level courses are accompanied by a short description of the
topics covered, as well as examples of my completed classwork (when
applicable) and any other pertinent information.
University-sanctioned course descriptions can be found on Testudo, UMCP's online registration system.
- Computer Science
-
To study Computer Science is to study computers, computational
systems, and the theory, development, design, and applications of this
technology. Too broad? Check out this Wikipedia link for a list of more specific examples.
The University of Maryland's Computer Science department (homepage),
located in the A.V. Williams Building, is consistently ranked as one of
the top public and overall CS departments in the country. In terms of
undergraduate education, it teaches theory through computer
programming, as opposed to focusing solely on the programming aspects
of this field.
Regarding coursework for these classes -- since projects are often
reused from semester to semester with only slight modifications, I've
refrained from posting direct links. Do not hesitate to contact me if
you'd like to see some code!
- Graduate-level Courses
-
- Advanced Computer Graphics (740) -- Amitabh Varshney, Ph.D.
A graduate-level course on computer graphics. Programming was done with either OpenGL (for raster graphics) or plain C++ (for volume raycasting / raytracing / et cetera). Covered the normal graphics course material along with general purpose GPU computing, HDR and non-photorealistic rendering, and two of Dr. Varshney's specialities: salient visualization and level-of-detail for meshes. My final volume rendering project can be found on the projects page.
- Scientific Computing on GPUs (828E) -- Ramani Duraiswami, Ph.D.
An interesting mix of students took this course, hailing from physics, engineering, CS, and industry. The course itself focused on using GPUs for general purpose scientific computing. Programming assignments used C for CUDA on CUDA-capable Nvidia devices. My semester project on using GPUs to accelerate the analysis of certain aspects of black holes can be found on the projects page.
- Robot Motion Planning (828L) -- Vladimir Lumelsky, Ph.D.
Graduate course in algorithms (analysis, design) for robotic motion in
two and three dimensions. Mathematics behind inverse kinematics, path
sensing, integration. Ground-based robots, robotic arms (R and P) with
skin or proximity sensing. Small homework assignments (programming in
VB and C) as well as scholarly paper.
- Upper-level Courses
-
- Computer Systems Architecture (411) -- Michelle Hugue, Ph.D.
Follow-up
course to CMSC311. Looked in detail at pipelining, memory hierarchies,
addressing, parallelism - basically the nitty-gritty low-level workings
of a computer system. Projects were written in a combination of MIPS
and C.
- Computer Networks (417) -- Bobby Bhattacharjee, Ph.D.
Debatably
the most difficult course the department offers (tied with Operating
Systems), this took a very in-depth look at the OSI model. Evolution of
the Internet, protocols, analysis and testing of these protocols, and
encryption schemata. Most projects done in C (server, client, FTP, DNS,
reliable transport over UDP), final project (group, Bittorrent client)
done in Ruby with Tk GUI.
- Data Structures (420) -- Michelle Hugue, Ph.D.
"Description,
properties, and storage allocation of data structures including lists
and trees. Algorithms for manipulating structures. Applications from
areas such as data processing, information retrieval, symbol
manipulation, and operating systems." Focus on space requirements vs.
time (search, delete, insert, order) of data structures. Very large,
semester-long project written in Java 1.5 (B-Tree, PR -> PM1,2,3
Quadtree, K-d trees). Project meant to mirror Mapquest, thus the
geo-data structures like PM.
- Introduction to Artificial Intelligence (421) -- Lise Getoor, Ph.D.
A
primer in basic AI concepts, dealing with algorithms, knowledge
representation, learning, a bit of vision, robotics. Computational
complexity of most AI algorithms is a problem, so methods for dealing
with this were emphasized. Projects (Sudoku solver, constraint
propagaton, probabilistic reasoning) done in Common LISP.
- Computer Graphics (427) -- David Jacobs, Ph.D.
Introduction
to the mathematics behind computer graphics, as well as an overview of
the current implementations of different graphics APIs and hardware.
Transformations, projections, collisions, aliasing, texturing,
lighting, reflections, shadows, radiosity, and animation. Projects
written in C++ using GLUT, including a collision-based game, image warper, and basic ray tracer.
- Design and Analysis of Computer Algorithms (451) -- Bill Gasarch, Ph.D.
Follow-up course to CMSC351. "Fundamental techniques for designing
efficient computer algorithms, proving their correctness, and analyzing
their complexity. General topics include sorting, selection, graph
algorithms, and basic algorithm design paradigms (such as
divide-and-conquer, dynamic programming and greedy algorithms), lower
bounds and NP-completeness." Frequent homework assignments involving
analysis and design of algorithms. No programming.
- Theory of Computation (452) -- Clyde Kruskal, Ph.D.
Followed
computing theory from its roots to its current state. DFAs, NFAs, PDAs,
grammars, languages, Turing machines, and the like. Written homework
assignments, no programming.
- Computational Methods (460) -- Pete Stewart, Ph.D.
The
most obvious melding of CS and mathematical techniques. Computational
methods, algorithms, accuracy and runtime analysis of algorithms for
least squares, quadrature, polynomial fitting, PDEs and ODEs, solutions
to linear equations, and initial value problems. This course could not
decide if it wanted to be theory or applied, so we had many written
assignments to complement six MatLab programming projects.
- Graph Theory and Combinatorics (475) -- Jian-Guo Liu, Ph.D.
My
first 400-level course, this served to spark my interest in
mathematics. The course itself dealt with enumeration methods,
generating functions, difference equations, graph theory, graph
algorithms (network flows, searches, etc).
- Introduction to Rapid Prototyping Techniques (498D) -- François Guimbretiè,
Ph.D.
Applied course dealing with rapid prototyping of new ideas. Basic
electronics (microcontrollers, potentiometers, LEDs,
transistors/resistors, soldering, timers), use of a laser cutter, 3d
printer, and storyboarding techniques. Series of small weekly hardware
projects, as well as a semester-long hardware project involving
prototyping, user testing, and a scholarly paper. Programming done in
C, assembly, and VB. Many fingers burned by soldering iron.
- Game Programming (498M) -- Dave Mount, Ph.D.
Elective
course dealing with game programming and design. Graphics, modelling,
animation, physics, AI, networking, security, storytelling, the
development process - this course drew on elements from many other
classes, but presented them from a gaming industry perspective.
Semester-long (group) project built in C++ using OGRE, 3d Studio Max, Photoshop, Goldwave, and the techniques from class.
- Lower-level Courses
-
- Object-Oriented Programming II (132) -- Chau-Wen Tseng, Ph.D.
Second semester course in basic software development. Emphasis on
object-oriented methods and effective use of the Java API. Used Eclipse
IDE with Java 1.5.
- Introduction to Low-Level Programming Concepts (212) -- Jandelyn Plane, M.S.
Basic
C programming course. Memory management, I/O, basic networking,
Makefiles, along with basic concepts like the memory hierarchy,
operating systems, *nix skills.
Served as TA for this course in Fall '06.
- Discrete Structures (250) -- Evan Golub, Ph.D.
Basic proofs and analysis pertaining to Computer Science. "Fundamental
mathematical concepts related to computer science, including finite and
infinite sets, relations, functions, and propositional logic.
Introduction to other techniques, modeling and solving problems in
computer science. Introduction to permutations, combinations, graphs,
and trees with selected applications."
- Computer Organization (311) -- Michelle Hugue, Ph.D.
Low-level
course focusing on computer architecture, operating systems, compilers,
networking, caching, and addressing. Shares projects with Carnegie
Mellon's CS213 course. IA-32 and C programming.
Served as TA for this course in Fall '07, Spring '08.
- Organization of Programming Languages (330) -- Larry Herman, M.S.
Semantics of programming languages. Study of procedural, rule-based,
functional, and object-oriented languages. Scoping, inheritence,
memory, run-time organizations compared. Projects in Ruby, OCaml, and
Java.
Served as TA for this course in Spring '07.
- Algorithms (351) -- Evan Golub, Ph.D.
Rigorous study of algorithms, recurrence relations, and other common
mathematical concepts found in CS world. Algorithms include sorting,
graphs/trees, combinatorics, searching, deletion, et cetera.
- Mathematics
-
The romantic in me will remind the reader that the word
"mathematics" is derived from the Greek word for "learning" and "study"
-- what better way to receive a well-rounded education than to devote
precious days of my life to the study of studying, to learning about
learning?
More realistically, mathematics plays a staggeringly large role in the development of any science -- Computer
Science especially. As I progressed into the higher-level courses of my
undergraduate CS career, this truth became more and more evident. This,
combined with the general applicability of mathematics to life,
convinced me to grab a second degree in Mathematics.
The Department of Mathematics at the University of Maryland (homepage)
is nationally recognized and honored, claiming such faculty members as
Michael Brin -- the father of Sergey Brin (also a UMD graduate!), the
founder of Google
-- and James Yorke -- who coined the term "chaos." Regarding
undergraduate education, it offers myriad theoretical and applied
courses, both of which are very applicable to the world of computing.
- Lower-level Courses
-
- Multivariable Calculus (280) -- Mussa Abdulkadir, Ph.D.
Vectors, vector mathematics, curves, surfaces, partial derivatives,
Lagrange multipliers, change of coordinates, double/triple integrals,
change of variables, vector fields, Green's Theorem, Stoke's Theorem,
Divergence Theorem.
Taken at Montgomery College in Rockville, MD during my senior year of high school.
- Linear Algebra (284) -- Richard Penn, M.S.
Linear equations, transformations, matrix algebra, determinants, vector
spaces, eigenvalues and eigenvectors, orthogonality and least squares,
symmetric matrices and quadratic forms.
Taken at Montgomery College in Rockville, MD during my senior year of high school.
- Multivariable Calculus, Linear Algebra, and Differential Equations (340) -- Brian Hunt, Ph.D.
An advanced freshman course giving a theoretical grounding for
multivariable calculus, linear algebra, and ordinary different
equations. Basic proof concepts used to introduce supplementary
material like differential geometry and Fourier series.
- Upper-level Courses
-
- Applied Probability and Statistics I (S400) -- Abram Kagan, Ph.D.
Basic
stat course. Algebra of events, probability, conditional probability,
Bayes' Theorem, screening tests, discrete/continuous random variables,
discrete/continuous distributions, random vectors, correlation
coefficients, point/interval estimation, margin of error. Grading
consisted of weekly homework assignments, quizzes, and exams.
- Introduction to Probability Theory (S410) -- Stewart Antman, Ph.D.
A more theory-based version of STAT400. Random variables, limit theorems, characteristic functions, moments, combinatorics.
- Applications of Linear Algebra (M401) -- Peter Wolfe, Ph.D.
Theory
of finite games, linear programming, finite Markov chains, Simplex
method, random walk, graphs (undirected and directed), network
problems. Assignments were written as well as coded in MatLab.
- Linear Algebra (M405) -- Henry King, Ph.D. (recently retired)
Abstract treatment of linear algebra concepts. Finite dimensional vector spaces. Linear transformations and their invariants.
Audited this course out of interest.
- Advanced Calculus I (M410) -- Michael Jakobson, Ph.D.
Known
as the course that separates the math majors from the, well, non-math
majors. First semester of heavy Calculus theory, rigorously proving the
topics typically covered in Calc. I and II. Sequences, series,
continuity, differentiability (one-variable, real), Darboux sums,
Riemann integral, sequences of functions and power series.
- Advanced Calculus II (M411) -- Manoussos Grillakis, Ph.D.
Second
semester accompaniment to MATH410. Rigorous coverage of standard
multivariable course topics, including: functions of several variables,
direction/partial derivatives, double/triple/multiple integrals, line
and surface integrals (Green's, Stoke's, Gauss'), Implicit Function
Theorem, Inverse Function Theorem.
- Differential Geometry of Curves and Surfaces (M436) -- Chris Truman, Ph.D.
My
favorite math course! Curves, surfaces, curvatures of surfaces, and a
whole ton of funky proofs ranging from the Greeks to Gauss(-Bonnet). - Computational Methods (M460) -- link
- Graph Theory and Combinatorics (M475) -- link
- Just for Kicks
-
-
What good is spending time at a university if you don't slack off a
bit? Below lies a list of courses, mostly taken for pleasure, that fall
outside the fields of mathematics and computer science.
- Honors Seminars
-
- Attending the Blockbuster: Understanding the Cultural Impact of Temporary Exhibitions (HONR209E) -- Quint Gregory, Ph.D.
An in-depth look at how museums both display artwork and shape the
lives of those visiting their premises. Discussion of many current
exhibits at museums around the DC/Metro area.
- Mathematics and Art (HONR229P) -- Niranjan Ramachandran, Ph.D.
A
discussion course on the connections between mathematics and artwork.
Aesthetics, fractals, religious beliefs relating to mathematical
constructs, Escher, circles -- a fun course.
- In Search of Ancient Astronomies (HONR216) -- J. Carlson, Ph.D.
Introduction
to Archaeoastronomy, a history of astronomical and astrological
practices, religion, mythology, lore, beliefs, and cosmologies.
- Gemstone Research Courses
-
These courses were taken to fulfill the classwork requirements for
my Gemstone citation. For more information on Gemstone, hop on over to
my research page.
- Freshman Honors Colloquium: Introduction to Gemstone (100)
All first-semester freshmen are required to take a welcome course in an
attempt to acclimate students to campus life. This was Gemstone's
version of the standard UNIV100 -- a weekly meeting filled with
information about both the university and the Gemstone program. The
course itself was taught by third- and fourth-year Gemstone students.
- Research Topic Exploration and Team Formation (102) -- Craig Alimo, M.S.
Development of research ideas and formation of interdisciplinary research teams.
- Topics in Science, Technology, and Society (104) -- Robert Friedel, Ph.D.
History
of technology and research. Study of different periods of the evolution
of human intelligence. Semester-long group mini-thesis on the invention
of radar by the Naval Research Labs.
- Team Dynamics and Research Methodology (202) -- Craig Alimo, M.S.
A
basic "how-to" regarding the world of research and scholarly papers.
Discussion of research methods and methodology, standards, rules,
quirks, and conventions found in the world of research.
- Team Project Seminar I, II, III, IV (296, 297, 396, 397) -- Shihab Shamma, Ph.D.
Four
semesters (sophomore and junior year) of weekly research meetings.
During this time, we narrowed down our research question, discussed
past literature on relevant topics, collected and analyzed survey data,
argued, argued some more, and somehow produced viable and dependable
results.
- Project Writing Seminar (496) -- Shihab Shamma, Ph.D.
The
majority of our thesis drafting occurred during this semester. We
completed any outstanding data analysis, polished our literature
review, and wrote the meat of our research paper.
- Team Thesis Defense (497) -- Shihab Shamma, Ph.D.
The
final semester of Gemstone work. We made revisions to our thesis draft,
ran through our thesis presentation multiple times, made more revisions
to the thesis draft, presented and (successfully!) defended our
research, finalized the draft via more revisions, and graduated!
- Other
-
- Selected Topics in Mathematics: Putnam Express (MATH299B) -- Brian Hunt, Ph.D.
Weekly practice session of Virginia Tech Regional Mathematics Competitions (VTRMC) and the William Lowell Putnam Mathematical Competition (Putnam). Very tricky takes on seemingly innocent, simple mathematics.
- Introductory Astrophysics I - Solar System (ASTR120) -- Chris Reynolds, Ph.D.
Majors
course dealing with close-to-home astronomy, like orbits,
electromagnetic radiation, telescopes, origin of the solar system
(planets, asteroids, meteoroids, etc). Brief history of the study of
the stars.
- Introductory Astrophysics II - Stars and Beyond (ASTR121) -- Chris Reynolds, Ph.D.
Majors
course regarding even larger scale stuff than ASTR120 - evolution of
galaxies, stars, structures of our galaxy and others, Big Bang Theory,
future of the universe. Outdoor observation and practical
instrumentation experience.
- General Physics: Mechanics and Particle Dynamics (PHYS161) -- Chung-Yun Chang, Ph.D.
Engineering-oriented
first semester, Calculus-based physics course. Newtonian laws of
motion, force, energy, mechanics, collisions, linear momentum,
rotation, gravitation.
- Physics Laboratory Introduction (PHYS174) -- Wolfgang Losert, Ph.D.
Accompanying
first semester lab. Basic data collection and analysis techniques using
standard physics lab equipment -- calipers, meters, oscilloscopes.
Error analysis via Excel.
- Technical Writing (ENGL393) -- Michael Winett, J.D.
Focused
on the writing of technical papers and reports. Formal emails,
résumeés, explanation papers, and large technical reports. Focus on
exigence and audience. Final assignment won UMD "Alternate Media"
award.
- Introduction to Student Personnel (EDCP470) -- Angela Jackson Powell
Training
course for all incoming Resident Assistants. Dealt with university
rules and regulations, planning events, dealing with residential
crises, building community in the residence halls.
- Beginning Classical Guitar (MUSC106) -- Giorgia Cavallaro
An
introductory course on the classical guitar. Finger techniques, chords,
scales, basic musical terms, reading and writing sheet music. Group and
individual recitals. Lots of fun!
- General Psychology (PY102)
As the title implies, a
general psychology introduction. Biological basis of behavior, human
development, perception, learning, mental and social disorders, methods
of experimentation.
Taken at Montgomery College in Rockville, MD during my senior year of high school.
- UNIX/Linux Operating System (CS216) -- Greg Grinberg, Ph.D.
Introductory course to the ubiquitous operating system. User hierarchy,
file structure, vi/Emacs, basic commands, shell programming (BASH),
UNIX utilities.
Taken at Montgomery College in Rockville, MD during my junior year of high school.