= GSoC 2010 = == Introduction == LEMON stands for '''L'''ibrary for '''E'''fficient '''M'''odeling and '''O'''ptimization in '''N'''etworks. It is a C++ template library providing efficient implementations of common data structures and algorithms with focus on combinatorial optimization tasks connected mainly with graphs and networks. LEMON is a member of the '''[http://www.coin-or.org/ COIN-OR initiative]''', a collection of [WikiPedia:Operations_Research OR] related [http://opensource.org/ open source] projects. You are free to use it in your commercial or non-commercial applications under very permissive [wiki:License license terms]. The project was launched by the [http://www.cs.elte.hu/egres/ Egerváry Research Group on Combinatorial Optimization (EGRES)] at the Operations Research Department of the Eötvös Loránd University, Budapest in 2003. Up to this point, the developers of the library work at the [http://www.elte.hu/en/ Eötvös Loránd University, Budapest] and at the [http://portal.bme.hu/langs/en/default.aspx Budapest University of Technology and Economics]. For more information about LEMON, you may want to see the tutorial : [http://lemon.cs.elte.hu/pub/tutorial/] == Application Template == == Project Ideas == === `PyLemon` Module === mentor: Alpár Jüttner ==== Background ==== LEMON was written in C++, because this is the only widely used programming language that makes is possible to optimize the running time and memory usage of complex data-structures and algorithms to the extreme. However C++ is a rather complex language, which require deep knowledge of programming, and it's usage is many times complicated. Experimenting with and idea and prototyping solution can be much simpler in modern interpreted and dynamically linked languages. Python is a prominent member of these languages, being easy-to-learn, versatile and extremely productive. Python is also a highly extensible language, which allows programmers to create their own modules in C or C++. ==== The Task ==== The goal is to create a Python interface module to LEMON's data structures and algorithms (written in C++), thus combine the high efficiency of LEMON with the flexibility of Python. You can find the pre-alpha version of this project in our repository: [http://lime.cs.elte.hu/~alpar/hg/pylemon/] ==== Application conditions ==== - knowledge of C++ language - knowledge of Python language or have a tendency to learn it - basic knowledge of graph theory - English language knowledge ==== Benefits of participating ==== By taking part in this project, you can highly improve both your C++ and Python skills. In addition, understanding LEMON is a good opportunity to learn more about network modeling, graph algorithms and combinatorial optimization.