data structures and algorithms 4359