Superpawn, (Super Pawn)
an UCI conform, experimental open source chess engine by John Byrd, written in C++, licensed under Creative Commons 3.0 Attribution Unported, and first released in January 2015 . Superpawn comes with a single C++ source file  , requires a C++11 compiler, and provides a CMake implementation to target builds using Microsoft VC 2013, GCC 3.8.2 (or higher) or Clang compilers, to run Superpawn on Windows, Linux or Mac OS respectively.
The program features a principal variation search with transposition table, and a basic material and mobility evaluation, considering middlegame and endgame piece-square tables, tapered by current game stage. The board is represented as array of 64 pointers to piece objects. A piece is an abstract class with pure virtual PieceValue and GenerateMoves methods, implemented in the concrete, derived piece classes including NoPiece for empty squares.
Superpawn is an excellent example of the “objects gone wild” style of programming, in which Everything Is An Object. Even the pieces themselves are objects; they know how to move, capture, etc. This of course slows down the move generation and evaluation process immensely, making this program irredeemably slow in tournament conditions. However, its logic is easy to follow and extend as you see fit.