Teaching
Fall 2025 & Spring 2026
COSC 50: Software Design and Implementation
In COSC 50, students learn how to design and build large, reliable, maintainable, and understandable software systems. Throughout the course, participants will gain experience in programming with C and utilizing Unix development tools. The objectives of this course include: understanding software design principles, developing good coding style and documentation practices, mastering debugging and testing techniques, collaborating on design and coding within a team, programming in C, programming on unix, utilizing git for source-code management.
Spring 2025
COSC 58: Operating Systems
This hands-on operating-systems course emphasizes learning by doing: small assignments that explore processes, threads, and synchronization, followed by a large team project building an entire OS for a simulated machine using the Yalnix toolkit (runs on Intel Linux/VirtualBox), with C as the implementation language; students work initial exercises individually, then complete the major project in teams of 2–3, and are expected to write clear, well-designed code, meet checkpoints, participate in class discussion, and tolerate rigorous testing—recommended texts include Anderson & Dahlin’s Operating Systems: Principles and Practice and K&R’s The C Programming Language.
Winter 2025
COSC 50: Software Design and Implementation
In COSC 50, students learn how to design and build large, reliable, maintainable, and understandable software systems. Throughout the course, participants will gain experience in programming with C and utilizing Unix development tools. The objectives of this course include: understanding software design principles, developing good coding style and documentation practices, mastering debugging and testing techniques, collaborating on design and coding within a team, programming in c, programming on unix, utilizing git for source-code management.
Fall 2024
Special Topics Course: Hacklab II
Modern software keeps expanding in terms of size, application domains, users, and quantity of processed information. As a result of this, the attack surface and range of vulnerabilities targeted by attackers increases on a constant basis. Simultaneously, while humans reason about programs at the source-code level, a set of abstractions designed by humans for humans, computers execute machine code: a translation of source code into low-level instructions. This course sheds light on the discrepancies between source code and what computers actually execute, and examines some of the root causes and inner-workings of several common classes of software vulnerability, how these can be exploited to take control of remote systems, how those can be addressed and how to scale their detection and mitigation by leveraging automated program analysis techniques. Students will learn the practice and theory of ethical hacking through hands-on program analysis problems, Capture-The-Flag (CTF) competition challenges, exploitation and defense techniques as well as state-of-the-art research models. By studying the attack surface of modern software, students will learn how to build stronger, more sophisticated and more adequate defense strategies.
Spring 2024
Special Topics Course: Hacklab
Modern software keeps expanding in terms of size, application domains, users, and quantity of processed information. As a result of this, the attack surface and range of vulnerabilities targeted by attackers increases on a constant basis. Simultaneously, while humans reason about programs at the source-code level, a set of abstractions designed by humans for humans, computers execute machine code: a translation of source code into low-level instructions. This course sheds light on the discrepancies between source code and what computers actually execute, and examines some of the root causes and inner-workings of several common classes of software vulnerability, how these can be exploited to take control of remote systems, how those can be addressed and how to scale their detection and mitigation by leveraging automated program analysis techniques. Students will learn the practice and theory of ethical hacking through hands-on program analysis problems, Capture-The-Flag (CTF) competition challenges, exploitation and defense techniques as well as state-of-the-art research models. By studying the attack surface of modern software, students will learn how to build stronger, more sophisticated and more adequate defense strategies.
Winter 2024
COSC 50: Introduction to Security and Privacy
The migration of important social processes to distributed, electronic systems raises critical security and privacy issues. Precisely defining security and privacy is difficult; designing and deploying systems that provide these properties is even harder. This course examines what security and privacy mean in these settings, the techniques that might help, and how to use these techniques effectively. The goal of this course is to equip students with the breadth of knowledge necessary to navigate this emerging area.