Ideas Page for
Computational Science and Engineering at TU Wien
Google Summer of Code 2012
supported by the Institute for Microelectronics


About the Project

See the main Computational Science and Engineering at TU Wien page for an overview of our activities.

Ideas

In the following we give a list of ideas for our project. More information on the individual ideas can be in the Details section. This list is meant to be a starting point that essentially reflects our main ideas. Since we prefer to assign tasks based on the individual students interest and strengths, we are open for your own ideas.

Overview of available project ideas:

Detailed Project Description

dlvhex: Interactive Shell

Description

dlvhex Interactive Shell

The objective is to design the command set for an interactive shell for using the dlvhex software, and then implement the shell in python. The shell shall provide basic functionality of managing programs and plugins, obtaining models and querying. Interaction could be similar as, e.g., in the python interactive shell (by using python as a shell, the shell itself could be scriptable with python). Reasoning and parsing task related to HEX programs are all accomplished by the existing dlvhex C++ libraries, but they must be wrapped and made accessible to the shell. We envision an implementation in python using existing C++ libraries available on SourceForge (these libraries might need to be extended for that purpose).

Benefit for the Student

Using and getting acquainted with Artificial Intelligence and Knowledge Representation tools. Being part of an open source research prototype software project. Learning about the integration of python with C++ and about interactive shell programming.

Benefit for the Project

Exploring properties of HEX programs and problems with encodings could be much easier in an interactive shell. Approaches for debugging declarative programs and for visualizing answers of declarative programs could be integrated into the shell.

Requirements

Skills in understanding C++ code and programming python code and version management (SVN) are necessary. Useful would be knowledge about unix shell programming, e.g., knowledge about libreadline or similar.

Mentors

Thomas Krennwallner, Christoph Redl, Peter Schueller

 
dlvhex: Server Mode

Description

dlvhex Server Mode

The objective is to design and implement a network protocol for using the dlvhex software as a server. This server shall allow for loading programs via network and controlling the solver on the server, for example asking for one, some, or all valid answers to a query, or extending the knowledge base and re-evaluating a program. The task of parsing programs and solving them is accomplished by the existing dlvhex C++ libraries. We envision an implementation in python using existing C++ libraries available on SourceForge (these libraries might need to be extended for that purpose).

Benefit for the Student

Using and getting acquainted with Artificial Intelligence and Knowledge Representation tools. Being part of an open source research prototype software project. Learning about the integration of python with C++ and about network programming.

Benefit for the Project

Existing users asked for a server mode interface to dlvhex. It would be a new interface for using dlvhex, which enables using it from any network-capable programming language and systems. This also opens up new use cases for this kind of declarative reasoning.

Requirements

Skills in understanding C++ code and programming python code and version management (SVN) are necessary. Useful would be knowledge about networking (client/server architecture) and familiarity with network protocols, e.g., the FTP protocol and similar interactive protocols.

Mentors

Thomas Krennwallner, Christoph Redl, Peter Schueller

 
MOST: Connector/Driver to various building management systems and building networks (OPC - KNX, BACnet, etc.)

Description

Most connector/driver

Based on an existing driver (OPC DataHub/Gamma scripting), which is used to connect to building networks (KNX, BACnet, etc.) and building management systems (BMS) using OPC DA, an open-source alternative should be implemented using Java. Access to building systems is possible by using the open-source OPC DA client JEasyOPC. In addition, building information should be imported using JDBC compatible databases and files. A simple user interface should be implemented on top. The driver is an essential component of the open-source building monitoring toolkit "MOST".

Benefit for the Student

The student will get hands-on experience with technologies used in building automation. Based on the existing code and concepts, a fast learning curve is likely.

Benefit for the Project

Providing a fully open-source connector to MOST, future vendor independency is enhanced and porting to other building network technologies is simplified.

Requirements

Skills in Java are essential. Expierence with JDBC, UI design with Java and OPC DA (JEasyOPC) is welcome.

Mentors

Robert Zach, Rainer Bräuer

 
MOST: Implementation of a 3D building viewer to improve intuitive building data access

Description

3D building viewer

