all content taken from Alex Fosdick ese1 course on coursera with completed work by myself.

MIT license