A Necessity-driven Learning Design for Computer Science