Understanding Large Language Models: A Primer