Consider doing some language processing using the excellent NLTK library: http://www.nltk.org/
It wasn't on the lists of "wants", but implementing the Raft consensus protocol could be neat too. It was designed to be understandable and implementable. The video is here: https://www.youtube.com/watch?v=YbZ3zDzDnrw. The research paper is here: https://ramcloud.stanford.edu/wiki/download/attachments/1137...