Teaching

AMSC663 - Advanced Scientific Computing

AMSC/CMSC 663-664 is a two-semester project course in which students identify and carry out a scientific computing project with a focus on software development. Students select a faculty member as their project advisor to supervise their work. In addition to code and documentation, course deliverables include a proposal document, proposal presentation, midterm presentation, final presentation, and final report.

Code development is expected to emphasize:
   ● Validation and unit testing
   ● Modularity and portability
   ● Parallelization
   ● Documentation and distribution

Course home : Fall 2018

CMSC250/250H - Discrete Structures

This course focuses on the fundamental mathematical structures, logical principles, and proof techniques that are relevant to the field of Computer Science. By the end of the semester, students are expected to have become more comfortable with skills such as abstract reasoning and the ability to carry out formal mathematical proofs of statements based on stated premises.

Expected Course Topics include:
   ● Propositional logic
   ● Proof methods
   ● Sets
   ● Induction
   ● Functions
   ● Probability

Fall 2014 | Fall 2015 | Fall 2016 | Fall 2017

CMSC878O - Topics in Optimization: Sparsity and Machine Learning

This is an introductory survey of optimization for computer scientists. Special emphasis will be put methods with applications in machine learning, model fitting, and image processing. The format of the class is split between a traditional lecture course and a reading course where students present papers. There are no formal pre-requisites for this course, however students should have a strong background in applied mathematics (especially linear algebra) and programming.
Students will be expected to complete homework assignments, and also to present a paper in class (possible in teams). Homework assignments will consist mostly of short programming tasks in a language of the student's choice. Topics covered in lectures will include: multivariable calculus and optimality conditions, gradient methods, interior point methods, splitting methods, and stochastic optimization. Applications covered will include: fitting generalized linear models, sparse regression methods, matrix factorizations, neural networks, support vector machines, and more.

Course Home : Spring 2015


CMSC764 / AMSC604 - Advanced Numerical Optimization

This is a detailed survey of optimization from both a computational and theoretical perspective, with emphasis on methods for machine learning, model fitting, and image processing. There are no pre-requisites for this course, however students should have a strong background in applied mathematics (especially linear algebra) and programming.
Theoretical topics include convex analysis, duality, convergence proofs, and complexity. Computational topics will include gradient methods, splitting methods, interior point methods, and linear programming. Homework assignments will require both mathematical work on paper and implementation of algorithms.

Course Home : Spring 2016 | Spring 2017 | Spring 2018 | Spring 2019 | Spring 2020 | Spring 2021 | Spring 2022 | Spring 2023