You will need one of two things or both.
- A theoretical model of grade probability distribution already verified against data that contains the features listed
- A data set mapping the features listed to grades (labels) for training an artificial network
The features can be specified more formally
- Chosen topic --- from a finite list of topics, encoded by integer (numbered strings)
- Performance --- low, medium, or high --- it is not clear from where this judgment comes, but that would need to be clarified and also included in either the verified theoretical model or among the features of the training data
- Does a student work? --- hours per week --- note that the flexibility of the schedule is not as critical as the hours of the 168 hours of each week not available for sleep, self-care, class time, or study
- Have a student ever gotten through a add course? --- binary --- this question is unclear in its current phrasing
- Grade --- converted to numeric value from 0.0 to 4.0, which can be represented as an integer from 00 to 40
The difficult part will be finding either the verified theoretical model or the data set for training or both.
If a verified theoretical model is found, apply a gradient descent implementation to tune that model, which is a statistics and conversion problem only partly related to AI and machine learning. Otherwise using a model free artificial network will likely allow you to reach your objective. A simple feed forward network with gradient descent and back-propagation and three layers should suffice.
There are many examples in Python, Java, and other languages available online, usually in conjunction with a library that the examples leverage for computation and instructions on how to install the software. There are other questions and answers in this forum that explain what books to buy to get started. In fact, there is a tag specifically for that purpose: https://ai.stackexchange.com/questions/tagged/getting-started.