I have a strong understanding of the fundamental concepts of programming in relation to problem solving, basic and abstract data types, and object oriented programming. This understanding is supported by a strong understanding of Boolean logic and truth tables, recursion, and graph theory. I found this knowledge to be especially useful when it came to understanding abstract data types such as dynamic arrays, linked lists, trees and graphs, binary search trees, hash tables. They additionally helped me perform complexity analyses of data structures.