LARA

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
projects [2019/12/16 15:47]
vkuncak
projects [2019/12/20 19:37]
vkuncak
Line 1: Line 1:
 ====== Available Student Projects in LARA - EPFL Internal Page ====== ====== Available Student Projects in LARA - EPFL Internal Page ======
  
-**(c) 2016-2018 Laboratory for Automated Reasoning and Analysis. All Rights Reserved. Any reproduction of the parts of this page in printed or electronic form requires a prior written permission from Viktor Kunčak.**+**(c) 2016-2019 Laboratory for Automated Reasoning and Analysis. All Rights Reserved. Any reproduction of the parts of this page in printed or electronic form requires a prior written permission from Viktor Kunčak.**
  
-These projects are suitable for both **BSc** and **MSc** projects (including ​ **master'​s thesis** projects) for students in the **IC school** of **EPFL**, and are suitable for both **computer science** and **communication systems** students. Each project is for **one student** in a given semester. Students report directly to  [[http://​lara.epfl.ch/​~kuncak|Prof. Viktor Kunčak]], even if PhD students are involved to help with various aspects of the project. The information on whether the project is available or not is also maintained only by Viktor Kunčak, so please contact him if you are interested in the project. ​+These projects are suitable for both **BSc** and **MSc** projects (including ​ **master'​s thesis** projects) for students in the **IC school** of **EPFL**, and are suitable for both **computer science** and **communication systems** students. Each project is for **one student** in a given semester. Students report directly to  [[http://​lara.epfl.ch/​~kuncak|Prof. Viktor Kunčak]], even if PhD students ​or post-doctoral researchers ​are involved to help with various aspects of the project.
  
 ==== Nature of these projects ==== ==== Nature of these projects ====
Line 13: Line 13:
 **Disclaimer:​** If you have your own idea, feel free to check with us, but please note that we some times cannot accommodate your own project suggestions even if the student is brilliant and the project is excellent. Moreover, even if you select one of the projects listed below, we reserve the right to not offer you the project. By deciding to talk to us you agree that you will not require detailed justification on why we made our negative decision. **Disclaimer:​** If you have your own idea, feel free to check with us, but please note that we some times cannot accommodate your own project suggestions even if the student is brilliant and the project is excellent. Moreover, even if you select one of the projects listed below, we reserve the right to not offer you the project. By deciding to talk to us you agree that you will not require detailed justification on why we made our negative decision.
  
-==== Example ​Projects ====+Several example projects follow. 
 + 
 +==== Parsing and Printing Combinators ==== 
 + 
 +LARA has developed the ScaLL1on parsing framework: https://​github.com/​epfl-lara/​scallion/​ that is used in several course as well as in our research. We have several projects related to advancing this framework, including:​ 
 +  * Implementing new parsing algorithms (such as SLR, LALR, CYK or Earley'​s algorithm) and benchmarking their performance. 
 +  * Offering a unified API for parsing and lexing, such that both the parser and lexer can be described in a single step. 
 +  * Working on the pretty printing capabilities,​ implementing strategies to produce nicely indented and spaced pretty printed code. 
 + 
 +==== Relating Natural Languages to Programming and Specification Languages ==== 
 + 
 +=== Grammatical Framework Controlled Natural Language for Method Return Statements === 
 + 
 +Use [[https://​www.grammaticalframework.org/​|Grammatical Framework]] to design a Controlled Natural Language (a subset of English) that is suitable for describing conditions of multiple return statements of Java methods in a single sentence. The data will be taken from [[http://​leclair.tech/​data/​funcom/​|FunCom]] and [[https://​github.com/​github/​CodeSearchNet#​data|CodeSearchNet]] parallel corpora of method-comment pairs. The designed grammar should generate (simplified) sentences such as "​@return changes or null if the input is empty" for cases like one below (FunCom entry 1339885): 
 + 
 +<code java> 
 +/** 
 +     * Draw a line and add the changes to the undo queue 
 +     * @param line 
 +     * @return the changes. 
 +     */ 
 + 
 +public ChangeSet draw(Collection<​LineSegment>​ line) { 
 +        if (line.isEmpty()) { 
 +            return null; 
 +        } 
 +        ChangeSet changes = new ChangeSet(this);​ 
 +        for (LineSegment ls : line) { 
 +            addSegment(ls,​ changes); 
 +        } 
 +        this.changes.add(changes);​ 
 +        return changes; 
 +    } 
 +</​code>​ 
 + 
 +=== Grammatical Framework Controlled Natural Language for Data Structure Operations === 
 + 
 +Use [[https://​www.grammaticalframework.org/​|Grammatical Framework]] to design a Controlled Natural Language (a subset of English) that is suitable for writing JavaDoc-like descriptions of operations on data structure implementations (such as lists, stacks, queues, hash tables, etc.). For example, the grammar should accept (simplified versions of) descriptions such as this one ([[https://​github.com/​google/​guava/​blob/​master/​guava/​src/​com/​google/​common/​collect/​MinMaxPriorityQueue.java|from MinMaxPriorityQueue of Guava]]: 
 +<code java> 
 +/** 
 +   * Adds the given element to this queue. If this queue has a maximum size, after adding {@code 
 +   * element} the queue will automatically evict its greatest element (according to its comparator),​ 
 +   * which may be {@code element} itself. 
 +   */ 
 +  @CanIgnoreReturnValue 
 +  @Override 
 +  public boolean offer(E element)  
 +</​code>​ 
 + 
 +Note that we would like to represent the structure of natural language sentences (such as "adds the given element to this queue"​),​ in addition to method signature, modifiers and @code elements. 
 + 
 +==== Further ​Projects ====
  
 === Verifying JavaScript === === Verifying JavaScript ===
  
-Design a translation of a clean subset of JavaScript including higher-order functions and (mostly immutable) objects into Leon. Map numbers into Double (apply overflow checks as needed), and enable annotations or special function calls to describe types and contracts.+Design a translation of a clean subset of JavaScript including higher-order functions and (mostly immutable) objects into Stainless. Map numbers into Double (apply overflow checks as needed), and enable annotations or special function calls to describe types and contracts.
  
 Note that `(f:TObj) => e` can be encoded as `TObj(x => e)`. Note that `(f:TObj) => e` can be encoded as `TObj(x => e)`.
Line 27: Line 78:
 === Verify Security Protocol === === Verify Security Protocol ===
  
-Propose a way to model security protocols in Leon and perform a case study to verify example protocols.+Propose a way to model security protocols in Stainless ​and perform a case study to verify example protocols.
  
 === Libraries and Applications in Stainless === === Libraries and Applications in Stainless ===
Line 33: Line 84:
 Develop and specify additional applications and/or libraries for Stainless system, along with their specifications. Examples of applications include parsing algorithms, compilers, email clients, web applications (e.g. a news portal). Examples of libraries include data structures, linear algebra libraries, user interface libraries, as well as sound and graphics processing libraries. Develop and specify additional applications and/or libraries for Stainless system, along with their specifications. Examples of applications include parsing algorithms, compilers, email clients, web applications (e.g. a news portal). Examples of libraries include data structures, linear algebra libraries, user interface libraries, as well as sound and graphics processing libraries.
  
-Among possible directions is to use http://​www.scala-js.org/​ to generate Javascript from Leon. To make such code useful, explore building ​Leon libraries that interface to Javascript APIs (focusing to the extent possible on stateless APIs) and build Leon specifications and stubs that approximate the behavior of these APIs to enable verification and synthesis.+Among possible directions is to use http://​www.scala-js.org/​ to generate Javascript from Stainless. To make such code useful, explore building ​Stainless ​libraries that interface to Javascript APIs (focusing to the extent possible on stateless APIs) and build Leon specifications and stubs that approximate the behavior of these APIs to enable verification and synthesis.
  
-=== Back-End for a Stainless Subset ===+=== Low-Level ​Back-End for a Stainless Subset ===
  
-Port the **GenC** back end from Leon to stainless. This generates C code from a subset of Leon, and evaluate it on case studies for embedded code, IoT code, or fragments of OS code functinality.+Port the **GenC** back end from Leon to Stainless. This generates C code from a subset of Leon, and evaluate it on case studies for embedded code, IoT code, or fragments of OS code functinality.
  
-=== Parsing ​===+=== Embedding Scala into Isabelle ​===
  
-Advance the state of the ScaLL1on parsing framework: https://github.com/epfl-lara/scallion/+Develop an embedding ​of a subset of Scala into Isabelle and enables its verification using Isabelle/​HOL,​ as in the following work: 
 +  * https://www.isa-afp.org/entries/Isabelle_C.html
  
 ===== Contact us ===== ===== Contact us =====
  
 If one of the projects lists sounds interesting and you believe you are a suitable candidate, please do not hesitate to contact us. In your email, please include your CV, the list of your grades, and a description of projects that you did at EPFL or outside of EPFL. If one of the projects lists sounds interesting and you believe you are a suitable candidate, please do not hesitate to contact us. In your email, please include your CV, the list of your grades, and a description of projects that you did at EPFL or outside of EPFL.