Note: In our Schoology SIS, grades are awarded for HOWs, Classwork, Unit Tests and Projects. The Learning Targets below are too many to incorporate. Instead, they are applied in a series of badges, which are earned by student submission of evidence (a piece of finished work for which a proficiency grade was earned, attached or linked to). Student work is evaluated on Schoology via rubrics. Badge submissions, approvals and lists are available from https://dojo.springfieldrenaissance.org.
For example, our first available badge is the ability to code a Peanut Butter and Jelly sandwich using the pseudo-language Baby Sister. Students apply the syntax for that language (which matches the syntax of JavaScript, the programming language we study in this first year of our coding sequence), and also the rules and logic of the commands listed in the Baby Sister Wiki, a resource we add to each year.
This is a full-year, intensive course, with the dual purpose of providing an introduction to the code of the web (HTML, CSS and JavaScript) and prepare students to succeed in the Advanced Placement Exam for Computer Science in Java (AP CS A) the following year.
So there are many learning targets! The list below does not include all, but offers an indication of our direction.
Coding Syntax and Sequence: apply basic coding practices by coding a sandwich-making procedure using a pseudo-language.
Procedural JavaScript: code simple guessing games from flowcharts using basic input, output, conditional logic and random number generation commands.
Functions and Refactoring: expand guessing game with functions, adding multi-games, averages and other features.
Unit Testing: develop a program to play "Nim" against, with unit tests for each function.
For Loops and System Testing: build a simple Multiplication Table testing program with many options and ensure it works as designed in all conditions.
Algorithm Application: Develop and apply an algorithm to Nim so that the computer always wins, training the user to see patterns and learn the secret.
Arrays and Indexes: Apply 1-dimensional arrays to convert number and text values and assess winning rounds to code Rock Paper Scissors, a.k.a Rochambeau.
Two-Dimensional Arrays: Code a simple Mad Libs program, when one user enters a paragraph with substitution parts of speech, the other player provides words to match the substitutions, and both view the comic result.
HTML and CSS Styling: Create a web-based application with triggered display of the flags of countries using JavaScript, HTML, CSS and the Document Object Model (DOM)
Quality Assurance: Code a text-based "Choose Your Own Adventure (CYOA)" game and test all "paths". Embellish the display with functions and DOM commands.
Database Design: Design and populate a relational database to more easily handle the CYOA scenes, options and logic, with deeper integration of DOM scripting.
Project Management: In Agile teams, re-code the Multiplication Table program as a web application, adding advanced functions like a leaderboard and error analysis.
2D Arrays, Nested Loops and Algorithms: Code an alert-based version of Mastermind, assessing player turns and outputting a complex string with guesses and return codes.
Advanced DOM Scripting with System Testing: Presented with web-based versions of Mastermind that do not always work as intended, find and fix deliberate errors.
Object Oriented JavaScript: Return to BabySister where we started, analyzing and extending a fully functioning back-end to this kitchen simulation with object states, locations, methods and interrelationships.
Final Project: Apply elements of the course to create a web-based application with real-world utility for actual users.
Standards for the computational thinking strand of the Digital Literacy and Computer Science Standards.
Abstraction
Algorithms
Data
Programming and Development
Modeling and Simulation
For alternate presentations and guided practice, we will draw from both Code.org's Computer Science Discoveries (CSD), CodeHS.com's Intro to Computer Science in JavaScript (Golden) and Web Design (Monet). The following learning targets are examples from Code.org's CSD:
Identify the inputs and outputs for simplified apps and describe the processing that converts one to the other.
Distinguish between the content, structure, and formatting in the design of a digital artifact and ensure that they are logically separated in its encoding (e.g. by using HTML for structuring and CSS for formatting).
Use classes and tags to identify and set the properties of multiple elements as a group with formatting rules. Create and reference style sheets so that consistent formatting rules will apply to multiple web pages.
Use HTML to create a web page that includes hierarchical headings, paragraphs, and images. Add external style sheets to control placement, size, and appearance of elements.
Give feedback to peers using a structured process that points out strengths and areas for growth in a project, and incorporate given feedback for their own programs into their revisions.
Organize code such that it is readable and make comments where appropriate to help readers understand the purpose of specific sections. Use reasonable variable and function names.
Use a structured process to describe a program’s behavior, identify the core programming constructs necessary to complete the project, then use them as a guide to complete the program.
Break up tasks so that each team member can make a meaningful contribution. Ensure that the code will work together once it is finished.
Design an artifact, including core functionality and user interface, that meets the needs of a specific user, or design improvements to an existing artifact in order to meet needs.
Collaborate with others to develop a computational artifact, developing a plan for splitting work effectively, assigning roles and responsibilities to each team member, and integrating all components into the final artifact.
Communicate the design and intended use of program, as well as the development of an ongoing project, to a variety of audiences, including non-technical users.
Analyze user feedback and test results on a computational artifact, then categorize and prioritize the issues according to impact and ease of implementation. Create and implement a plan for further development of the artifact.