Which methods or algorithms to develop a learning application?
even though that's not really AI, the easiest way to do that would probably be to put coefficients on each question

e.g. your question would have something like

grammar=0.55
vocabulary=0.45
if(won){
  success=-1
}else{
  success=1
}


the lower the level, the less questions of this type will appear

at the end of the level, you sum each question times how much did the player succeed 

player.level is a real number array 

for each question{
   player.level["grammar"]=player.level["grammar"]+question.grammar*question.success
   player.level["vocabulary"]=player.level["vocabulary"]+question.vocabulary*question.success
}


then when you initialize the level, generate the questions according to the player's level
choice is a random real number between 0 and sum of all player.level (offseted to be above 0)

for each player.level{
   if choice&gt;player.level{
      choice=choice-player.level
   }else{
      return question_type=player.level.type
   }
}


though a "true" AI can make the same or better choices of questions, it will probably be slower, and require more data than a simple algorithm like this one.