Graduate: |
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.
|
Undergraduate: |
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.
|
|