wiki:SoC2011

Version 5 (modified by Paul A. Bristow, 12 years ago) ( diff )

Added info in CRC examples.

Google Summer of Code 2011

Welcome to the Boost C++ Libraries' home page for Google Summer of Code (GSoc). This page provides information about student projects, proposal submission templates, advice on writing good proposals, and links to information on getting started writing with Boost.

This year Boost is looking to fund work on a number of different kinds of proposals:

  • toolkit-like extensions to existing libraries,
  • finishing or extend sandbox libraries,
  • new data structures and algorithms, and
  • multiple competing proposals for the same project.

For projects involving new or experimental libraries, the process of getting source code "Boost-branded" can take much longer than a single summer. In many cases, it can take much longer than a single year. Even if a library is accepted, there is an expectation that the original author will continue to maintain it. Building a library as part of Boost can easily entail a multi-year commitment. For this reason, we are willing to consider multi-year GSoC projects. However, prospective students must limit the scope of their work to a single summer. We may invite the most successful students to re-apply in 2012.

Requirements

There are only two requirements of students submitting Boost projects:

  • Develop a proposal
  • Complete an aptitude test

These requirements also entail interacting with the Boost community on the development mailing list (http://www.boost.org/community/groups.html), checking source code out of the Boost Subversion repository, programming, and compiling a project.

Developing a Proposal

The Aptitude Test

Projects

The following projects have been suggested by potential mentors. If the descriptions of these projects seem a little vague... Well, that's intentional We are looking for students to develop requirements for their proposals by doing initial background research on the topic, and interacting with the community on the mailing list to help identify expectations.

Boost.Python and NumPy

Boost.Python currently has limited support for NumPy arrays.

Mentors: Stefan Seefeld

Checks & Hashes

Check strings and digits are an invaluable tool for avoiding mistakes in data entry, storage and transmission.

There are many public algorithms available, but not a coherent collection of C++ functions.

The suggested project is to provide such a collection which is in a coherent format agreed by Boosters, fully tested (using Boost.Test) (including tests with various faulty input) and very fully documented to Boost Quality, using Quickbook, Doxygen, and AutoIndex in both html and pdf.

A key target is to get it to a finished state, rather than to deal with all possible check types.

Much code is already available (from Boost and elsewhere) (and I can contribute some to get off to a quicker start) so the project involves gathering it, and testing and documenting rather than much complex coding.

The vexed question of whether to permit Unicode may come up, but I suspect that it would be better to stick to 7 bit ASCII chars: The project might flounder on just this issue alone.

Any platform is OK, but it must use bjam to drive the build process. A good demonstration would be to 'package up' something trivially simple like ISBN or something from Boost Cyclic redundancy checks, preparing a jamfile, some Boost style tests, and some skeleton documentation in Quickbook.

Getting Boosters agreement about acoherent presentation format may be the most challenging part, needing astute interpersonal skills! Perhaps a Google group would be a useful place for this discussion? Views?

Some possible items:

Simple modulo 256 etc check values and digits.

Boost's Cyclic redundancy checks codes http://www.boost.org/doc/libs/1_45_0/libs/crc/index.html

http://www.netrino.com/Embedded-Systems/How-To/CRC-Calculation-C-Code

crc_16_type BISYNCH, ARC crc_ccitt_type designated by CCITT (Comité Consultatif International Télégraphique et Téléphonique) crc_xmodem_type XMODEM crc_32_type PKZip, AUTODIN II, Ethernet, FDDI

MD5 hash http://www.md5.net/

SHA hashes http://en.wikipedia.org/wiki/SHA-1 ...

Luhn algorithm http://en.wikipedia.org/wiki/Luhn_algorithm

Verhoeff algorithm http://en.wikipedia.org/wiki/Verhoeff_algorithm

(These two are used by many of the others below).

European Article numbering EAN Symbol Specification Manual,

Universal Product Code, Uniform Code Council, Dayton, Ohio, USA.

Version of check used by Mastercard, VISA, and most other credit card companies. http://www.beachnet.com/~hstiles/cardtype.html

Generalised to arbitrary radix version allowing any characters (not just digits). Gene Callahan, Dr Dobb's Journal, Dec 1995, 131, 132 & 149. Generating Sequential keys in an Arbitrary Radix.

IBAN International Banking format http://en.wikipedia.org/wiki/International_Bank_Account_Number

http://en.wikipedia.org/wiki/Machine-readable_passport check digit

US driving licence

US Social security numbers

Canadian Social Insurance Numbers

UK National Insurance number

ISBN http://en.wikipedia.org/wiki/International_Standard_Book_Number

ISSN http://en.wikipedia.org/wiki/International_Standard_Serial_Number

POSTNET http://en.wikipedia.org/wiki/POSTNET

Bar codes http://www.dlsoft.com/services/CheckCalc/

http://en.wikipedia.org/wiki/Check_digit#Other_examples_of_check_digits

Chemical abstracts http://en.wikipedia.org/wiki/CAS_registry_number

Vehicle Id Number http://en.wikipedia.org/wiki/Vehicle_identification_number

And there are no doubt many, many more.

Mentor(s): Paul A. Bristow and others?

Note: See TracWiki for help on using the wiki.