Data structure course design labyrinth solving course design