User Model: Features
Here is a list of some of the features we will want to track as part of the user model:
- Count of number of times each method has been used (across all overloads).
- Count of number of times each overload of each method has been used.
- Method count for each permutation of methods. We can store permutations of length 2, 3 and 4 for example, depending on how much memory we have to store features. To save memory, we will consider all overloads of a method as a single method for this feature.
- Same counts as above but for the entire community instead of a single user. This is useful for normalization in order to see how a user differs from the community as a whole.
- Same counts as above but only in worlds a user shared, rather than in all worlds a user made. I propose we collect the counts every time the user closes the IDE or switches worlds in the IDE rather than only when the user shares a world. That way we get information even if the user does not share the world.
- Same counts as above but only in worlds a user submitted to a challenge, rather than in all worlds a user made.
- Same counts as above but only for methods a user used in a challenge that at least X percent of users also used in the same challenge.
- Same counts as above but for sections of code a user selected during remixing. If a method was used between the start and end bounds of a remix, the user was likely looking at the code and the resulting animation for the method. This measures the user's exposure to the method in other people's code.
- Does the user choose to do a step in a tutorial involving a method without the guidance of the stencils? If the user does not need help from the stencils, they are probably familiar with the method. However, we should be careful because the user may be familiar with finding methods in the list in the left panel and thus choose to forgo the stencil for grabbing a method even if they have not used that method before.
- What is the highest number of views on the community site of any of a user's worlds that use a particular method? If a method is used in a highly viewed world, the user is probably using it well. Even if the number of views for all of a user's worlds is relatively low, it is likely that the user's most viewed world contains the methods that they are the best at. We will probably want to adjust number of views for the amount of time the world has been on the community site so that new worlds are weighted evenly with old worlds.
- Mentor feedback. This is the most direct way to gauge a user's understanding.
While I have described the features in terms of methods, most of the features can be used for action-order-boxes as well. In order to measure the users current understand rather than past understanding, we can exponentially decay the counts by dividing all counts by some constant every fixed interval of time.