This advanced course can be taken by students with or without programming experience. Because the design and implementation of computer programs to solve problems involve skills that are fundamental to the study of computer science, a large part of the course is built around the development of computer programs that correctly solve a given problem. These programs should be understandable, adaptable, and, when appropriate, reusable. At the same time, the design and implementation of computer programs is used as a context for introducing other important aspects of computer science, including the development and analysis of algorithms, the development and use of fundamental data structures, the study of standard algorithms and typical applications, and the use of logic and formal methods. In addition, the responsible use of these systems is an integral part of the course. This course is a joint CRLS and Microsoft Corporation TEALS Program initiative and will be co-taught by a Microsoft employee and a CRLS teacher. Students will earn math credit for this course.Students taking this course will be asked, and strongly encouraged, to take the AP Computer Science Exam in May as an important part of their AP experience.