# data[].attributes.body
The view of block-based programming as somehow inauthentic or inferior to other programming practices reflects a deficit mindset. Be intentional about combating this. Students can and should take pride in gaining knowledge/expertise in this area.

ALL PROGRAMMING IS REAL-PROGRAMMING.

# data[].attributes.body
"Java is not English, it's in Java language. The blocks are in English, it's easier to understand."

# data[].attributes.body
High School CS Students as part of a study to understand student opinion on the usefulness of BBP most appreciated...

1) The shape and visual layout of blocks
2) The ability to browse available commands
3) The ease of drag & drop interaction

# data[].attributes.body
Major benefits associated with BBP include:

●Scaffolded, Differentiated Instruction + Low Barriers to Entry: These programming environments provide sufficient scaffolds & supports for novices to be able to start programs with little-to-no formal instruction while also being able to support sophisticated programs.
●Collaborative: BBP environments provide a means for students to share the programs/projects they compose and participate in a larger community of programmers (i.e. Scratch Library/Forum)

# data[].attributes.body
Scratch is another popular BBP environment, specifically for introducing students to programming.

# data[].attributes.body
Code.org is a popular BBP environment, adopted by many AP Computer Science Principle classrooms.

# data[].attributes.body
Should one choose to incorporate block-based programming into their curriculum, they should be mindful of the following...

1)
Students may have concerns about the "authenticity" of block-based programming?

Prepare for comments along the lines of "when are going to do real programming?"

Be sure to highlight the value and unique benefits of the practice as opposed to text-based programming.

2)
Exposure.

You want to be sure that you expose students to programming in a variety of contexts. Spending too much time on BBP may hinder the eventual transition to text-based programming that students will make in the future. Use BBP as a valuable stepping stone and building block, but be sure to highlight how it parallels certain text-based constructs they will eventually come across.

# data[].attributes.body
Block-Based Programming seems to be a tool best integrated in the early stages of student interactions with programming/algorithms.

Students will not be bogged down by the frequent syntax-errors characteristic of text-based programming languages -> They can prioritize CODE ORGANIZATION & LOGIC over the peculiars of syntax

As such, Block-Based Programming can be integrated into the classroom especially for student exploration.

As an example a teacher can begin with a discussion of the basic building blocks of a Scratch (or other BBP environment) programming script. Then, transition into a differentiated activity, tiered-by-level, where students choose an activity based on self-evaluation of their comfortability with the environment.

Level 1 might look like...
-Students exploring, choosing, and following along one of the many Scratch tutorials available to create a game/story.

Level 2 might look like...
-Students create their own single script/story board under a set of program requirements.

Level 3 might look like...
-Students create an advanced level Scratch game that involves interaction of multiple scripts.

# data[].attributes.body
What?
Block-Based Programming uses a drag-and-drop learning environment, where programmers use coding instructions in the form of visual "blocks" to construct programs, stories, and games.

Who?
Block-Based Programming environments have been designed for children as young as 5 and remain highly-accessible for older age groups (8+ years).

How?
Writing a program in a block-based environment takes the form of dragging instructions together. If two instructions cannot be joined to produce a valid statement, then the environment prevents the blocks from "snapping" together. A comprehensive program consists of completed blocks of instructions to be executed upon a certain user action.