New Paltz Central High School New Paltz Central School District 196 Main Street, New Paltz, New York 12561 Tel: 845-256-4000, Fax: 845-256-4009 Instructor: Joseph M Haas Phone: (845) 256-4175 ext. 69524 Mathematics / Science Teacher Email: jhaas@newpaltz.k12.ny.us Welcome to Computer Science I Computer Science I is a hands-on project based course designed to introduce students to computer programming. Students will begin by using Build Your Own Blocks (a/k/a SNAP!), an advanced offshoot of Scratch!, a visual programming language developed to allow students to focus on the "Big Ideas" of computing in a user friendly purely graphical, drag and drop, environment. In our next unit of study students will be programming in JavaScript. JavaScript is the most popular scripting language on the internet, and works in all major browsers. Students will design, write, test, and debug computer code to perform a desired function. The highly structured and sequential process required in programming helps students strengthen their problem solving and logical reasoning skills. This project/problem based approach is directly aligned with the Common Core Learning Standards for Mathematics. Many of the labs and projects used in this class are based on The Beauty and Joy of Computing (BJC), an introductory computer science curriculum developed at the University of California, Berkeley. It is currently slated as the new AP CS Principles course being developed by the College Board and the National Science Foundation. Topic Outline: Unit I - Build Your Own Blocks Broadcast, Animations, and Music! Get comfortable with the Scratch user interface. Learn to use Broadcast blocks to communicate between sprites and make a movie. Loops and Variables Learn to use key listeners to move the characters around the screen. Learn to use the movement and drawing commands in Scratch to draw complex images and geometric shapes. Learn to use variables that change dynamically within a program. Use layers of abstraction in programs to draw complex images. Random, If and Input Learn to use the if block in the context of forever loops and when working with variables. Learn to use the random block to generate randomness in a game. Build Your Own Blocks Discover how to use the BYOB block interface to, create different shaped blocks, create inputs of different types, create inputs with initial values. Employ blocks and data abstraction to break problems down into smaller problems and thus write more beautiful and elegant code. Explore some of the complexities of managing block variables. Lists Practice writing and reading functions with different input types. Determine how to break problems down into individual functions. Gain experience working with a new data structure and the large repository of blocks that work on this data structure. Develop the techniques and functions to draw a game board. Algorithms Solidify understanding of what an algorithm is and why they’re important to computer science and other fields. Gain a basic understanding of why certain algorithms perform better than others. There’s often more than one way to solve the same problem. Certain solutions will be superior to others, but very often choosing a solution will require evaluating a list of trade-offs relevant to your particular situation. Practice implementing algorithms that were discussed verbally. Lists II Get more practice with making Lists, accessing elements and inserting items. Learn patterns of looping over an entire list or part of a list. Write and analyze code that sorts a list. Recursion Explore the idea of representing a problem in terms of itself. Practice planning and coding recursive blocks. Unit II - JavaScript Variable declaration and initialization, Comments, JavaScript I/O Working with Strings and variables Using Math Functions and equations to solve problems Strings, Integers, and Floating point numbers Conditional statements: if...else Logical Operations: OR, AND, NOT Loop statements: for and while Using Forms For Input/Output Functions Arrays All assignments and related course materials for this class are posted on my website. There are typically 15 to 20 assignments due per quarter, requiring students to complete one project almost every class period. Short quizzes will be given periodically, and are announced the class period before they are given. Grades are determined from a combination projects and quizzes. Each assignment will be given a specific point value. Your average can be determined at any time by adding up the number of points earned and dividing by the total number of possible points. Late assignments will receive a 1 point deduction for each day late. Class Expectations During class time, computers are only to be used for the purpose of this class. If you are using a computer for anything other than work directly relating to this class you will lose credit for the project you are working on and possibly lose your computer privileges. Students should be attentive to all directions and class discussions, be on time and ready for the beginning of class, be quiet and respectful while others are speaking.