Coding
(aka Computer Programming)
computational thinking

"There are 10 kinds of people in the world. 
Those that understand Binary and those that don't."

There is more than one way to make Mac & Cheese or to say you are hungry.
More than one way to program.

Debuggers are like spell/grammar checkers.

How do you write a story?
Usually you write it down so that it has a beginning, middle, and end.
Then you go back and make it better.

Programmers usually write a program with 
goal #1 being "It Works!"
followed by 
goal #2 "how do I make it better?"
Goal #3 "I hope I don't mess up Goal #1 while trying Goal #2"


From dummies...

Think recipe.

#1 What problem are you trying to solve?
#2 How can you tell computer EXACTLY what to say in least amount of STEP-BY-STEP instructions?

Computers talk in Machine Language. Which consists of what two numbers?
We use other programming languages that get translated by compilers and assemblers into machine language.
Sometimes translating these languages is slow and less efficient.
 write the smallest, fastest program possible

Ultimately, no one cares what language you use just as long as your program
works. A program that works is far better than a small, fast, and efficient program
that doesn’t work. Think of a programming language as a tool. A good
programmer can use any tool well, but a bad programmer can screw up
using the best tool in the world.

Programs are made up of lines of code.
Saying "I'm writing a program" is not as cool as "I'm writing code"

Write programs on editors and then need to compile/assemble them into an executable file.

Understanding Programming VS Learning a Programming Language

Sequences - one line after another
Branch - option to go down one path or another
Loops - do something over and over

subprograms / procedures that can be called
Object Oriented Programming calls subprograms (like word, ppt sharing spell checker)

User Interface
GUI - graphic (text vs visual) drop downs, check boxes, etc.
event-driven (when something is done... ex: mouse click)


strings - display words
Numbers

variables - can hold strings or numbers

array - list of strings or numbers

boolean - < > +
functions
loops

from http://www.motherjones.com/media/2014/06/computer-science-programming-code-diversity-sexism-education

What if learning to code weren't actually the most important thing? It turns out that rather than increasing the number of kids who can crank out thousands of lines of JavaScript, we first need to boost the number who understand what code can do. As the cities that have hosted Code for America teams will tell you, the greatest contribution the young programmers bring isn't the software they write. It's the way they think. It's a principle called "computational thinking," and knowing all of the Java syntax in the world won't help if you can't think of good ways to apply it.

http://girlsmakegames.com/index.html
http://girlswhocode.com/about-us/


CODE.ORG workshop

codeorgk5philly.org

csta philly organization - JOIN. free.

itse

codehs

tampon run!

paesta

https://tackk.com/

pair programming - driver and navigator

fire monster

scratch lessons

DICE UNPLUGGED
partner and dice
3 rolls each
write instructions for a game
about 5 minutes
how does it work with...
creativity, collaboration, communication, persistance, problem solving



Just in case scribner blcok is gone




Lesson 1:

Intro, Rules, Simple Activity

 

Lesson 2:
Drop & Drag Programming
Sequences, Loops, Subprograms
Possibilities
Lightbot: lightbot.com/hocflash.html
Frozen: studio.code.org/s/frozen/stage/1/puzzle/1

 

Lesson 3:
Drop & Drag Programming
Events
Flappy Bird Program: http://studio.code.org/flappy/1

               

 Lesson 4:
Drop & Drag Programming
More open ended?
Scratch?
Cargo Bot?


Lessons 5-8
Writing Actual Code?
Language?
Java? HTML? Basic? RealBasic?

I have been researching this and there a lot of directions to go.

 http://www.crunchzilla.com/code-monster



"Hello World"

For those that are looking for more advanced programming...

Code.Org
More resources...


Code Academy
Learn to code interactively, for free.


Khan Academy Videos
Khan Academy offers free on-line instructional videos.

C#


App Inventor


Code with Anna and Elsa
From Hour of Code movement



Lightbot
Program the robot to move around and light up the blue squares.





http://justbasic.com/index.html





UNDER CONSTRUCTION... 

Coding Ground
http://www.tutorialspoint.com/codingground.htm



Developer Junior? 




stands for "Educational Logo Interface for Creative Activities." It is a direct descendant of Geomland.

FMSLogo
is a free implementation of Logo for Windows based on MSWLogo.

Lhogho
is a free version of the programming language Logo and a promoter of its educational philosophy.

MSWLogo for Windows
by George Mills is built on the core of UCBLogo. It includes multimedia and other capabilities that are possible in the the Windows environment. A French adaptation of MSWLogo is available from MSWLOGO à Genève. 

NetLogo
is a multi-agent programmable modeling environment inspired by the orginal StarLogo.

P-Logo
is a free version of Logo in French.

rLogo
by Richard Embry is designed for use on the World Wide Web.

StarLogo
was developed by a team led by Mitchel Resnick at the MIT Media Lab. You candownload both a Macintosh version and a newly released Java implementation that is suitable for PCs. There is also an active StarLogo project at Northwestern University.

StarLogo TNG 
is The Next Generation of StarLogo. It brings with it several advances - 3D graphics and sound, a blocks-based programming interface, and keyboard input - that make it a great tool for programming educational video games.

