Current Classes (Spring 2017)

CMSC 818O: Graduate-level Computer and Network Security

This course covers advanced topics in computer and network security, including (but not limited to): anonymity, privacy, memory safety, malware, denial of service attacks, trusted hardware, security design principles, and empirically measuring security "in the wild". This is a largely paper-driven course (there is no textbook), preparing students for research in (or around) the broad area of security. Students will gain first-hand experience launching attacks in controlled environments. The bulk of the grade will be based on a final, semester-long group project.


Spring 2017

CMSC 396H: Undergraduate Honors Seminar

The goal of this course is to prepare undergraduate students to do research in any area of computer science, collaborating with students and faculty to: perform experiments, read and write research papers, and give presentations to an academic audience. We will look at good research in diverse areas of computer science so that students can both choose an area of research wisely and recognize fruitful research questions within larger projects. The course will also cover tools and techniques for collaborative authoring and typesetting of research papers. In sum, the goal is to convey knowledge that students tend to acquire individually though reading or tutoring by graduate students. Students at the end of the course should be ready to contribute meaningfully to active projects or even to direct their own research


Spring 2017   Spring 2016

Past Classes

CMSC 414: Computer and Network Security

An introduction to the topic of security in the context of computer systems and networks. Identify, analyze, and solve network-related security problems in computer systems. Fundamentals of number theory, authentication, and encryption technologies, as well as the practical problems that have to be solved in order to make those technologies workable in a networked environment, particularly in the wide-area Internet environment.


Spring 2016   Spring 2015   Spring 2014

CMSC 330: Organization of Programming Languages

A study of programming languages, including their syntax, semantics, and implementation. Several different models of languages are discussed, including scripting/object-oriented (Ruby) and functional (OCaml), Language features such as formal syntax and semantics, scoping and binding of variables, higher-order programming, typing and type polymorphism, and concurrency are explored.

Co-taught with Mike Hicks


Spring 2013

CMSC 818F: Securing and Monetizing the Internet

New cloud-based services like targeted advertising, elastic computing and storage, online social networks, and content distribution networks are changing how the Internet is used, monetized, and secured. The goal of this course is to identify new problems of security and incentives in online services. We will take a hands-on approach, investigating how these new services are designed and used today, and the (financial) relationship between various stake-holders. We will also cover relevant background on techniques used to solve these problems, particularly from cryptography (e.g., verified computation, and digital cash) and economics (e.g., game theory and mechanism design).

Co-taught with Elaine Shi


Spring 2013