Gail Kaiser profile photo

Gail Kaiser is a Professor of Computer Science in the Computer Science Department at Columbia University, where she is the Director of the Programming Systems Lab (PSL) and affiliated with the Software Systems Lab (SSL). Her interests include program analysis, software testing, software security, software systems, AI for software engineering (AI4SE) and software engineering for AI (SE4AI).

Prof. Kaiser conducts research in software engineering and security from a systems perspective, focusing on program analysis and software testing. In the 1980s and early 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 mid 1990s through early 2000s she investigated collaborative work technologies leveraging the nascent World Wide Web and self-adaptation for the then-emerging cloud computing, particularly techniques for retrofitting legacy software. Beginning with her sabbatical at Columbia's Center for Computational Learning Systems in 2005-2006, Kaiser was among the first to investigate software engineering testing techniques, such as metamorphic testing, for finding bugs in machine learning software. Her more recent work ranges across static and dynamic program analysis techniques for both source code and binaries. She currently investigates secure computing paradigms and machine learning techniques for solving software engineering problems.

She is greatly entertained to recently re-discover her early paper titled AI Techniques in Software Engineering, an invited chapter in this book published in 1990. The 1989 tech report version is here. The first paragraph says "The idea of using artificial intelligence techniques to support programming has been around for a long time. The earliest notion was to avoid programming entirely. The human user would just tell the computer what to do, without saying how to do it, and the computer would do the right thing. Even if this were feasible, however, it would be much too tedious, since each time the user would have to repeat the details of what he wanted done. So the goal of programming was to explain things to the computer only once, and then later on be able to tell the computer to do the same thing again in some short form, such as the name of the "program." Thus the idea evolved that a user would somehow tell the computer what program was desired, and the computer would write down the program in some internal form so that it could be remembered and repeated later. The assumption was that the resulting program would be correct, complete, efficient, easy to use, and so forth. It would also be exactly what the human user wanted." She wrote this in 1989, without any help from ChatGPT!

Prof. Kaiser received her PhD from CMU and her BS from MIT. CV. Google Scholar.

 

Prof. Kaiser teaches COMS W4156 Advanced Software Engineering (ASE) in the Fall. ASE covers the workflows, techniques and best practices software engineers need to know to develop consumer and business software. The course emphasizes software testing and other approaches to detecting and eliminating security vulnerabilities and other bugs.   The course targets juniors, seniors and graduate students in Computer Science and Computer Engineering.  Lecture Notes and Assignments from some recent offerings of the course are posted here. Prerequisite: COMS W3157 Advanced Programming or equivalent, plus students are expected to be fluent programmers in Java and have a reading knowledge of C. The detailed Fall 2025 checklist for expected background is 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 pathway. One of 4156 (this course) or 4152 (ESaaS Engineering Software as a Service) is required for the CS MS Software Systems pathway. 4156 is a technical elective for all other CS MS students. 

Prof. Kaiser teaches COMS E6156 Topics in Software Engineering (TSE) in the Spring. 6156 is a graduate seminar for students who aspire to become, or already are, researchers or industry 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. 6156 is the only regularly offered course at Columbia CS where students have the opportunity to explore in depth a topic of their own choosing. More details are posted here. Prerequisites: Students should have already completed at least one 4k level software systems course, ideally 4113, 4115, 4118, 4156 or 4181. To be accepted from the waitlist to enroll in the course, students must submit "homework zero", posted here. 6156 is an elective for the CS MS Software Systems pathway. It can be applied to any other CS MS pathway with advisor approval for students who choose topics relevant to their pathway.  

 

 

enable
Nico Family Tree
Gail Family Tree
Women In STEM

 


Former Doctoral Students, MS GRAs, MS thesis students, Staff and Visiting Researchers (suggestions for missing PSLers and missing/broken/outdated links will be appreciated):



 

Prof. Kaiser's Greatest Achievement 

 

Prof. Gail Kaiser
Columbia University
Department of Computer Science
[office: 607 CEPSR]
[US mail: 1214 Amsterdam Avenue Mail Code 0401]
[package delivery: 500 W. 120th St., Room 450]
New York, NY 10027
United States

voicemail: 212-853-8452
department main number: 212-853-8400
email: kaiser@cs.columbia.edu

 

Last updated March 24, 2026.
Copyright ©
Gail E. Kaiser.