Program Overview
Program Overview
The University of Copenhagen offers a Master's program in Computer Science with a focus on Proactive Computer Security (PCS). The program aims to provide students with a deep understanding of IT security from the attacker's perspective, covering topics such as fuzzing, stack and heap buffer overflows, shellcode, and reverse engineering.
Program Details
Content
The program focuses on gaining hands-on experience in selected topics, including:
- Fuzzing, stack and heap buffer overflows, shellcode, and reverse engineering
- Interaction between user programs and the operating system
- Tools used for IT security, especially reverse engineering
- Vulnerabilities and how to correct them and/or mitigate attacks against them
Learning Outcome
After completing the program, students will have:
- Knowledge of:
- Fuzzing, stack and heap buffer overflows, shellcode, and reverse engineering
- Details of the interaction between user programs and the operating system
- Tools used for IT security, especially reverse engineering
- Vulnerabilities and how to correct them and/or mitigate attacks against them
- Skills to:
- Analyse simple applications from a security perspective, locate vulnerabilities, and demonstrate how to rectify them
- Describe and apply exploitation techniques such as return-oriented programming and stack and heap buffer overflows, as well as counter mechanisms
- Do basic reverse engineering of binary programs and locate vulnerabilities
- Understand the link between vulnerabilities in binary programs and the insecure source code that produce them
- Recognise insecure source code and suggest corrections
- Use and develop shellcode
- Determine a vulnerability by reviewing an exploit of it, and suggest corrections
- Competences to:
- Find and evaluate security issues using fuzzing, reverse engineering, and source code auditing
Literature
The program's literature is available on Absalon.
Recommended Academic Qualifications
Students are expected to be proficient in both high-level and low-level programming and have an understanding of the low-level architecture of computers. They should also have access to a Linux box and have a working knowledge of how to use Linux via a command prompt.
Teaching and Learning Methods
The program uses a combination of lectures, exercise labs, student presentations, and practical individual mandatory assignments.
Workload
The program's workload is distributed as follows:
- Lectures: 14 hours
- Practical exercises: 14 hours
- Project work: 164 hours
- Seminar: 14 hours
- Total: 206 hours
Exam
The program's exam is a continuous assessment based on student presentation and 6-8 written, individual assignments. Each assignment has equal weight towards the final grade, with the exception of the final assignment, which counts as double.
Course Information
- Language: English
- Course code: NDAA09031U
- Credit: 7.5 ECTS
- Level: Full Degree Master
- Duration: 1 block
- Placement: Block 4
- Schedule: A
- Course capacity: 60
Study Board
The program is overseen by the Study Board of Mathematics and Computer Science.
Contracting Department
The program is offered by the Department of Computer Science.
Contracting Faculty
The program is part of the Faculty of Science.
Course Coordinators
The program's course coordinators are Philippe Bonnet.