Based on ifcwebserver or BIMsurfer (open-source "IFC" 3D web-viewer) a 3D building visualization should be integrated into the MOST web-interface (GWT). Possible interaction/"communication" (callbacks from JavaScript into GWT, etc.) between the 3D Viewer and the GWT framework (MOST) should be analyzed. Based on technical possibilities, different use cases (data visualization within the 3D model, drag and drop from 3D model into GWT, etc.) should be implemented. An IFC building model will be provided for testing.

Benefit for the Student

The student will gain valuable knowledge in 3D web-visualization based on WebGL (using WebGL based JavaScript libraries). By improving the MOST web-interface, insight into intuitive user interaction (drag and drop, highlighting, etc.) concepts for building visualization and control is possible.

Benefit for the Project

Implementing 3D visualization of a building model and respective data improves intuitive user interaction in MOST. This allows people to interact with building data like they would do in the real world.

Requirements

Experience with JavaScript and Java/GWT is essential. Knowledge of IFC, CSS, WebGL and relevant libraries (spidergl, scenejs, ifcwebserver, BIMsurfer, etc.) is welcome.

Mentors

Stefan Glawischnig, Regina Appel, Johannes Weber

 
MOST: Implementation of a building data exporter within the GWT based web-framework

Description

Building data exporter

Using the GWT based web-visualization framework of MOST, a building data exporter should be implemented. The MOST web-visualization provides a module based concept. Each use case is a independent module which has its own main menu entry in the web-visualization. Implementation is simplified by extending a generic module. The MOST framework provides various GWT widgets (DragWidget, etc.), data abstraction objects (Datapoint, etc.) and GWT enhancements (DndController, etc.). The exporter should be able to create different file formats (CVS, etc.) based on various rules (only workdays, when zone is occupied, etc.). Example: Export hourly temperature values when zone is occupied from 01.04.2011 to 01.06.2011 on workdays. UI mokups can be provided. Design ideas are welcome!

Benefit for the Student

The student will gain profund knowledge of GWT based user interface design. By using the MOST framework, insight into building data visualization concepts are possible.

Benefit for the Project

Providing a simple interface for building data export improves the usability of MOST for standard skilled users.

Requirements

Experience with Java and GWT is essential. Knowledge of CSS and UI design skills are welcome.

Mentors

Johannes Weber, Regina Appel, Robert Zach

 
MOST: Platform independent building data access using OPC Unified Architecture

Description

MOST building data access

Based on the MOST Java framework an OPC Unified Architecture (OPC UA) Server interface should be implemented. An OPC UA Server toolkit will be provided to simplify implementation. Supporting OPC UA allows various processing (Matlab, Excel, etc.) applications to easily access building data stored with MOST. The OPC UA information model (kind of tree structure to desired information) should be based on the datapoint and zone definitions in the MOST database. For example, the OPC UA "tree" (information model) is build based on zones with datapoints as lead nodes. Methods of the leaf nodes (datapoints) allow data access. The MOST database (datapoints, zones, etc.) is abstracted with a Java framework (DatapointCtrl, ZoneCtrl, etc.). By providing an OPC UA Server toolkit and a Java abstraction layer for building data (datapoints, zones, etc.), implementation is (in the best case) simplified to "connect" building information.

Benefit for the Student

The student will gain knowledge with platform and technology independent building data access. Knowledge with OPC can be valuable in lots of industrial proccessing systems. Using the MOST framework, the student insight into various building data processing concepts.

Benefit for the Project

Providing a platform independent open interface allows various processing applications (Matlab, Excel, etc.) to easily access building data. This leads to many potential use cases (!!) and improves usability.

Requirements

Skills in Java are essential. Expierence with OPC UA and building data abstraction is welcome.

Mentors

Michael Hönisch, Johannes Weber, Robert Zach

 
MoveOnPC: Calibration Utility for Motion Controllers

Description

Move Controllers

To map raw sensor values to proper input data for further processing, the calibration of Motion Controllers is very important. The controller sends its raw calibration data as HID input report, but the detailed data format is now fully known. Also, an utility should be written to calibrate the controller (tumble test) manually on a PC if the calibration data is off. Another task in this project is to develop a tool to collect and analyze calibration data blobs from different controllers (crowdsourcing) and to check if the PS3 calibration utility updates the calibration blob in the controller. Ideally, this project should also include figuring out how to read calibration data via Bluetooth, which does not work yet.

