PLASMA courses

get your very own PLASMA t-shirt!

The PLASMA group, led by Professors Emery Berger, Yuriy Brun, and Arjun Guha, teach a series of popular programming languages, systems, and software engineering courses.

PLASMA courses
CMPSCI 621: Advanced Software Engineering: Analysis and Evaluation (Prof. Brun)
CMPSCI 621 (held jointly with 521) covers advanced topics in software engineering, such as automating software engineering tasks, static and dynamic analyses, model inference, model checking, formal verification, type and generics inference, bug localization, mutation and regression testing, and symbolic execution.

CMPSCI 630: Systems (Prof. Berger)
CMPSCI 630 is an in-depth introduction to systems, focusing on principles of system design that cross-cut numerous systems artifacts, including operating systems, databases, runtime systems, and architecture. This class covers all levels of the "system stack", from chips to distributed systems.

CMPSCI 631: Programming Languages (Prof. Guha)
CMPSCI 631F surveys the principles of modern programming languages by implementation. Topics include building interpreters for several kinds of programming languages, type-inference algorithms, program analyses, and program verification. This course will conclude with topics that bridge to compilers and runtime systems, including program transformations and garbage collection.

CMPSCI 220: Programming Methodology (Prof. Guha)
CMPSCI 220 is a sophomore-level course on functional and object-oriented programming with Scala. Students learn several modern programming techniques, implement many data structures and algorithms, and hack several thousand lines of code over the semester.
CMPSCI 320: Introduction to Software Engineering (Prof. Brun)
CMPSCI 320 (held jointly with 529 and H320) covers the topics of building software systems. Software is complex and inherently a collaborative activity. Students spend a semester in teams building a real product from scratch. The students own the resulting software projects and many end up in mobile app stores. This course is a must for students who planning to work in the software engineering industry after graduation or as interns.

CMPSCI H320: Introduction to Software Engineering Honors Seminar (Prof. Brun)
CMPSCI H320 (held jointly with 320 and 529) dives deeper into the issues of ethics in software engineering and introduces students to the state-of-the-art of software engineering research.

CMPSCI 521: Software Engineering: Analysis and Evaluation (Prof. Brun)
CMPSCI 521 (held jointly with 621) is an advanced undergraduate course covering the same materials as 621 (described above), but with a greater focus on reading and communicating research literature.

CMPSCI 529: Software Engineering Project Management (Prof. Brun)
CMPSCI 529 (held jointly with 320 and H320) is a small enrollment course that focuses on the issues of software engineering project management and teaches students how to lead a team of developers by actually leading a team of 320 students in a successful software project.