The purpose of CMSC330 is to teach you the foundations of
programming langauges. While few people will ever design the next
mainstream programming language, studying their foundations is helpful
becuase:

  • Many “design patterns” we recognize in programming languages are
    fundamental abstractions. Understanding these basic building blocks
    will help you to understand how systems works at a more conceptual
    level, rather than thinking about their design by proxy of a (e.g.,)
    fixed class hierarchy or API.

  • Exposure to other languages will help you choose the right tool for
    the right job.

  • Understanding the workings of programming languages will help you
    improve and debug code in languages you use day-to-day.

  • Few systems use a single programming language, being able to
    effectively learn new languages is an essential part of developing
    large systems.

The course will also focus on getting hands on experience with new
langauges (beyond those covered in lower level CMSC courses) in a
variety of paradigms (scripting, functional, logic, etc..). You will
have practical experience with Ruby and OCaml upon completion of the
course, along with an understanding foundations such as the lambda
calculus, type systems, and operational semantics.

The instructors

Kristopher Micinski
Kris wearing argyle

email: micinski@cs.umd.edu

Head instructor for the course. I’m a PhD student studying
programming languages and security. My research involves static
analysis of Android apps to detect and prevent secret information from
leaking out.

Office hours: In the classroom (CSIC 1122) on Thursdays, before
class: 1:30-2:30PM.

Aditya Acharya
Aditya

email: acharya@cs.umd.edu

Aditya is a PhD student in Computer Science at UMD, working on
computer vision.

Office hours: In the TA room (in AVW) after class on Tuesdays, 4-5:30PM.

Casey Mihaloew

email: mihaloew@cs.umd.edu

Casey is a masters student in Computer Science at UMD.

Office hours: In the TA room (in AVW) after class on Wednesdays, 4-5:30PM.