One of the greatest challenges in broadening participation in computer science is teacher preparation as few middle and high school teachers have a formal background in computing. Further, without a credentialing program, there are limited ways to learn content and pedagogical strategies for effective computer science instruction. As a result, professional development is key to successful reform in the teaching of computer science. In this paper we describe our three-pronged approach to the design of a professional development model for middle and high school teachers interested in implementing the Computer Science Principles (CSP) curriculum in their classrooms or infusing CSP modules into STEM curricula. We describe our model focusing on content, pedagogical strategies and follow-up classroom support during the academic year. We subsequently report on participating teacher outcomes, in terms of self-rated understandings, attitudes and implementation practices. We share lessons learned and offer recommendations for professional development designers.