The following information concerns UPB students interested in
Candidates will be pre-selected by the UPB staff; if you are interested, please contact Prof. Valentin Cristea or Prof. George Candea. Subsequently, candidates will also be interviewed by EPFL staff. Some diploma project ideas are listed below. For internships at EPFL, there exist additional topics, which require an initial period of developing hands-on in-person experience with our tools.
Prerequisites: C/C++ programming, low-level systems programming, OS architecture Contacts: Volodymyr Kuznetsov, Vitaly Chipounov
Cloud9 is an automated software testing tool that parallelizes its analysis on many shared-nothing machines, thus tapping into the vast amount of computing resources available in today's clusters and cloud environments. While the testing process itself is automated, the work of setting up, monitoring, and extracting the results from the cluster is still a manual process, involving many scripts and low-level system administration. The goal of this project is to write a unified web interface for controlling the launch of testing jobs (e.g., create testing experiments, set up priorities), the allocation of cluster nodes to jobs (add/remove nodes), and monitoring the performance of the cluster and its workload (show live updates of generated test cases, bugs found, etc.). The web application is aimed at cluster administrators or power users who use Cloud9 inside their organization. Prerequisites: Web technologies, distributed application development. Contact: Stefan Bucur Web Interface for Device Driver Testing
Device drivers are the plague of modern software. Consumers have no idea whether the driver that comes with the latest gadget they bought is trustworthy or not. Worse, there is no independent service that would allow them to thoroughly check a driver's reliability. Your goal will be to create such a service by interfacing with DDT, our automated testing tool for binary closed-source device drivers. On the website, consumers should be able to upload their drivers and get a test report summarizing all the bugs found as well as the steps to reproduce them. The challenges include automating the upload process, generating understandable test results, scaling to many clients, and coming up with metrics for grading a driver's reliability. Prerequisites: Web technologies. Contacts: Vitaly Chipounov, Volodymyr Kuznetsov. Controlling Resource Contention in Software RoutersSoftware routers, such as Routebricks, run on modern commodity servers and enable the fast deployment of new, sophisticated kinds of packet processing applications without the need to buy and deploy expensive new equipment. Colocating multiple applications on the same hardware infrastructure results in contention for shared resources, such as last-level cache, interconnect buses, NICs, etc. This leads to inefficient usage of the hardware resources and, most importantly, lack of predictable performance and lack of any sort of performance guarantees. The aim of this project is to develop a cache partitioning system for the widely used Click modular router in order to control the cache sharing. Contact: Mihai Dobrescu Static Analysis of Self Modifying CodeSelf modifying code is a popular method of malware authors to evade detection. It can be found in metamorphic viruses and shellcodes, but also in commercial protection engines. To date, no tool can deal with self modifying code without actually executing it (in an emulator, sandbox, ...). The goal of this project will be to extend our existing purely static analyzer Jakstab to reason about self modifying code. Jakstab explores the state space of binary programs by abstract interpretation, disassembling required instructions on the fly. Challenges will be to make Jakstab disassemble instructions directly from the abstract state space and to identify and support other possible requirements, such as a model of processor pipelines. Prerequisites: Experience with large Java projects, x86 assembly, abstract interpretation. Contact: Johannes Kinder Bug AnalyticsHow can we leverage vast amounts of bug data to improve our software systems? The objective of this project is to (semi)automatically research the data available in bug-tracking systems (bugzilla, etc.) and gather insights about how this information can be better used to improve reliability. One objective is to obtain a taxonomy of software bugs and their impact. Another objective is to reproduce some of these bugs and evaluate DSLab's existing tools against them. Finally, the ultimate objective is to propose better ways to collect bug information and identify ways to more deeply understand this data in an automated way, using "bug analytics". This project will give you a deep understanding of which software bugs are most relevant in the real world, and you will get to hack on our existing tools and platforms. An advanced version of this project would also look at the difference between "real-world code" vs. "lab code" and how these differences influence the effectiveness of automated testing tools and constraint solvers. The goal is to obtain insights to build better testing tools. Prerequisites: C/C++ programming, scripting, basic operating systems knowledge Contact: Baris Kasikci |
