With the increasing advancement of the internet and mobile technology, we are facing the information overload phenomenon. One of the solutions to this information overload is to filter data for the end-users. The information filtering process that provides more personalized results constitutes the main component of a recommendation system. Recommendation systems aim to provide closer results to the users’ preferences. Therefore, if users have access to content that meets their needs, higher user satisfaction would be obtained. One of the domains that can benefit from recommendation systems is helping programmers write more efficient codes and develop faster by presenting them with solutions or code samples relating to their requirements. Although major repositories such as Stackoverflow and GitHub are trying to overcome this problem, there are still considerable shortcomings regarding the problem formulation and personalized results. In this thesis, we propose an on-demand programming assistance system that first helps developers present their problems. Then, through a natural language processing (NLP) module, the platform extracts valuable data from the presented problem. The users’ questions which are asked on our platform form knowledge objects from which a knowledge graph is constructed following an efficient data model created on a graph database. With regard to the extracted valuable data from a knowledge object, the search module provides results from the Stack- overflow and the GitHub APIs. The end-users who ask their questions on the platform can save search results for the future or express their feelings about the results by marking them as useful libraries. Besides, our on-demand programming assistance platform provides a list of developers who have experience in different end-users’ problems. After the interaction, the end-users can mark those developers as experts, and a sub-graph of the ex- pert developers is appended to the knowledge graph. The platform collects 191 real-world programming problems for eight different programming languages via its powerful data model and represents the problem remarkably in the graph database in the form of nodes and edges. The proposed recommendation system relies on the constructed knowledge graph to provide the end-user recommendation list containing libraries and experts from similar knowledge objects in the knowledge graph. Two main recommendation techniques, namely collaborative-based and content-based filtering, are used to create a robust recommendation system. The content-based recommendation method is used when an end-user is new to the system or there are no similar knowledge objects in the knowledge graph. The Jaccard in- dex similarity, a weighting algorithm, and two different similarity measurement algorithms are used to build the mentioned content-based recommendation system. Moreover, when there is enough information regarding the knowledge object, the collaborative method is employed to solve the recommendation problem. The cosine similarity algorithm is utilized to apply collaborative-based recommendations on the knowledge graph. The two main algorithms, the Jaccard index similarity, and the cosine similarity were tested in different situations. First, they were applied in algorithms’ standard forms, second with the proposed optimized form via gaining benefits from auxiliary data on the knowledge graph. These auxiliary data are nodes and edges, which help provide more filtering on the results. The proposed method brings more accurate results in comparison with standard baseline algorithms.