Courses
I am currently teaching the following courses at KTH.
EP2120: Internetworking
The course covers fundamental concepts, algorithms and technologies underlying the Internet, focusing on layers 3 and above of the TCP/IP protocol stack.
The course is given in Period 1 in each year, together with the course IK2218.Course elements:
- Design principles of the Internet
- Link layer technologies and how they interact with IP (Ethernet, PPP, bridging, etc)
- TCP/IP protocol stack, layering, encapsulation and multiplexing.
- Protocols required for internetworking (IP, TCP, UDP, ICMP, etc.)
- Concepts of bridging, learning, virtual LANs, and how they relate to routing.
- Addressing, subnetting, address allocation in IPv4 and IPv6
- Transport layer protocols, including UDP and TCP.
- Routing problem and routing protocols (RIP, OSPF, BGP)
- Autoconfiguration and name resolution (BOOTP, DHCP, DNS)
- IP Multicast and multicast routing (IGMP, DVMRP, PIM, etc)
- Network management, traffic measurements and analysis (eg. SNMP)
- Network security essentials (IPsec, firewalls, encryption)
- IP QoS (Traffic Engineering, RSVP, Intserv, Diffserv, etc)
- Advanced networking (MPLS, VPN, etc)
- IP mobility (Mobile IP)
Videos, labs, and old exams can be found on Canvas.
EP1200: Introduction to Computing Systems Engineering
This course gives an introduction to the key concepts of digital design, computer architecture, compliers and software engineering. This is done constructively, by building a simple, but general purpose computer from basic digital building blocks up to the operating system. In this process we explore many ideas and techniques used in the design of modern hardware and software systems.
During the course, students build the software emulation of a computer, through the sequence of small projects, each addressing a building block of a modern computing system. The course is given in P4.
Course elements:
- computer architecture
- machine language and assembler
- virtual machine and higher level programming languages
- compilers
- operating systems
FEP3301: Computational game theory
Game theory is becoming increasingly important in many areas of computer science and engineering where autonomic agents interact with each
other and aim to maximize their individual utilities. This course focuses on the areas of game theory that appear to be most relevant
for engineering applications. The emphasis is both on theoretical principles and on the application of the theory to problem formulation
and problem solving. The course covers a range of topics, from the different concepts of equilibria and different kinds of games to computational
aspects of reaching equilibria. The course also covers topics in mechanism design, which deals with the problem of designing rules of a
game such that a specific outcome is reached. The course is offered every odd year in Period 2.
Course elements:
- Representations of games, basic concepts
- Equilibria, existence and learning to play equilibria
- Submodular and potential games
- Games with imperfect/incomplete information
- Extensive games, Repeated games, Folk theorems, Stochastic games
- Coalition games
- Implementation theory and mechanism design
Keynotes and research talks
Slides from past presentations.Securing machine learning enabled autonomous systems
Seminar at U. Toronto, Texas A&M, Oct/Nov 2025.
PDFHuman-in-the-loop AI for cyber resilience
Keynote at IEEE CNS 2024 Workshop on Cyber Resilience
PDFDecentralized algorithms for edge computing resource management
Telefonica 2019
PDFSecure and resilient time synchronization for the smart grid
Keynote at IEEE SmartGridComm 2019
PDFDistributed state estimation security
Talk at GeorgiaTech, ABB, 2015
PDF