There has been, of late, a significant gain in mindshare being enjoyed by a number of movements which call themselves Semantic $THING. These usually encode some extra meaning in content which otherwise exists. Commonly these are intended to make it easier for computers to read extra meaning into something intended for humans; but sometimes they're intended to allow humans to more easily deal with something meant for computers.
Semantics are, in a very basic sense, how meaning is overlayed onto the syntax of content. I like to think of it as: syntax is the 'how', but semantics are the 'what'.
Here are three Semantic $THINGs which I think you ought to know about:
The Semantic Linefeeds concept is intended to make it easier for humans to grok the delta between two versions of a text file intended to be processed (for example markdown)
The Semantic Versioning concept is intended to make it possible for humans, and software, to understand the relationship between different releases of a piece of software.
The Semantic Commits concept is intended to make it easier to produce changelogs for projects and there's a number of tools built up around this.
If you know of any other useful Semantic $THINGs then why not comment on this article to let others know about them? For homework, I simply suggest you read the above linked articles, and then do a little of your own research around the topics and consider if you might need to take on any of the points in your own projects. I am considering semantic commits for my main projects at the time of writing this article.