Gail now
Gail E. Kaiser is a Professor of Computer Science in the Computer Science Department at Columbia University. She is affiliated with the Programming Systems Lab (PSL) and the Software Systems Lab (SSL). Prof. Kaiser conducts research in software engineering and security from a systems perspective, focusing on program analysis and software testing. In the 1980s and 1990s, Kaiser investigated semantics-focused extensions to language-based editors and process-oriented team software development environments, forerunners to today's IDEs and Continuous Integration, and in the late 1990s and early 2000s she investigated self-adaptation for the then-emerging cloud computing, particularly techniques for retrofitting legacy systems. Since then she has concentrated on testing and analysis. Beginning with her sabbatical at Columbia's Center for Computational Learning Systems in 2005-2006, Kaiser and her former PhD student Chris Murphy were among the first to adapt software engineering testing techniques, particularly metamorphic testing, to finding bugs in machine learning software. In recent years her work in program analysis ranges across static and dynamic techniques, across source code and executable (bytecode/binaries) targets, and investigates AI4SE as well as SE4AI. Prof. Kaiser received her PhD from CMU and her ScB from MIT. CV. Google Scholar.


Prof. Kaiser is teaching COMS W4156 Advanced Software Engineering (ASE) in Fall 2022. This course covers the workflow processes, techniques and "best practices" software engineers need to know to develop consumer and business software, and emphasizes software testing and other approaches to detecting and eliminating security vulnerabilities and other bugs.   Prerequisite: COMS W3157 Advanced Programming or equivalent.  Students are expected to have two or more years programming experience and be fluent in Java or C++. The detailed Fall 2022 checklist for expected background is available here. The course is targeted to undergraduate seniors and first-year graduate students in Computer Science.  Other qualified students are welcome if there is space. It is important to note that Java and C++ are the only languages allowed for team projects. Python, Javascript, C#, Ruby and any other language that is not Java or C/C++ will not be allowed in Fall 2022. "Software Engineering at Google" (Flamingo book) is available free here. Lecture Notes and Assignments from some recent offerings of the course are posted here. 4156 is a Systems distribution course for all CS doctoral students and a Systems breadth course for all CS MS students. 4156 is required for the CS MS Computer Security track. One of 4156 (this course) or 4152 (ESaaS Engineering Software as a Service) is required for the CS MS Software Systems track. 4156 is a technical elective for all other CS MS tracks and for CS undergraduate tracks. 

Prof. Kaiser will teach COMS E6156 Topics in Software Engineering in Spring 2023. Prof. Kaiser's course is not related to Prof. Ferguson's Cloud Computing course, which is offered as 6156 with a different section number. Prof. Kaiser's section does not teach anything about cloud computing. Her section of 6156 is a graduate seminar oriented towards students who aspire to be researchers or technology leaders and who are highly self-motivated to pursue their own forward-looking topic within software engineering, broadly construed.  6156 is not "more" 4156, and not "more advanced" 4156. 4156 is about doing software engineering, and 6156 is about improving software engineering including software security. More details are posted here. 6156 is a track elective for the Software Systems track and is accepted for the Computer Security track for students who choose security or privacy topics. It may be accepted as a track elective for other tracks whose students choose topics relevant to their track - contact your track advisor: students in all other MS area tracks have successfully received track credit for 6156 since the course accommodates very broad interests. 6156 is a technical elective for all CS MS and undergraduate tracks.  To be accepted off the waitlist to enroll in the course, students must submit "homework zero", which is posted here. Prerequisites: Students should have already completed at least one 4k level software systems course at Columbia (any 41xx course except not 416x/417x), preferably 4156 or 4181. Important note: Prof. Kaiser's course is not related to Prof. Ferguson's Cloud Computing course, which is offered as 6156 with a different section number. Prof. Kaiser's section does not teach anything about cloud computing.



Nico Family Tree
Easy vs Hard
Women In STEM


Current PSL Doctoral Students:


Former PSL Doctoral Students, MS GRAs, MS thesis students, Staff and Visiting Researchers (suggestions for missing or updating links are appreciated):



Prof. Kaiser's Greatest Achievement 


Prof. Gail E. Kaiser
Columbia University
Department of Computer Science
[office: 607 CEPSR]
[US mail: 1214 Amsterdam Avenue
Mail Code 0401]

[express/package delivery:
500 W. 120th St., Room 450]
New York, NY 10027
United States

voicemail: 212-853-8452
department main number: 212-853-8400


Last updated September 6, 2022.
Gail E. Kaiser.