The following is a list of puzzles, games, and challenges related to different fields within computer science, because programming and learning doesn't have to be boring!
Solve programming problems given specifications and constraints, usually involving algorithms, data structures, and general problem solving
Hack into vulnerable programs, websites, or servers to retrieve flags. Involves many areas of hacking including: binary exploitation, forensics, cryptography, web hacking, reverse engineering, etc.