Benefit for the Student

The student will gain knowledge about reading and interpreting raw sensor data. Also, the calibration algorithms should be improved by this project, improving skills in signal processing and filtering.

Benefit for the Project

A well-calibrated sensor is very important for good tracking results. The crowd-sourcing part of calibration data will allow the project to interpret the undocumented, raw data blob format of the controller's calibration data. In addition to that, a manual calibration utility can improve upon the currently-available calibration data, especially in niche use cases with special needs.

Requirements

The student should be proficient in C and know how accelerometers, gyroscopes and magnetometers work and how they can be calibrated to get usable data.

Mentors

Hannes Kaufmann, Christian Schönauer

 
MoveOnPC: Multi-controller Ball Tracking via OpenCV

Description

Move Interaction

The goal of this project is to write a library that can be used to get the 3D positions of multiple PS Move Motion Controllers in space. The camera to be used is a PS Eye camera, but the library should be made so that another camera can be used after calibration (FoV, etc..). The library can make use of underlying libraries (such as PS Move API) to determine the perfect sphere color in the current setting. At least two spheres should be detected and correctly mapped to 3D coordinates. The resulting data should be in a format that can be easily combined with the inertial sensor data from the controller.

Benefit for the Student

Work on a real-world use case for OpenCV with a pre-defined hardware environment (PS Move Motion Controller + PS Eye Camera). Use of contextual information (room lighting, surrounding) to determine the best sphere colors.

Benefit for the Project

Good 3D tracking is important for many advanced use cases that involve the PS Move Motion Controller as input device. Good visual tracking is important for the quality and accuracy of the tracking when combined with sensor data.

Requirements

Understanding of Computer Vision, proficient in C/C++, OpenCV experience.

Mentors

Hannes Kaufmann, Annette Mossel

 
MoveOnPC: Linux Kernel and Bluez support for PS Move Motion Controllers

Description

Move Controllers

