Spring 2025

COSC 58: Operating Systems

This course studies how computer operating systems allocate resources and create virtual machines for the execution of user jobs. Topics covered include storage management, scheduling, concurrent processing, shared access to files, synchronization, and data protection. Both abstract models and actual examples of operating systems will be studied.

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.