With the increasing integration of software in social structures, such as education and health, maintenance (e.g. debugging) of large software projects is becoming increasingly important. To this end, it is necessary to organize the source code into communities of artifacts (e.g. methods in classes, classes in packages, packages in libraries) to fa cilitate understandability and ease-of-navigation across implemented functionalities. If artifacts are organized into graphs whose edges reflect their dependencies, there ex ist commonly accepted software engineering principles of what constitutes high-quality source code organization, such as high connectivity of artifacts within groups and loose connectivity with artifacts of other groups. In this dissertation, we tackle the problem of automated reorganization of source code entities to optimize measures quantifying source code community organization quality. To this end, we apply community ex traction methods on dependency graphs. Our main hypothesis is that the existing hierarchical organization of source code comprises fragments of the optimal organiza tion and thus we use it as a first approximation that we refine with graph filters. This type of semi-supervised technique is compared to existing greedy optimization and un supervised genetic optimization approaches across 10 popular software projects. We find that, given a permutation of the ideal organization provided by developers, our approach derives the community organization closest to the ideal one. Additionally, it runs in near-linear times with respect to the number of dependencies that enable its application on dependency graphs of large projects.