• AP Computer Science Principals

    This course is a survey in Computer Science where students master the basic elements of procedural coding while exploring a wide array of topics in the field of Computer Science. Students will also be introduced to the style of functional coding as they work with small and large datasets that they import from their GitHub or access live via API.

    Topics include: Binary foundations of computing (counting, binary-decimal conversions, 8-bit color, bit maps and data compression techniques), Cybersecurity (Public and Private Key Encription, Cesear Cipher, Vigenere Cipher, tricks with metadata), Networking (how Internet routing is designed for redundancy and security, TCP/IP protocols, the concept of the Internet of Things (IoT)), Artificial Intelligence (APIs to access big data, facial recognition, ethics).

    Programming and Data Access skills include: iteration (loops), simple and compound conditionals (ifs), variables and list processing, calling functions with parameters and return values, event driven programming design (handling clock tick events, get data/when I receive data), and functional programming design (map/keep).

    Coding  Environment: Students will complete projects from UC Berkley's Beauty and Joy of Computing Curriculum using the Snap! coding language as well as MIT's Mobile CSP Curriculum using AppInventor. Different projects will allow students to access the best features of each programming language to learn a broad set of skills efficiently. Snap! has a super step-through debugger and allows students to do the fastest testing of new concepts. AppInventor has a professional quality UI development space and incorporates more sophisticated event handling with clock.tick and when.data.changed events.  Snap! provides an efficient way to learn about functional programming design strategies most often employed by data scientists.  

    What you will need: This is a college-level course. Students will need a personal email account for:

    • The College Board - On this site students will do some homework assignments and take some quizzes. The site also gives them access to videos and question banks to study for the AP.  Do not sign up with a parent email account. You will need your College Board account for years - up through and including your graduate school admissions exams when you might be 30 years old! So use your own email account.  Our College Board class code is posted in our Google Classroom. 
    • AppInventor and Snap! - students are welcome to use a school account to log into these coding spaces. However, use of a personal email account will allow students to maintain access to their coding projects after graduation, which many students find useful for college. There will be an opportunities to download projects done on a school account and then catalog them in a personal account after the fact. 
    • GitHub -  Unlike Google Drive, GitHub has no limit on live data calls. Using it makes live testing easy. We will not be using GitHub for program version control. It is not possible to use GitHub with a student account.