A concept map is essentially a graph where directed edges indicate the relations between the nodes (sometimes also a hyper-graph having edges with more than two nodes). The idea of this project is to use concept maps to build an advanced desktop environment (beyond just fancy features). A node in the concept map corresponds to a file and files can be grouped via a single hyper-edge into belonging to a sub-set of the graph as a generalisation of directories. In this scheme a file can belong to more than one of these subsets. The user can add additional nodes to represent other relationships between files (either only between nodes belonging to the same subset or adding new edges may create new subsets). Based on the subset relations a concept of collapsing or expanding these subsets in the view can be developed to create a hierarchical view rather than always viewing the complete graph. Part of this project is to explore how to best utilise concept maps for a desktop. A suitable representation for the concept map has to be developed, basic operations on the concept map (subset grouping, adding edges and nodes, deleting edges/nodes, creating subsets, etc.) should be provided and a 2D or 3D rendering engine for these graphs is required. Note that the initial concept map could simply be the file system tree or part of it. As a graphics project 3D rendering of the graph, possibly with simply physics simulations (see BumpTop) can also be considered (there is potential to create two separate projects from this: concept map and 3D rendering/editing of graphs or a 3D Desktop environment). This project requires good programming skills in a language of your choice (C/C++ probably being best) and requires a good understanding of spatial data structures, graphs, and possibly databases (to store the graph data structure, etc). It should be implemented under Linux or the GNU Hurd under the GPL V3.