## 3 Material and Method  
We propose using advanced natural language processing techniques to design and implement a recommender that provides additional material and activities to reinforce the study of topics that students find difficult. Our case study focuses on the course of Data Structures and Algorithms, which is taught in two degrees of Computer Science at the Universidad Nacional de Educacion a Distancia (UNED), the largest distance learning university in Spain. The course includes advanced data structures and strategies for algorithm design and schemes, and is part of the second year of the degrees. The data structures include _hash tables_, and also _graphs_ and _haeps_, which are later used in the implementation of some algorithmic schemes. The algorithmic schemes included are _greedy_, _divide and conquer_, _dynamic programming_, _backtracking_, and _branch and bound_. Each data structure may include other relevant associated topics. In some cases, these topics are related to implementation aspects (adjacency matrices and adjacency lists associated to graphs). They may be related to properties and applications, such as spanning trees, connected components, and articulation points, also related to graphs. The presentation of each scheme is illustrated with some well-known algorithms. Thus, _Prim_ and _Dijkstra_ algorithms are studied in the greedy scheme, _quicksort_ and _mergesort_ in divide and conquer, and the _Floyd algorithm_ in dynamic programming.  
The Data Structures and Algorithms course has a virtual learning environment where students access study resources, including theoretical content, exercises, and course scheduling. The course also features a discussion forum where students can raise questions related to course content for resolution by fellow students or instructors. The discussion forum is actively moderated by teaching assistants, ensuring that communication remains respectful, informative, pertinent, and accurate. Whenever a student provides an incorrect response or when queries go unanswered, the teaching assistants promptly step in to provide accurate information.  
The problem is stated as follows: given a query posed by a student in the discussion forum of the course, concerning a given learning concept, the recommender will be able to make two types of recommendations: first, the recommender will point out to other discussion threads where students have posed similar questions; and second, the recommender will propose activities from a repository of past tests to practice and improve understanding of such concept and other similar concepts that help the student in her final goal of succeeding in the final test. For example, if a student posts a question about the Hamiltonian paths problem and its solution using the backtracking scheme, our recommender system may suggest other discussion threads about the Hamiltonian paths problem, as well as exercises from the past tests database that cover this problem or other similar problems that are solved using the same scheme, such as the graph coloring problem. By leveraging the power of natural language processing and past data, our recommender system is expected to improve students' learning outcomes and reduce the workload of the teaching team by automating the process of answering frequently repeated questions.  
Figure 1 illustrates the recommendation process, which consists in three main steps: first, the query poses by the student in the forum is pre-processed, as well as the repository of past test activities and all posts from past conversations in the discussion forum. Next, the similarity between the query and the different activities and posts is calculated. Finally, activities and posts are ranked according to their similarity to the query. Each step is explained in detail below.