https://notecse.blogspot.com/2017/11/cse-217-electronic-device-and-circuits.html