Changes between Version 15 and Version 16 of SoC2015


Ignore:
Timestamp:
Feb 20, 2015, 12:52:10 AM (8 years ago)
Author:
Niall Douglas
Comment:

Added the prearranged projects

Legend:

Unmodified
Added
Removed
Modified
  • SoC2015

    v15 v16  
    223223The following students successfully sought out mentors and prearranged GSoC project proposals. They have also proven their programming competency by supplying C++ library code they have written for inspection.
    224224
    225 1. Damian Vicino. Topic: Safe Numerics. Mentor: Robert Ramey.
    226 
    227 2. Louis Dionne. Topic: Heterogeneous collections (Boost.Hana). Mentor: Joel Falcou.
     225== 1. Safe Float (boost::safe_numerics<float>) (Damian Vicino mentored by Robert Ramey) ==
     226
     227=== Background ===
     228Arithmetic operations in C++ are NOT guaranteed to yield a correct
     229mathematical result. This feature is inherited from the early days of C.
     230The behavior of int, unsigned int and others were designed to map closely
     231to the underlying hardware. Computer hardware implements these types as a
     232fixed number of bits. When the result of arithmetic operations exceeds
     233this number of bits, the result will not be arithmetically correct. In the
     234past 2 years, the library safe_numerics was developed in Boost Incubator
     235with a focus in safe_integer operations. Now, we are interesting in
     236pushing the project forward to include the floating point arithmetics, an
     237important milestone for the project.
     238
     239=== GSoC project proposal ===
     240To design a drop-in replacements for float and double (safe<float> and
     241safe<double> which guarantee that, when used in expressions in a C++
     242program, no incorrect arithmetic results will produced. To implement the
     243safe_numerics<float> and safe_numerics<double>. To write unit and
     244functional regression testing for all of the above to a 100% code coverage
     245level. To write documentation to Boost quality levels for the new
     246container classes, including time and space complexity guarantees and
     247exception guarantees for each API and each use of each API.
     248
     249
     250== 2. Improve associative data structures in Hana (Louis Dionne mentored by Joel Falcou) ==
     251
     252=== Background ===
     253Hana[1] is a library providing data structures and algorithms working on
     254heterogeneous objects. It is basically a standard library where you would
     255replace std::vector by std::tuple (which makes it quite different to the
     256standard library). The project was started by Louis Dionne as part of GSoC
     2572014.
     258
     259There is still room for improvement in many parts of the library. Some of
     260the most lacking parts are the associative data structures, Set and Map,
     261which provide a limited interface and are implemented using tuples and
     262linear searching internally, which is inefficient. It would be great to
     263have a new implementation for those data structures, and also to explore
     264how the interface of these structures could be improved.
     265
     266
     267=== GSoC project proposal ===
     268This project requires good knowledge of:
     269
     270* Prior art in C++ template metaprogramming (MPL, Fusion, MPL11 and many
     271  other smaller libraries) - C++11/14 template metaprogramming
     272  implementation techniques - Functional programming; Hana is functional in
     273  nature and most concepts used in the library
     274  come from there. To design a new interface for the associative data
     275  structures, you must be able to navigate through this.
     276
     277The project is easy to specify:
     278
     279* Find what functionality is missing in the associative data structures -
     280  Find a way to incorporate the new functionality in the current concepts,
     281  or modify those concepts to improve their generality and consistency. -
     282  Explore possible implementation techniques for Maps and Sets. Benchmark
     283  the compile-time (and runtime) performance.
     284
     285* Re-implement those data structures, with unit tests, examples and
     286  documentation.
    228287
    229288
    230289= Mentors who may be available for GSoC in 2015 =
    231290
    232 * David Bellot, Boost.uBLAS
    233 * Kyle Lutz, Boost.Compute
     291== 1. Kyle Lutz, Boost.Compute ==
    234292
    235293