Game Theory (Graduate)

This course will cover the fundamentals of game theory. Game theory is the study of decision problems in which there are multiple decision makers, and the quality of a decision maker's choice depends on that choice as well as the choices of others. From this perspective, game theory shares some common points with control systems problems, in particular those with distributed topologies, where the interconnection of different elements (agents) leads to a global behavior that depends on the local interaction of these agents. Game theory has recently found many applications in formulating network resource allocation problems and in coordinating the behavior of network entities to achieve a stable operating point with global consensus property.

Convex Optimization (Graduate)

This course provides an overview of topics in convex optimization, a sub-area of optimization that studies the problem of optimizing convex functions over convex sets. The convexity makes optimization easier than the general case since a local optimum must necessarily coincide with the global optimum, and first-order conditions are sufficient conditions for optimality. This graduate course introduces the basic theory and illustrates its use with some recent applications in computer networks and wireless communication systems. Special attention will be given to: i) the techniques for uncovering the hidden convexity of problems by appropriate manipulations, and ii) a proper characterization of the solution either analytically or algorithmically.

Internet Engineering (Undergraduate)

This course provides an overview of various types of network transport protocols (UDP, TCP, SCTP, RTP, TLS, DTLS, SRTP, etc.), application protocols (HTTP/1.1, HTTP/2), fundamentals of multimedia streaming and APIs for network programming and real-time communications (Berkeley sockets, XHR, SSE, WebSocket, WebRTC, and more). In the second part of the course, we investigate the challenges posed by data center networks (DCNs). In particular, we overview topics spanning DCN topologies: clos, fat-tree, PORTLAND, etc; Routing protocols: ECMP, Flowlets, Conga, etc; and Transport protocols such as: DCTCP, D2TCP, multi-path TCP (MPTCP), etc.

Discrete Mathematics (Undergraduate)

This course covers elementary discrete mathematics for computer science and engineering. It emphasizes mathematical definitions and proofs as well as applicable methods. Topics include: proof techniques, well ordering principle (WOP), logical formulas, mathematical induction, number theory (and basic cryptography), graph theory, partial orders, sums and asymptotics, cardinality rules, generating functions, and recurrences. Students will be able to use these methods in subsequent courses in the design and analysis of algorithms, computability theory, software engineering, and digital circuit design.

Computer Networking Lab (Undergraduate)

This course serves a supplement to the undergraduate course of "computer networks". Throughout the semester, we use homework and projects to provide students with hands-on experience with emulated network hardware and software. Experiments include: fundamentals of UNIX network namespaces, topology construction and interface configuration, LAN switching & bridges, implementing network attacks (e.g., man-in-the-middle, IP spoofing, etc.), static & dynamic routing (RIP), and performance measurement under UDP & TCP traffic. Throughout the course, Mininet is used to emulate the network topology in lab experiments.