Several of you mentioned in the background survey responses that you get stuck "getting started" on a problem. Here are steps/questions to ask yourself, that align with what many of you learned in CS1101:
Note that the first task here is NOT "writing code". It is understanding the question being asked. Articulating the data, making an example of it, and articulating what the method should do are essential precursors to being able to write code. When you see classmates able to just dive in and write code, they are able to do the data and method comprehension steps in their heads, so they jump to code writing. You cannot hope to produce useful code for a problem you don't understand. Articulating data and desired behavior are how you come to understand a problem.
These steps are designed to help you consider a problem one aspect at a time, rather than all at once. All at once, there are often too many issues to consider, and your head can start spinning as you try to sort them all out simultaneously. Focus on one aspect at a time (we've staged the aspects in this order for a reason (they build on each other). If you can train yourself to focus on one step at a time, you make the problem more manageable.
As part of focusing, ignore interfaces and abstract classes at first, and just focus on the core classes that you need for the data in the problem. You can add interfaces and abstract classes later. They build upon the core classes that capture the data in a problem. Get those right first.