Ideas for problem-based learning in computer science

I’m taking over a computer science program for middle and high school students and I’m looking to revamp it away from a lecture based format to a problem-based learning course. Does anyone have any advice or ideas on how to effectively develop a problem-based computer science class? What resources have you used, such as Raspberry Pi?

The students are primarily a low-income, urban population.