3.3.1 Logic gates and circuit design