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

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.