Teaching software engineering, grounded in how it's practiced.
I teach across the undergraduate curriculum in the Department of Computer Science at Omar Al-Mukhtar University, drawing on empirical software engineering research to connect course material to how software is actually built and maintained.
Teaching philosophy
Software engineering is learned by building, breaking, and rebuilding systems under realistic constraints. My courses are structured around hands-on projects and code review as a graded activity. I try to bring findings from my own empirical research — on how developers actually use tools, repositories, and crowd resources — directly into the classroom, so students see the discipline as it's practiced today, not as a fixed set of rules.
Academic positions
Lecturer
Department of Computer Science, Omar Al-Mukhtar University, Libya
Tenure-Track Assistant Professor
School of Computer Science, Carleton University, Canada
Postdoctoral Research Fellow
Software Analysis and Intelligence Lab (SAIL), Queen's University, Canada
Ph.D. in Software Engineering
Concordia University, Canada — supervised by Dr. Emad Shihab and Dr. Juergen Rilling
M.Sc. in Computer Science
Concordia University, Canada
Courses
6 coursesSoftware Construction & Design
Undergraduate core course on building maintainable software: version control, testing, modular design, and team-based development.
Software Testing & Quality Assurance
Techniques for testing large systems: unit, integration, and system testing, mutation analysis, and test automation.
Capstone: Software Engineering Practicum
Team-based, semester-long project building a real system for an external partner, from requirements through deployment.
Empirical Methods in Software Engineering
Graduate seminar on designing and evaluating empirical studies of software systems and developer behavior.
Mining Software Repositories
Graduate course on extracting and analyzing data from version control, issue trackers, and code review systems to study developer behavior.
Research Seminar: Crowdsourcing & Software Ecosystems
Reading and discussion seminar on crowd-based knowledge sharing (Stack Overflow, npm) and how software ecosystems evolve.