The pairing of PS Move Motion Controllers with Linux-based systems currently requires some workaround (manual modification of Bluez' internal data structures or disabling HID support in Bluez and communicating over raw L2CAP sockets). Ideally, the PS Move Motion Controller should be detected and paired with Bluez without problems, and then be exposed as HID device to the rest of the system.

Benefit for the Student

Getting involved in two very wide-spread open source project (the Linux Kernel and Bluez) and working with the respective upstream communities to get the patches reviewed and accepted.

Benefit for the Project

Support for the PS Move Motion Controller in the Linux Kernel and in the Bluez project will make the setup of PS Move easier on Linux-based Desktop systems and also on mobile platforms that are based on Linux and Bluez, such as Maemo, MeeGo and Android. Also, it will allow combination of the PS Move with embedded Linux-based devices such as the Raspberry Pi.

Requirements

Knowledge about the inner workings of Bluetooth and HID. Proficiency in the C programming language. Ideally knowledge about the Linux and Bluez codebases.

Mentors

Hannes Kaufmann, Christian Schönauer

 
MoveOnPC: Input Mapping Utility / Keyboard, Mouse Emulator for PS Move

Description

Move Interaction

The Playstation Move Motion Controller provides 9 buttons (including 1 analog trigger) and three different sensors (accelerometer, gyroscope, magnetometer). In order to make use of the PS Move Motion Controller as input device for legacy applications, and to provide an easy way for developers to add support for the PS Move to their applications, a utility should be developed that will map the buttons to keyboard events for all major OSes (Mac OS X, Windows and Linux). Similarly, the sensor data should be processed in a way that the motion controller can be used as mouse replacement by simply calibrating it manually via pointing it to the center, upper left and lower right corner of the screen and then interpreting the sensor readings as mouse positions.

Benefit for the Student

Learning about processing sensor values to some other representation/space (in this case: screen space) and synthesizing input events (keyboard, mouse) on all major operating systems (Mac OS X, Windows, Linux). Cross-platform GUI development on all these OSes.

Benefit for the Project

The input utility will provide a valuable tool for testing the API/libraries in a real-world application and also provide a demo to show off the possibilities of using the sensor data for end user applications.

Requirements

The student should be proficient in C/C++ and using a GUI toolkit. Ideally, the student should also know about synthesizing input events on Desktop OSes or be ready to learn how to implement this.

Mentors

Hannes Kaufmann, Annette Mossel

 
MoveOnPC: Support for PS3 Sixaxis/DS3 and PS Move Navigation Controllers

Description

Move Controllers

The PS3 Sixaxis controller (also the DualShock 3 controller) also has sensors built-in. Right now, the library does not support these controllers. Moreover, the PS Move Navigation Controller is basically a subset of the Sixaxis that is marketed together with the PS Move Motion Controller. For some use cases, the Navigation Controller can be used in combination with the PS Move Motion Controller for more input/control for a given application. This project will be about adding support for the PS3 Sixaxis and Navigation Controller to the library so these can be used together with the Move Motion Controller.

Benefit for the Student

Developing important parts of a library and designing the API for it. Testing the implementation and possibly creating an example application to demonstrate the implemented library functions.

Benefit for the Project

Having support for the Sixaxis and Navigation Controller will make the library more accessible and attractive for developers looking for an all-in-one solution to motion input. The additional analog stick(s) of the controllers will add additional degrees of control for the input framework.

Requirements

Proficient in C/C++. Experience with library/API design.

Mentors

Hannes Kaufmann, Christian Schönauer

 
nomacs: RAW Loader

Description

nomacs RAW loader demo

nomacs is currently able to load RAW files from Nikon, Canon and Sony cameras. LibRaw is used for the RAW development which provides easy access to the data itself and important metadata such as the gamma coefficient. The demosaicing is currently based on the OpenCV Bayer pattern interpolation which is a fast, but simple method. No color correction, etc. is done at the moment as further steps. The student should investigate an improved raw loader, comprising a demosaicing method that reduces noise, color correction, etc.

Benefit for the Student

The student will gain experience in state-of-the-art demosaicing algorithms and computer vision. Moreover, basic knowledge of image processing libraries such as LibRaw or OpenCV will be developed.

Benefit for the Project

The RAW loader of nomacs will be improved which results in a more satisfying visual appearance of RAW images.

Requirements

Good skills in object-oriented C++ are required accompanied by basic experience in computer vision. Qt or OpenCV knowledge would be beneficial.

Mentors

Florian Kleber, Stefan Fiel

 
nomacs: Texture Synthesis

Description

nomacs texture synthesis

The next version of nomacs includes a crop function for images. Cropping and rotating images may result in image regions that are not defined. Currently, these image regions are not filled at all (transparent) or they are filled with a default color. Filling these regions with parts that are replicated from the original image improves the visual appearance. The student should investigate state-of-the-art texture synthesis methods such as Kwatra et al. for a best possible visual appearance of cropped images.

Benefit for the Student

The student will gain experience in state-of-the-art texture synthesis algorithms and computer vision. Moreover, basic knowledge of image processing libraries such as OpenCV will be developed.

Benefit for the Project

Texture synthesis improves the usability of the current crop functionality.

Requirements

Good skills in object-oriented C++ are required accompanied by basic experience in computer vision. Qt or OpenCV knowledge would be beneficial.

Mentors

Florian Kleber, Markus Diem

 
nomacs: Batch Processing

Description

Currently, nomacs supports simple file and directory access such as read, write, update or thumbnail preview. However, simple batch processing would improve nomacs file management. The task is to implement a GUI for file filtering and batch processing. The filtering should be applicable for file names, extensions and exif tags. In addition a batch editing tool should be implemented that allows for editing exif tags of multiple files, renaming multiple files or converting files to other image formats (e.g. converting multiple files from *.nef to *.jpg)

Benefit for the Student

The student will gain experience in Qt GUI development. Moreover, basic knowledge of image processing libraries such as Exiv2 or OpenCV will be developed.

Benefit for the Project

File handling of nomacs will be improved. Thus, nomacs can be used to manage large amounts of image data.

Requirements

Good skills in object-oriented C++ and Qt are required.

Mentors

Markus Diem, Stefan Fiel

 
pi3diamond: Open source hardware for controlling quantum physics experiments
pi3diamond Eye Catcher

Description

pi3diamond is a collaboration between the University of Stuttgart and TU Vienna with the aim of developing open source hard- and software to control quantum physics experiments. In particular we investigate single quantum defects in diamond. The fast hardware is based on configurable digital logic consisting of FPGAs (field programmable gate arrays). The software for the data preparation and readout is programmed in Python. Currently a high-speed digital pulse generator with a resolution of 2 nanoseconds exists. Furthermore a time-to-digital data acquisition system was realized with a resolution of 80 picoseconds. We now plan to expand the available designs with a fast analog pulse system based on digital-to-analog converters. Furthermore we will include analog-to-digital functionality in order to sample analog signals.

Benefit for the Student

Get experience with fast digital electronics and FPGAs.

Benefit for the Project

Expand the project with analog input/output hardware.

Requirements

A good understanding of digital electronics. Knowledge of Verilog and Python are recommended but not required.

Mentors

Johannes Majer, Tobias Nöbauer

 
ResK: Combining the RPI and the LU algorithms

Description

Resk Eye Catcher

RecyclePivotsWithIntersection (RPI) and LowerUnits (LU) (described by the mentor in detail in a 2011 paper in CADE, the Conference on Automated Deduction) are currently among the most powerful algorithms for the compression of propositional resolution proofs. We have already empirically determined that it is beneficial to combine RPI and LU sequentially, but the optimal order for the sequential combination is unknown. Therefore, we would like to implement a tighter non-sequential combination of RPI and LU, and to show that it is always better than both sequential combinations in terms of compression rate and speed.

Benefit for the Student

The student will acquire practical experience and be in touch with cutting-edge research in the fields of automated deduction and applied proof theory. He will be mentioned as a co-author of any paper that might benefit from his implementation. He will have the pleasure of programming in the awesome language Scala.

Benefit for the Project

We expect the non-sequential combination to be about twice faster than any of the sequential combinations, because the number of required proof traversals would be cut to half.

Requirements

Moderate skills in Scala or experience with object-oriented programming (e.g. Java, C++,...) or functional programming (e.g. Haskell, OCaml,...) and willingness to learn Scala (don't worry! It is easy!). Experience with data structures for proofs or directed acyclic graphs is a plus, but not necessary.

Mentors

Bruno Woltzenlogel Paleo

 
ResK: Splitting and ReduceAndReconstruct Algorithms

Description

Resk Eye Catcher

The Splitting algorithm (proposed in the 2010 paper "Two Techniques for Minimizing Resolution Proofs" by Scott Cotton in the SAT conference) and the ReduceAndReconstruct algorithm (proposed in the 2010 paper "An Efficient and Flexible Approach to Resolution Proof Reduction" by Simone, Brutomesso and Sarygina in the Haifa Verification Conference) are two alternative algorithms for propositional resolution proof compression. Splitting consists of dividing a refutation into a proof of "a" and a proof of "not a", for some predicate "a", and then recombining these two proofs into a new refutation. ReduceAndReconstruct consists of applying local rewrite rules that are known to reduce the size of proofs. These two algorithms need to be implemented in the ResK framework.

Benefit for the Student

The student will acquire practical experience and be in touch with cutting-edge research in the fields of automated deduction and applied proof theory. He will be mentioned as a co-author of any paper that might benefit from his implementation. He will have the pleasure of programming in the awesome language Scala.

Benefit for the Project

The implementation of these two algorithms will enable a proper comparison of all algorithms and will allow us to combine their strengths.

Requirements

Moderate skills in Scala or experience with object-oriented programming (e.g. Java, C++,...) or functional programming (e.g. Haskell, OCaml,...) and willingness to learn Scala (don't worry! It is easy!). Experience with data structures for proofs or directed acyclic graphs is a plus, but not necessary.

Mentors

Bruno Woltzenlogel Paleo

 
ResK: From Propositional to First-Order Resolution

Description

Resk Eye Catcher

RecyclePivotsWithIntersection (RPI) and LowerUnits (LU) have been developed for propositional resolution proofs only. This means that, so far they can only compress proofs generated by sat-solvers and smt-solvers, but not by first-order automated theorem provers. We would like to generalize our proof data-structures and these algorithms to the first-order case, and to evaluate them on the benchmarks provided by the TSTP library.

Benefit for the Student

The student will acquire practical experience and be in touch with cutting-edge research in the fields of automated deduction and applied proof theory. He will be mentioned as a co-author of any paper that might benefit from his implementation. He will have the pleasure of programming in the awesome language Scala.

Benefit for the Project

Invaluable. :-)

Requirements

Moderate skills in Scala or experience with object-oriented programming (e.g. Java, C++,...) or functional programming (e.g. Haskell, OCaml,...) and willingness to learn Scala (don't worry! It is easy!). Experience with the first-order resolution calculus and unification is necessary.

Mentors

Bruno Woltzenlogel Paleo

 
ViennaMesh: Aggressive Tetrahedral Mesh Improvement
Stellar for ViennaMesh

Description

To further improve the quality of the generated tetrahedral volume meshes the open source tool Stellar should be investigated. The student should investigate the source package and develop an interface for ViennaMesh.

Benefit for the Student

The student will get hands-on experience with a state-of-the-art mesh improvement tool and recognize the importance of code modularity in scientific software.

Benefit for the Project

The unified access to different meshing kernels in ViennaMesh will be enriched by the ability to improve mesh-quality as an optional post-processing step.

Requirements

The student should offer skills in generic programming in C++, such as Traits and Tag Dispatching. Additionally basic understanding of interfacing with external C libraries is required.

Mentors

Josef Weinbub, Karl Rupp
ViennaMesh: Hull Mesh Decomposition

Description

Distributed trabecular bone

For many applications such as the simulation of human bones, a volume mesh is constructed out of a hull mesh. Due to the high complexity of the geometry such as for example on the picture provided to the right, it is of advantage to decompose the hull mesh into smaller segments. Such a decomposition is indicated by the coloring in the figure. Volume meshes are then created in a parallel, distributed manner. The student should provide a C++ interface for a hull mesh decomposition based on simple geometric rules. The decomposed hull mesh then serves as input for a distributed parallel meshing engine as described in the idea "ViennaMesh: Distributed Parallel Meshing of Segments"

Benefit for the Student

The student will gain profund knowledge about hull meshes and learn to design a unified interface. Insight into the key aspects of distributed meshing will be gained.

Benefit for the Project

While a single hull mesh allows for a single volume mesher instance, properly decomposed hull meshes can be run on large computing clusters with hundreds of volume mesher instances in parallel. ViennaMesh will become a valuable tool for large-scale simulations with millions to billions of unknowns.

Requirements

Good C++ skills are required accompanied by some basic experience in generic programming, like Tag-Dispatching. Familiarity with the basic principles of mesh generation is of advantage.

Mentors

Josef Weinbub, Dieter Pahr

 
Your Idea here!
Your idea

Description

We cannot over-emphasize it: Contribute your own, entirely individual idea! There is no need to be shy, every idea is worth a closer inspection.

Benefit for the Student

Works for several weeks on a topic that absolutely fits to his or her interests.

Benefit for the Project

Work that is carried out with passion is generally of high quality. The respective project will certainly benefit.

Mentors

Will be assigned individually.

How to apply

Details on how to apply are given on the Google Summer of Code 2012 webpage. In addition, please use the following application template for the official application for our project:

Your Personal Information

Please give the following information about yourself so that we get an impression about your skillset and contact you in case of questions

  • Name

  • University

  • Field of Study

  • Begin of Studies

  • Expected Graduation Date

  • Degree

  • Homepage or Blog

  • Email

  • Telephone

  • Your Interests

  • Other Commitments between May and August 2012

Your Project Proposal

Please provide the following information about your planned work. It is generally a good idea to get in contact with us (see below) and discuss your ideas prior to submitting the application.

  • Title

    The name of the proposed project.
  • Abstract

    A brief overview of what you intend to do.
  • Detailed Description

    Please specify a timeline with milestones
  • Working Hours per Week

    How many hours per week do you expect to work on your GSoC project on average?
  • Additional Information

    Other resources or relevant information, related projects, etc.

Contact

You can contact us in the following ways:
  • IRC

    Join channel #TU-CSE-SoC at irc.freenode.net
  • Mailinglist

    soc@iue.tuwien.ac.at (subscribe here)

Mentors

In alphabetical order: