From my experience working with people learning programming, many students have a fear of linked list and trees. They buy coding books and practice problem sets about linked list and trees.<p>Little do they know (a few years down the road), most of them will get work experience and complain that nobody uses linked list and trees. Heck, when a problem presents itself where linked list might be a great solution, they probably won't think to use it.<p>I think that this system of constantly bringing up linked lists, stacks, and queues for data structure is broken. A better format for teaching data structures would be to train the student's ability to come up with the right data structure for the problem they are solving. The ability to come up with solutions specific to a problem is the real skill and this skill will empower engineers come up with stacks, queues, linked lists when they need it.<p>Here's how I would teach data structures:<p>Ask student:
1. Let's say you want to build an elevator system. What classes would you need, and what properties / methods would each of them have?<p>2. You need to build a restaurant game. What classes would you need, and what properties / methods would each of them have?<p>+ a list of many other questions<p>Follow up to each of these questions would be for students to implement their data structures with provided assets to see their implementation come to life. Throw in firebase (realtime db) so students can interact with each other's games helps them see flaws in their implementation / data structure design. Its a great data structure + application development practice.