Topics for Praktikum Implementation of Programming Languages

Moderator: Automated Software Engineering

Benutzeravatar
ericbodden
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 243
Registriert: 5. Apr 2010 19:06

Topics for Praktikum Implementation of Programming Languages

Beitrag von ericbodden » 27. Mär 2012 09:29

I will be offering the following topics for the lab Implementation of Programming Languages SS2012:
http://www.stg.tu-darmstadt.de/teaching ... dex.en.jsp

Parallel static whole-program analysis

Soot (http://www.sable.mcgill.ca/soot/) is one of the most widely used program-analysis frameworks for Java, both in academia and industry. Recently, we have implemented a so-called IFDS solver that allows users to rapidly implement entire whole-program analyses. Task of this lab will be to parallelize this algorithm implementation so that it can be run efficiently and correctly on multiple cores. In the past, researchers have already designed a parallel version of the IFDS algorithm for Scala's actor framework (see http://www.springerlink.com/content/6074w16m88q51702/). Your task in this project will be to find and implement an appropriate design for pure Java. In this lab students will learn (1) how to use state-of-the-art tools for Java program analysis, (2) how to implement program-analysis algorithms and (3) how to use Java's concurrency APIs. (1-3 students)

A JavaScript frontend for Soot

Soot (http://www.sable.mcgill.ca/soot/) is one of the most widely used program-analysis frameworks for Java, both in academia and industry. Soot analyzes Java programs by first transforming those programs (given in the form of source code or bytecode) to an intermediate representation (IR) called Jimple. This IR looks similar to Java source code, but only contains very simple statements that, unlike in Java, are never nested. All control-constructs are expressed as conditional or unconditional gotos. This simplicity of the language makes it very easy for programmers to express static program analysis. Any Java program can be translated to Jimple and the other way around---the translation is complete. Task of this lab will be to design and implement a JavaScript frontend for Soot, i.e., a mechanism that will allow Soot to also process JavaScript source code. This code is to be parsed and converted into equivalent Jimple code. Students may use existing open-source JavaScript parsers for this purpose. In this lab students will learn (1) the syntax and semantics of JavaScript, (2) how to use parsers, and (3) how to use state-of-the-art tools for Java program analysis. (1-3 students)

An IFDS-based information flow analysis for Java

Static information-flow analysis determines insecure information-flow in a piece of software by analyzing this software's code. The analysis generally tries to find so-called sources of secret information from which information can leak to certain pre-determined "sinks". Soot (http://www.sable.mcgill.ca/soot/) is one of the most widely used program-analysis frameworks for Java, both in academia and industry. Recently, we have implemented a so-called IFDS solver that allows users to rapidly implement entire whole-program analyses such as information-flow analyses. Task of this lab will be to implement an information-flow analysis using Soot. In the past, researchers have implemented an IFDS-based information flow analysis for JavaScript; students should be able to reuse many ideas of this implementation (see http://dx.doi.org/10.1145/2001420.2001442). The implemented analysis is to be evaluated on some security sensitive real-world Java program such as a crypto library. In this lab students will learn (1) how to design and implement information-flow analyses, (2) how to use state-of-the-art tools for Java program analysis and (3) how to find and report information-flow violations in real-world programs. (1-3 students)
-- Eric

Zurück zu „Automated Software Engineering“