Best Practices For Teaching Data Structures And Algorithms