This was my first assignment for my Systems Programming course in my undergrad - really enjoyed that assignment as the lecturer gave 20% the total assignment mark for you to implement whatever you'd like
I had this assignment too. It seems that writing a shell in a low level language is great for learning multiple important topics in one project: memory management, input/output to terminal, string parsing and process management. Once you understand these things, you are well on the way of becoming a competent programmer.