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.

PDF

Human-in-the-loop AI for cyber resilience

Keynote at IEEE CNS 2024 Workshop on Cyber Resilience

PDF

Decentralized algorithms for edge computing resource management

Telefonica 2019

PDF

Secure and resilient time synchronization for the smart grid

Keynote at IEEE SmartGridComm 2019

PDF

Distributed state estimation security

Talk at GeorgiaTech, ABB, 2015

PDF