Dr. Cerny's research focuses on improving programmer productivity by developing methods and tools that make it easier to write reliable software. His research efforts are concentrated in two areas. The first area is program verification, where he develops techniques for automatically proving correctness of programs. Current focus is on verifying security properties of software. The second, more recent research area, is program synthesis. His goal is to develop techniques for synthesizing programs from insights provided by the programmer in a variety of styles (imperative programming, declarative specification, example scenarios). Current application areas for this work include network controllers (for software-defined networks) and device drivers.
computer-aided verification, programming languages, program synthesis, algorithmic and logical foundations for reliable software
CSCI 5135 - Computer-Aided Verification
Covers two-level and multilevel minimization, optimization via expert systems, algebraic and Boolean decomposition, layout methodologies, state assignment, encoding and minimization, silicon compilation. Recommended prerequisites: ECEN 2703 and general proficiency in discrete mathematics and programming. Same as ECEN 5139.
ECEN 1310 - C Programming for ECE
Spring 2018 / Spring 2019
Introduces fundamental programming concepts with engineering applications using C at a lower level of abstraction and MATLAB at a higher, application-focused level. Teaches the use of pointers, control flow, and data types. Example engineering applications include signal processing and the numerical computations. Includes a weekly computer lab session. Recommended prerequisite: APPM 1350. Degree credit not granted for this course and CSCI 1300 or CSPB 1300 or CSCI 1310 or CSCI 1320.
ECEN 5139 - Computer-Aided Verification
Covers theoretical and practical aspects of verification of finite-state systems (hardware) and infinite-state systems (programs). Model checking: temporal logics, explicit-state and symbolic search, BDDs. Constraint solvers: SAT solvers, decision procedures. Program verification: invariants, partial vs. total correctness, abstraction. Recommended prerequisite: CSCI 2824. Department enforced requisite: general proficiency in discrete mathematics and programming. Same as CSCI 5135.