Dr. Chang’s research focuses on tools and techniques for building, understanding, and ensuring reliable computational systems. An overarching theme in Dr. Chang’s work is finding novel ways for users to interact with powerful automated reasoning engines, that is, to create program analyzers that truly amplify human efforts. A novel aspect of his work includes extracting necessary program invariants and reasoning rules from a variety of sources, including executable assertions, recorded traces, and source-code repositories.
Safe Stream-Based Programming with Refinement Types.
Proceedings / IEEE International Conference, Automated Software Engineering ; sponsored by IEEE Computer Society, NASA Ames Research Center, in cooperation with AAAI, ACM SIGART and SIGSOFT. IEEE International Automated Software Enginee....
565-576.
2018
CSCI 3155 - Principles of Programming Languages
Primary Instructor
-
Fall 2022 / Fall 2024
Studies principles governing the design and analysis of programming languages and their underlying execution models. Explores values, scoping, recursion, higher-order functions, type systems, control structures, and objects. Introduces formal semantics as a framework for understanding programming features. Introduces advanced programming concepts such as functional programming, higher-order functions, immutable values and structures, inductive types, functors, continuation-passing; and object-oriented programming using inheritance, generics and covariance/contravariance in a functional programming language such as Scala. Same as CSPB 3155.
CSCI 5535 - Fundamental Concepts of Programming Languages
Primary Instructor
-
Spring 2018 / Spring 2020 / Fall 2023
Considers concepts common to a variety of programming languages--how they are described (both formally and informally) and how they are implemented. Provides a firm basis for comprehending new languages and gives insight into the relationship between languages and machines. Recommended prerequisite: CSCI 3155 or instructor consent required. Same as ECEN 5533.
ECEN 5533 - Fundamental Concepts of Programming Languages
Primary Instructor
-
Spring 2020
Considers concepts common to a variety of programming languages--how they are described (both formally and informally) and how they are implemented. Provides a firm basis for comprehending new languages and gives insight into the relationship between languages and machines. Same as CSCI 5535.