Core programming concepts: data structures and algorithms