Sarah Nadi, PhD

Assistant Professor, Faculty of Science - Computing Science


Assistant Professor, Faculty of Science - Computing Science




  • Assistant Professor, Department of Computing Science, University of Alberta, Canada (July 2016 - present)
  • Post-doctoral researcher, TU Darmstadt, Germany (Oct. 2014 - June 2016)


  • Ph.D. in Computer Science, University of Waterloo, Canada (2014)
  • M.Math in Computer Science, University of Waterloo, Canada (2010)
  • B.Sc. in Computer Science, The American University in Cairo, Egypt (2007)


My goal is to make software more reliable and easier to develop through creating automated decision support for software development and maintenance. Some of the keywords summarizing my research are: software product lines, code recommender systems, API usage patterns, mining software repositories, reverse engineering, build systems, software maintenance, software evolution, and security. You can find more details at htttp://


I'm always looking for motivated MSc and PhD students. To get more details on my research interests, check out my website to see my papers and the projects I work(ed) on and send me an email if you are interested to work with me. 


CMPUT 201 - Practical Programming Methodology

Introduction to the principles, methods, tools, and practices of the professional programmer. The lectures focus on the fundamental principles of software engineering based on abstract data types and their implementations. The laboratories offer an intensive apprenticeship to the aspiring software developer. Students use C and C++ and software development tools of the Unix environment. Prerequisite: CMPUT 175.Credit cannot be obtained for CMPUT 201 if credit has been obtained for CMPUT 275, except with permission of the Department

Winter Term 2021
CMPUT 402 - Software Quality

Software quality issues are covered. Various types of software testing, ranging from unit testing to integration testing are discussed. Processes to ensure quality, such as reviews and continuous integration, are introduced. State-of-the-art software quality tools that analyze different artifacts within the software lifecycle are described. Prerequisite: CMPUT 301.

Winter Term 2021