Foundations for advancing computational thinking : balanced designs for deeper learning in an online computer science course for middle school students