Scheme class

Guest Professors

In close cooperation with the TU Wien Informatics Doctoral School, the DC-RES also invites guest professors. In addition to their courses, they are also asked to give a public talk on their respective research topic.

Guest Professors 2022

Alex Yakolev
Edward A. Lee
Leonardo Mariani
Joost-Pieter Katoen
Ozgur Sinanoglu
  • Prof. Alex Yakovlev

    from the Newcastle University

    Design of Asynchronous Circuits and Systems

    Asynchronous Circuit and Systems Design: Modelling, Analysis, Synthesis and Applications

    Outline Syllabus

    1. Introduction to Async design: principles, methodology, design styles overview, applications (2 hours)
    2. Models: Petri nets, STGs (2 hours)
    3. Synthesis from STGs: basics (2 hours)
    4. Synthesis from STG: advanced (2 hours)
    5. Verification (2 hours)
    6. Metastability, synchronizers, arbiters (2 hours)
    7. Application: Analog-mixed signal design (2 hours)
    8. Application: Machine learning (2 hours)
    9. GALS (2 hours)
    10. Design automation developments (2 hours)

     

    The aim of this course is to give students an understanding of asynchronous design and test methodologies and to introduce them to the concepts of token-based computing and self-timed logic and to asynchronous design tools based on hardware description languages and graphical formal languages (eg. Petri nets and Signal Transition Graphs). It will also give the students understanding of the importance of design for low power in modern systems-on-chip, and present methods for achieving energy-efficient solutions in ubiquitous computing applications, such as wireless sensor networks and energy-autonomous systems.

  • Prof. Edward A. Lee

    from the UC Berkeley.

    See also “News: DC-RES Guests Professor Edward A. Lee Awarded TU Wien Honorary Doctorate”

    Software Design for Cyber-Physical Systems

    Cyber-physical systems (CPSs) combine physical components (such as vehicles and robots) with software controllers and monitors.  The overall behavior of the system arises from the combination and cannot be deduced from the individual components alone.  Software components in such systems have properties that are not shared by many information technology applications, such as strong sensitivity to timing.  This short course (18 hours) will introduce the principles behind CPS with a particular focus on models of computation. The course will study a relatively new programming framework called Lingua Franca that specifically addresses a number of the issues that arise with CPS design. Students will be asked to do a small project, which may be an application study in Lingua Franca or an analysis of another framework used for CPS (such as the Robot Operating Systems (ROS) or Adaptive AUTOSAR).

    Outline Syllabus:

    • Cyber-Physical Systems (CPS)
    • Introduction to Lingua Franca
    • Software Engineering Principles for CPS
    • Concurrent and Timed Models of Computation
    • The Role of Determinism
    • Abstraction and Refinement
    • Coordination of Distributed Software
    • The Tradeoff Between Consistency and Availability
    • Introduction to Semantics

  • Prof. Leonardo Mariani

    from University of Milan Bicocca

    Software Testing: From Basic Concepts to Advanced Topics

    Labs will be taught jointly with Diego Clerissi, Davide Ginelli, and Marco Mobilio / University of Milano – Bicocca

    The course covers both the fundamental concepts and some advanced topics related to software testing. The fundamental concepts include the discussion of test adequacy criteria, testing levels, testing processes, test automation and test oracles. The advanced topics includes test generation, debugging, and automated program repair. The teaching method combines traditional classes with labs to directly experience challenges and solutions. The course spans two time frames and there is an assignment to be completed in between the two time frames. The assignment jointly with the participation to the lectures and the labs are valid for the exam to be taken to pass the course.

    Outline Syllabus:

    Introduction to Testing
    Testing Levels and Test Adequacy Criteria
    Functional Testing
    Structural Testing
    Fault-Based Testing
    Test Automation
    Test Oracles
    Test Processes
    Test Regression and Prioritization
    Test Generation
    Testing in the Cloud
    Web testing
    Debugging and Automated Program Repair.

  • Prof. Joost-Pieter Katoen

    from RWTH Aachen University (D) and University of Twente (NL)

    Verification of Probabilistic Programs

    Probabilistic programs feature sampling from probability distributions and the ability to condition values of variables in a program. The latter feature distinguishes modern probabilistic programming languages such as WebPPL, Pyro, Edward, Scenic, from those in the early days describing randomized algorithms.

    Although probabilistic programs are normal–looking programs, reasoning about their correctness is intricate. They do not generate a single output but a distribution over outputs. Whereas a classical program terminates or not, this is no longer true for probabilistic programs.

    They can diverge, but this may happen with probability zero. That is, even if programs terminate with probability one, they may have non-terminating runs.

    Establishing correctness of probabilistic programs needs—even more so than ordinary programs—formal reasoning. In this course, we will introduce probabilistic programs, their formal semantics, elementary decision problems and their complexity, and focus on the deductive verification of such programs.

    Outline course content (subject to changes):

    1. Introduction and WebPPL (2 hours)
    2. pGCL: Syntax and Markov Semantics (2 hours)
    3. Fixed Points and Dijkstra’s Weakest Preconditions (2 hours)
    4+5. Probabilistic Weakest Precondition Reasoning (4 hours)
    6. Termination (2 hours)
    7. Expected Runtime Analysis (2 hours)
    8. Verifying Bayesian Networks (2 hours)
    9. Probabilistic Separation Logic (2 hours)
    10. Towards the Automated Verification of Probabilistic Programs (2 hours)

  • Prof. Ozgur Sinanoglu

    from New York University Abu Dhabi

    Design-for-Trust in VLSI Circuits

    This course covers topics related to security and trustworthiness of electronic hardware. The focus of the course is on the Integrated Circuit (IC) supply chain vulnerabilities and potential remedies in the form of design-for-trust, i.e., proactive techniques employed at the design stage to protect the IC from a variety of supply chain threats. Lectures and in-class discussions on recent research papers cover the following topics:

    Design and manufacturing flow of integrated circuits, testing, and design-for-testability infrastructure (2 hours)

    Integrated circuit supply chain vulnerabilities; hardware Trojans, reverse engineering and Intellectual Property (IP) piracy, counterfeiting, overproduction (2 hours)

    Detection techniques for hardware Trojans and counterfeit chips (2 hours) Design-for-Trust techniques: logic locking, split manufacturing, and IC camouflaging (2 hours)

    Threat models, attacks, and defenses in logic locking (4 hours) Machine learning in the context of hardware security (2 hours) Scan attacks and mitigation techniques (2 hours)

    Fault injection and mitigation techniques (2 hours)

    Hardware security in the context of emerging technologies: random number generators, physically unclonable functions (PUFs) (2 hours)

  • Prof. Matti Tedre

    Matti Tedre

    from Eastern Finland University

    Philosophy of Science

    Course Description:

    This course looks at the philosophy of science from the viewpoint of computing.  In this course we pose concrete, commonsensical, specific, and well-defined questions about the nature of science, how science should be done and how it is done, and how can one best explain and understand the nature of science.  Our approach is a modern “naturalistic” approach to the philosophy of science in the sense that we are not going to speak much about how science should ideally be done, but we are going to focus on how it is actually done. As this course is aimed at people in computing disciplines, the examples will mostly be from the field of computing.  We will analyze science in terms of philosophy of science and sociology of scientific knowledge. We are also going to talk about the subject matter of science in the context of computing’s disciplinary debates – that is, what kinds of things do computer scientists study, how certain can we be about our results in computer science, and are our findings like “discoveries”, “laws”, or “products”.

    More specifically, the questions in this course include epistemological questions such as “What is scientific knowledge and (how) is it different from beliefs and assumptions?”, “How can one differentiate between knowledge and beliefs in science?”, “Can (computer) scientists know some things with certainty?”, “Are there things in science that cannot be proven (with certainty)?”, “What is progress in (computer) science?”, “Are new algorithms or programs progress?”, “How does new knowledge about computing become a part of commonly held knowledge about computing?”, and “Are there laws in computer science?”. We also discuss methodological questions specific to computing, such as “How do computer scientists work and how should computer scientists work?” and “Do (should) computers scientists prove formulas like mathematicians do, build things like engineers do, or test hypotheses like natural scientists do?”. And we also talk about ontological questions such as “What kinds of things (if any) in computer science are universal, or objective, or timeless?”.

    Note that this course does not discuss the ethics of science, the philosophy of mind, artificial intelligence, or specialized topics in the philosophy of science.

    For postgraduate (PhD) students this course offers perspectives into one’s own research topic/field, helps to locate one’s work within the larger enterprise of science as well as computer science, lays a philosophical foundation of one’s work, and sheds light on one’s own research paradigm (why do we work as we do, how do our results relate to the broader intellectual landscape, what do our results mean, what is the product of our work and research?).  This course also offers an overview of the variety of things computer scientists work with, helps to understand different kinds of research in computer science, and offers insight into the debates about what computer science is and what computer scientists do.

    Methods

    The course is organized around individual on-line work, face-to-face lectures, workshop presentation of students’ individual work, and final essay.  The workshop is mandatory, as it includes presentation of one’s work to the audience as well as critical opposition of other participants’ reports.