![]() |
Ideas Page for Computational Science and Engineering at TU Wien Google Summer of Code 2012 |
|---|---|
| supported by the Institute for Microelectronics | |
|
|
About the ProjectSee the main Computational Science and Engineering at TU Wien page for an overview of our activities. IdeasIn 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 Descriptiondlvhex: Interactive Shell
Description
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 StudentUsing 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 ProjectExploring 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. RequirementsSkills 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. MentorsThomas Krennwallner, Christoph Redl, Peter Schuellerdlvhex: Server Mode
Description
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 StudentUsing 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 ProjectExisting 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. RequirementsSkills 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. MentorsThomas Krennwallner, Christoph Redl, Peter SchuellerMOST: Connector/Driver to various building management systems and building networks (OPC - KNX, BACnet, etc.)
Description
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 StudentThe 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 ProjectProviding a fully open-source connector to MOST, future vendor independency is enhanced and porting to other building network technologies is simplified. RequirementsSkills in Java are essential. Expierence with JDBC, UI design with Java and OPC DA (JEasyOPC) is welcome. MentorsRobert Zach, Rainer BräuerMOST: Implementation of a 3D building viewer to improve intuitive building data access
Description
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 StudentThe 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 ProjectImplementing 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. RequirementsExperience with JavaScript and Java/GWT is essential. Knowledge of IFC, CSS, WebGL and relevant libraries (spidergl, scenejs, ifcwebserver, BIMsurfer, etc.) is welcome. MentorsStefan Glawischnig, Regina Appel, Johannes WeberMOST: Implementation of a building data exporter within the GWT based web-framework
Description
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 StudentThe 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 ProjectProviding a simple interface for building data export improves the usability of MOST for standard skilled users. RequirementsExperience with Java and GWT is essential. Knowledge of CSS and UI design skills are welcome. MentorsJohannes Weber, Regina Appel, Robert ZachMOST: Platform independent building data access using OPC Unified Architecture
Description
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 StudentThe 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 ProjectProviding 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. RequirementsSkills in Java are essential. Expierence with OPC UA and building data abstraction is welcome. MentorsMichael Hönisch, Johannes Weber, Robert ZachMoveOnPC: Calibration Utility for Motion Controllers
Description
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 StudentThe 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 ProjectA 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. RequirementsThe student should be proficient in C and know how accelerometers, gyroscopes and magnetometers work and how they can be calibrated to get usable data. MentorsHannes Kaufmann, Christian SchönauerMoveOnPC: Multi-controller Ball Tracking via OpenCV
Description
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 StudentWork 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 ProjectGood 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. RequirementsUnderstanding of Computer Vision, proficient in C/C++, OpenCV experience. MentorsHannes Kaufmann, Annette MosselMoveOnPC: Linux Kernel and Bluez support for PS Move Motion Controllers
Description
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 StudentGetting 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 ProjectSupport 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. RequirementsKnowledge about the inner workings of Bluetooth and HID. Proficiency in the C programming language. Ideally knowledge about the Linux and Bluez codebases. MentorsHannes Kaufmann, Christian SchönauerMoveOnPC: Input Mapping Utility / Keyboard, Mouse Emulator for PS Move
Description
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 StudentLearning 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 ProjectThe 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. RequirementsThe 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. MentorsHannes Kaufmann, Annette MosselMoveOnPC: Support for PS3 Sixaxis/DS3 and PS Move Navigation Controllers
Description
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 StudentDeveloping 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 ProjectHaving 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. RequirementsProficient in C/C++. Experience with library/API design. MentorsHannes Kaufmann, Christian Schönauernomacs: RAW Loader
Description
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 StudentThe 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 ProjectThe RAW loader of nomacs will be improved which results in a more satisfying visual appearance of RAW images. RequirementsGood skills in object-oriented C++ are required accompanied by basic experience in computer vision. Qt or OpenCV knowledge would be beneficial. MentorsFlorian Kleber, Stefan Fielnomacs: Texture Synthesis
Description
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 StudentThe 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 ProjectTexture synthesis improves the usability of the current crop functionality. RequirementsGood skills in object-oriented C++ are required accompanied by basic experience in computer vision. Qt or OpenCV knowledge would be beneficial. MentorsFlorian Kleber, Markus Diemnomacs: Batch Processing
DescriptionCurrently, 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 StudentThe 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 ProjectFile handling of nomacs will be improved. Thus, nomacs can be used to manage large amounts of image data. RequirementsGood skills in object-oriented C++ and Qt are required. MentorsMarkus Diem, Stefan Fielpi3diamond: Open source hardware for controlling quantum physics experiments
Descriptionpi3diamond 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 StudentGet experience with fast digital electronics and FPGAs. Benefit for the ProjectExpand the project with analog input/output hardware. RequirementsA good understanding of digital electronics. Knowledge of Verilog and Python are recommended but not required. MentorsJohannes Majer, Tobias NöbauerResK: Combining the RPI and the LU algorithms
Description
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 StudentThe 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 ProjectWe 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. RequirementsModerate 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. MentorsBruno Woltzenlogel PaleoResK: Splitting and ReduceAndReconstruct Algorithms
Description
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 StudentThe 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 ProjectThe implementation of these two algorithms will enable a proper comparison of all algorithms and will allow us to combine their strengths. RequirementsModerate 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. MentorsBruno Woltzenlogel PaleoResK: From Propositional to First-Order Resolution
Description
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 StudentThe 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 ProjectInvaluable. :-) RequirementsModerate 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. MentorsBruno Woltzenlogel PaleoViennaMesh: Aggressive Tetrahedral Mesh Improvement
DescriptionTo 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 StudentThe 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 ProjectThe unified access to different meshing kernels in ViennaMesh will be enriched by the ability to improve mesh-quality as an optional post-processing step. RequirementsThe 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. MentorsJosef Weinbub, Karl RuppViennaMesh: Hull Mesh Decomposition
Description
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 StudentThe 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 ProjectWhile 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. RequirementsGood 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. MentorsJosef Weinbub, Dieter PahrYour Idea here!
DescriptionWe 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 StudentWorks for several weeks on a topic that absolutely fits to his or her interests. Benefit for the ProjectWork that is carried out with passion is generally of high quality. The respective project will certainly benefit. MentorsWill be assigned individually.How to applyDetails 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 InformationPlease give the following information about yourself so that we get an impression about your skillset and contact you in case of questions
Your Project ProposalPlease 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.
ContactYou can contact us in the following ways:
MentorsIn alphabetical order:
|