Boolean Functions: With Engineering Applications and Computer Programs