https://courses.grainger.illinois.edu/ece551/fa2023/secure/HW3_soln.pdf