TinyLogo
is written by Timothy J. Lipetz. It works on Palm III and Palm V hand held computers.

UCBLogo
is a full-featured version of Logo was developed by Brian Harvey and his students at the University of California at Berkeley.


  • AgentSheets is a game and simulation authoring tool that is simple enough to be used by middle school students to learn about computer science by making video games, yet sophisticated enough to allow NASA scientist to create simulations of Space Shuttle payload. AgentSheets is supported through a complete curriculum called Scalable Game Design starting with simple Frogger-like games all the way up to Sim-like games with sophisticated artificial intelligence. AgentSheets supports game (animation, interaction, sound, speech synthesis/recognition (Mac OS)) and science applications (plots, output to spreadsheets, 3D plot (Mac OS)). English, Greek, and Japanese versions are available. AgentSheets formed the basis for LegoSheets a programming language for the Lego Mindstorms.[18] which had a less steep learning curve than Brick Logo.[19]
  • Alice is a free programming software designed to teach event driven object oriented programming to children. Programmers create interactive stories using a modern IDE interface with a drag and drop style of programming. The target audience is incoming college freshmen although most children with computer experience will find it entertaining and educational. A variant of Alice designed specifically for children with an even stronger story telling bent called Story Telling Alice is also available.
  • Baltie is an educational graphic oriented programming tool for children, youth (and adults). Baltie is also main character of this software a little wizard keen to execute miscellaneous commands and to conjure pictures (tiles) in his scene. With Baltie's help children will quickly realize what is a computer and how to master and program the computer. All that by playing. Baltie can be used also for exercising logical thinking. It makes no demands on childs knowledge, only playfulness and imagination are required. It is used in many countries in the basic schools. The new version of Baltie 4 fully supports C#. More usage information is at the (SGP Systems).
  • Blockly is an open source web-based, graphical programming language where users can drag blocks together to build an application. No typing required. It is developed by Google. More information is available at the project home page.
  • CiMPLE is a visual programming language for programming robotic kit for children. It is built on top of C as a DSL. ThinkLabs an Indian Robotics education based startup has built it for iPitara Robotic kit. CiMPLE visual language bears strong resemblance to written C programming language. Approximately 5000+ students in India have brought the iPitara kit and programmed it using CiMPLE. More information is at (CiMPLE Original Developers Weblog) and [4].
  • CodeMonkey is an online game that teaches how to code using CoffeeScript. In CodeMonkey, users program a monkey and help it collect bananas by writing lines of code. The game is built out of short challenges, starting with simple topics and progressing into advanced topics, such as loops, variables and functions. CodeMonkey is suitable for all ages, and can be practiced at home as well as in a classroom environment.
  • Code Monster from Crunchzilla helps kids learn about programming. It walks children (mostly ages 9–14) through how to program in Javascript, starting with early concepts like parameters, variables, and loops, moving through functions, eventually introducing some of the wonders of fractals, animation, and physics. It makes programming fun by using live code to show changes immediately and encouraging experimentation.
  • E-Slate is an exploratory learning environment. It provides a workbench for creating highly dynamic software with rich functionality,by non-programmers. Educational activity ideas can be turned into software with minimal authoring effort in the form of interactive Microworlds which contain specially designed educational components. E-Slate components are provided as a kit of pre-fabricated, interoperable computational objects. Software Microworlds can be very easily constructed by plugging components in various configurations. The behaviour of both components and Microworlds, can be programmed in a Logo-based scripting language. E-Slate is currently based on the Java platform and related technologies.
  • Guido van Robot is a robot control program similar to Logo or Karel, with a minimal Python syntax. It is designed to be minimalistic and generic to any high level language. There is a variant that includes the full Python syntax and a canonical set of lessons called RUR-PLE.
  • Laby, designed with education in mind (its primary function as a teaching tool), is a small application to learn how to code in various programming languages (OCaml, Python, Lua, Ruby, C, Java, Prolog and Perl) with ants and spider webs.
  • Lightbot, is a visual programming game designed to teach basic instruction sequencing, procedures, recursive loops, and conditionals. In Lightbot, players guide a robot to light up blue tiles to solve levels, utilizing a small set of symbols representing actions and procedure calls.
  • Lightbot Jr, is a version of Lightbot designed for children 4 years old and up. It goes over basic instruction sequencing, procedures, and basic loops. The gameplay is synonymous with that of Lightbot.
  • Looking Glass, is a novice programming environment designed to enable middle-school aged children learn computer programming independently through 3D storytelling. Looking Glass is the successor to Storytelling Alice.
  • Physical Etoys is a free open-source extension of Etoys. Its phylosophy is “help kids model and program the real world in order to learn more about it”. It can run on Windows, Linux and Sugar. Physical Etoys lets different electronic devices such as Lego NXT, Arduino boards, Sphero, Kinect, Wiimote joystick, among others, be easily programmed and interact between themselves due to its block scripting system. Its perfect for the educational curricula.
  • Pynguin is another Python Turtle Graphics Application. It is a unified editor, interactive console, and graphics display area written using Python and the PyQt toolkit (in contrast to the wxPython of PythonTurtle). Pynguin is meant to be an easy environment for introducing programming concepts to beginning programmers. The default avatar in Pynguin is a penguin, but other avatars, including a turtle, can be selected as well.
  • KidsRuby is another free Ruby-based environment meant for kids.
  • KarelKarel++, and Karel J. Robot are languages aimed at absolute beginners, used to control a simple robot in a city consisting of a rectangular grid of streets. While Karel is its own programming language, Karel++ is a version of Karel implemented in C++, while Karel J. Robot is a version of Karel implemented in Java.
  • Kodable a programming game for the iPad "which teaches pre-literate kids the basic concepts of programming".[20] Using a unique programming language of arrows, paths, and boxes, kids learn basic coding logic.[21] It was composed by Grechen Huebner and Jon Mattingly of Louisville, Kentucky, and was released into the AppStore in 2012.[20]
  • Kodu is a language that is simple and entirely icon-based. It was incubated out of Microsoft Research as a project to reach younger children and especially girls into enjoying technology. Programs are composed of pages, which are divided into rules, which are further divided into conditions and actions. Conditions are evaluated simultaneously. The Kodu language is designed specifically for game development and provides specialized primitives derived from gaming scenarios. Programs are expressed in physical terms, using concepts like vision, hearing, and time to control character behavior. While not as general-purpose as classical programming languages, Kodu can express advanced game design concepts in a simple, direct, and intuitive manner. The Kodu tool is available in three forms: PC as a free download in public beta and academic forms, and as a low-cost Xbox 360 Live download.
  • Learn to Program BASIC is a BASIC interpreter with an interactive course intended to teach the language to middle school students. Game-specific additions to the BASIC language include 2D sprite support. Programs written in "LTPB" could be executed on computers without the software by means of a freely-distributable "runner".
  • Lego Mindstorms is a line of Lego sets combining programmable bricks with electric motors, sensors, Lego bricks, and Lego Technic pieces (such as gears, axles, and beams). Mindstorms originated from the programmable sensor blocks used in the line of educational toys. The first retail version of Lego Mindstorms was released in 1998 and marketed commercially as the Robotics Invention System (RIS). The current version was released in 2006 as Lego Mindstorms NXT. A wide range of programming languages is used for the mindstorms from Logo to BASIC to derivatives of Java, Smalltalk and C. The Mindstorm approach to programming now have dedicated physical sites called Computer Clubhouses.
  • Mama is an educational object oriented programming language designed to help young students start programming by providing all the language elements in the student mother tongue. Mama programming language is available in several languages, with both LTR and RTL language direction support. A new variant of Mama was built on top of Carnegie Mellon's Alice development environment, supporting scripting of the 3D stage objects. This new variant of Mama was designed to help young students start programming by building 3D animations and games. A document about educational programming principles explains Mama's design considerations.
  • Phrogram (the second generation product of Kid's Programming Language) is a commercial easy-to-learn programming language and Integrated Development Environment introduced in 2006. It emphasizes graphics and sounds, making it especially easy to develop games and entertaining educational material. Phrogram is a simplified structured language, and offers component-based development features such as classes and methods. It is modeled on modern IDEs such as Eclipse and Visual Studio. NET, and intends to prepare a beginner to graduate to these or other professional development environments.
  • RoboMind is a simple educational programming environment that lets beginners program a robot. It introduces popular programming techniques and also some robotics and artificial intelligence. The robot can be programmed in Arabic, Chinese, Dutch, German, English and Swedish.
  • S2JS is for kids who have mastered Scratch and are starting to bump up against its limitations. S2JS teaches Javascript in terms of Scratch, assuming they already know what loops and if-then-elses are, and showing how the sort of things they achieve in Scratch (and more) can also be achieved in Javascript. Rather than teaching swathes of HTML, the DOM, CSS, etc, S2JS takes a more direct path to enable the kids to use the Canvas to start producing games and other programs they'll feel proud of. S2JS provides tutorials with live examples, and also a private work area where kids can develop their own projects. Kids can run the tutorial and development environment split-screen, so they can copy & paste code fragments to their own projects. Their work is directly sharable with their friends just by emailing a url to their project. S2JS shows kids how to write programs that make use of smartphone features such as tilt and touch. Free.
  • Stagecast Creator is a visual programming system based on programming by demonstration. Users demonstrate to the system what to do by moving icons on the screen, and it generates rules for the objects (characters). Users can create two-dimensional simulations that model a concept, multi-level games, interactive stories, etc.
  • Stencyl is a visual programming and game development IDE that has been used for both educational and commercial purposes. The concept it uses of "code blocks" is based on MIT's Scratch visual programming language (which is also listed above). It also permits the use of "normal" typed code (separate or intermingled) through its own API and the Haxe programming language.
  • ToonTalk is a programming language and environment that looks like a video game. Computational abstractions are mapped to concrete analogs such robots, houses, trucks, birds, nests, and boxes. It supports big integers and exact rational numbers. It is based uponconcurrent constraint programming.