Up to the number twelve it is simply a case of learning a sequence.
"one, two, three, ...,twelve"
From 13..19, it's adding the word "teen" after a number but sometimes with certain changes e.g. "thirteen" instead of "threeteen" and "fifteen" instead of "fiveteen". (He even may make this mistake of "nineteen, tenteen, eleventeen..." at first).
Then we must learn that "after nineteen comes twenty". Next 21-29 is just the word "twenty" followed by a single digit.
Then we must learn "after twenty-nine comes thirty".
Next(?) we are taught to count in tens "ten, twenty,..." (the next being like the teens by with "-ty" instead of "-teen".) And we learn that "after ninety comes a hundred."
Now this tricky part (in my opinion) the child learns (or is told?) that "after twenty-nine comes thirty", "after thirty-nine comes forty". From this clever child deduces that "after forty-nine comes fifty". Maybe the child gets stuck on "ninety-nine".
But then the child is able (in principle) to count to a hundred and perhaps even further once it realises that the next numbers you just say "a hundred and" and start from the beginning until you get to 199.
Is there much research done into this? What I'm particularly interested in is which bits are taught, which bits are learned through imitation and which bits are deduced. I am trying to write a program that can imitate this learning.