 Read “10 LifeChanging Reasons You Should Learn to Code” by Laurence Bradford
 https://skillcrush.com/2015/01/28/laurencebradford10reasons/
 .
 Read “No, Seriously, Why Should I Learn to Code?” by Al Sweigart
 http://inventwithpython.com/blog/2014/09/30/noseriouslywhyshouldilearntocode/
I. Introduction
Why learn computer programming?
10 LifeChanging Reasons You Should Learn to Code, by Laurence Bradford
No, Seriously, Why Should I Learn to Code?, by Al Sweigart
Stats – from Hour of Code
Why Johnny Can’t Code. David Brin
What most schools don’t teach (video) Code.Org
Should we really try to teach everyone how to code?
The history of computers & robots
What discipline does Computer Science belong to?
“If there’s one thing to take away from our analysis, it’s that no programming language can accomplish every task and the job market changes quickly from year to year. To be a successful developer, it’s important to master multiple languages and train yourself to pick up new languages quickly so you can adapt to changing job opportunities.” – The 9 Most InDemand Programming Languages of 2017
II. Algorithms
Named after Muhammed ibnMusa AlKhowarizmi. His name was Latinized as AlGoritmi. (Europeans knew him by his last name, and there is a consonant shift in which ‘k’ sounds turn into ‘g’ sounds.) He was a Persian mathematician, astronomer, and geographer, c. 780 – c. 850
an algorithm is a solution to a problem that meets the following criteria:

A list of instructions, procedures, or formula that solves a problem.

Can be proven.

Something that always finishes and works.
 http://www.computerhope.com/jargon/a/algorith.htm\
Example of a long division algorithm
III. What is a flowchart?
A flowchart is a type of diagram that represents an algorithm or process, showing the steps as boxes of various kinds, and their order by connecting them with arrows.
This illustrates a solution to a given problem. Flowcharts are used in analyzing, designing, documenting or managing a process or program in various fields. – Wikipedia
Here is an algorithm, and the corresponding flowchart.
How does cruise control work in a car? We can express the rules as a flowchart
What is an algorithm? The Bang Theory: The Friendship algorithm
Read an algorithm for geometrically drawing a cube. Create a flowchart for doing this.
Drawinghowtodraw.com: Drawcubesboxes
Read an algorithm for geometrically drawing an equilateral triangle. Create a flowchart for doing this
Design.tutsplus.com: Geometricdesignthebasics
IV. Coding lessons
Hit the ground running with lessons from Code.Org
We’ll be using the Blockly coding language.
Coding lessons from Code.Org
V. Binary, ASCII and Hex
Binary numbers and ASCII page
Course 4. Stage 18. Being an artist with binary numbers.
The hexadecimal numeral system, hex, is a numeral system made up of 16 symbols – we’ll learn about it here: Hexadecimal number system
VI. Artificial Intelligence
An introduction to AI
Many types of intelligence are possible: What would an AI be like?
VII. What is coding? A bit more depth
Introduction to Programming: Team Ten. Lawrence Kesteloot
Ideas about programming. Lawrence Kesteloot
The following is a list of Hello, world! programs. Hello, world! programs make the text “Hello, world!” appear on a computer screen. It is usually the first program encountered when learning a programming language.
https://en.wikibooks.org/wiki/Computer_Programming/Hello_world
https://helloworldcollection.github.io/
http://www.mycplus.com/featuredarticles/helloworldprogramsin300programminglanguages/
VIII. Coding in Scratch
Scratch
IX. Other languages
Codecademy Labs is a place for you to program in Ruby, Python, and JavaScript online without downloading a code editor or IDE.
http://labs.codecademy.com/
Quite BASIC is a webbased classic BASIC interpreter. It’s a learning resource but has also become a celebration of the early days of personal computing.
http://www.quitebasic.com/
X. Resources
BBC Bitesize: Functions, procedures and modules
http://www.bbc.co.uk/education/guides/z9hykqt/revision/1
Jim’s Computer Science Topics Area
Computer Architecture, Arrays, Assignment Statement, Branching
Colors RGB, Commenting your Code, Composition of Functions
Conditionals, How Data Flows in a Program, Data Types
Debugging Programs, Default Variable Values, Software Development Cycle
Emacs, Equality Test, Expressions, For Loops, Functions
Geometric Vectors, Html
Information Representation and Transformations
Integer vs. Floating Point Math
Interfaces, Loops, Math Operators, Matrix info
Memory Layout, Numbering Systems, Object Oriented Programming
Packages, Pair Programming, Pointers and References
Problem Solving, Program Flow, Programming Style
Random Numbers, Recursion, Semicolons, Shortcut Evaluation
Strings (Data Type), Structures (Data Type), Truth Tables and Logic
Unsigned Integers, Variables and Data, Variables, While Loops
http://www.cs.utah.edu/~germain/PPS/Topics/index.html
_________________________________________
Review for assessment
A. Be able to count binary with 0’s and 1’s :
if you see 8 bits, tell me what number it is
If you see a regular number (up to 256) be able to turn it into 0’s and 1’s
B. Translate ASCII letters, numbers and symbols from bits, or from bits to ASCII.
(You don’t have to memorize these codes) http://sticksandstones.kstrom.com/appen.html
Practice on the binary> ASCII converter https://mothereff.in/binaryascii
C. You’ll be given a simple bit map (picture on graph paper.) Convert it to binary data. Or you’ll be given binary data, convert it to a bit map.
Coding Midterm Project
Learning Standards
Common Core Math Skills
Standard (CCSS.Math.Practice)  Introduction to Programming the EV3 

MP1 Make sense of problems and persevere in solving them  Chapters are all based around solving realworld robot problems; students must make sense of the problems to inform their solutions 
MP2 Reason abstractly and quantitatively  Programming requires students to reason about physical quantities in the world to plan a solution, then calculate or estimate them for the robot 
MP4 Model with mathematics  Many processes, including the process of programming itself, must be systematically modeled on both explicit and implicit levels 
MP6 Attend to precision  Robots require precise (and accurate) input, or their output action will be correspondingly sloppy 
MP7 Look for and make use of structure  Understanding the structure of the physical environment, the interrelated components of robot hardware and software, and commands within a program are vital to successful solutions 
MP8 Look for and express regularity in repeated reasoning  Any programmed solution to a class of problems relies on the programmer recognizing and exploiting important patterns in the problem structure. There is also an emphasis throughout the module on recognizing common programmatic patterns, as well as patterns within a solution that invite the use of Loops. 
Common Core Math Content
Standard (CCSS.Math.Practice)  Introduction to Programming the EV3 

6.RP.A.1 Understand the concept of a ratio and use ratio language to describe a ratio relationship between two quantities  Students use ratio language to describe and make use of the relationship between quantities such as Wheel Rotations and Distance Traveled 
6.RP.A.2 Understand the concept of a unit rate a/b associated with a ratio a:b with b!=0, and use rate language in the context of a ratio relationship  The relationship between Wheel Rotations and Distance Traveled is a rate, customarily understood through a unit rate such as “# cm per rotation”. 
6.R.A.3 Use ratio and rate reasoning to solve realworld and mathematical problems  Students are required to apply ratios and rates when they build their prototype examples of their real world robots. 
7.RP.A.3 Use proportional relationships to solve multistep ratio and percent problems.  Comparisons between ratederived quantities 
Common Core English Language Arts
Standard (CCSS.ELALiteracy)  Introduction to Programming the EV3 

WHST.68.1 Write arguments focused on disciplinespecific content. [See also: WHST.68.1.a to WHST.68.1.e] 
Reflection Questions ask students to analyze, evaluate, and synthesize arguments in response to robotics and programming problems 
WHST.68.4 Produce clear and coherent writing in which the development, organization, and style are appropriate to task, purpose, and audience.  Reflection Question tasks include composing technical critiques, technical recommendations, and creative synthesis. 
Next Generation Science Standards (NGSS)
Standard  Introduction to Programming the EV3 

MSETS12. Evaluate competing design solutions using a systematic process to determine how well they meet the criteria and constraints of the problem.  Solving challenges requires students to create and evaluate both hardware and software designs according to scenario scoring criteria. Some Reflection Questions require students to make recommendations between competing alternatives based on criteria that they define. 
MSETS14. Develop a model to generate data for iterative testing and modification of a proposed object, tool, or process such that an optimal design can be achieved.  When solving more difficult and complex challenges, students are guided toward iterative testing and refinement processes. Students must optimize program parameters and design. 
HSETS12. Design a solution to a complex realworld problem by breaking it down into smaller, more manageable problems that can be solved through engineering.  Problem Solving methodology for challenges directs students to break down large problems into smaller solvable ones, and build solutions up accordingly; challenges give students opportunities to practice, each of which is based on a realworld robot 
HSETS13. Evaluate a solution to a complex realworld problem based on prioritized criteria and tradeoffs that account for a range of constraints, including cost, safety, reliability, and aesthetics as well as possible social, cultural, and environmental impacts.  Some Reflection Questions require students to make recommendations about realworld policies (e.g. requiring sensors on automobiles) based on the impact of that decision 
The above tables are from Learning Standards: Carnegie Mellon Robotics Academy
Massachusetts Digital Literacy and Computer Science (DLCS) Curriculum Framework
68.CT.c.1 Demonstrate that numbers can be represented in different number systems (e.g., binary, octal, and hexadecimal) and text can be represented in different ways such as American Standard Code for Information Interchange (ASCII). 4. Computational Thinking (CT) is a problem solving process that requires people to think in new ways to enable effective use of computing to solve problems and create solutions. The capacity of computers to rapidly and precisely execute programs makes new ways of designing, creating, and problem solving possible. Characterized by: • analyzing, modeling, and abstracting ideas and problems so people and computers can work with them; • designing solutions and algorithms to manipulate these abstract representations (including data structures); and • identifying and executing solutions (e.g., via programming). a) Abstraction: Abstraction is a process of reducing complexity by focusing on the main idea. By hiding details irrelevant to the question at hand and bringing together related and useful details, abstraction reduces complexity and allows one to focus on the problem. This process creates a new representation which successfully reframes the problem. At the most basic level of abstraction, data structures are used to represent information so that algorithms can operate on the data to create a result. b) Algorithms: An algorithm is a sequence of precisely defined steps to solve a particular problem. Carefully designed algorithms are essential to solving complex problems using computers. Effective algorithms are efficient, clear, reusable, and accurate. c) Data: Collecting, managing, and interpreting a vast amount of raw data is part of the foundation of our information society and economy. The storage of data impacts how data is used and accessed. Computational tools enable insights and decisions through new techniques for data collection and analysis. d) Programming and Development: Programming articulates and communicates instructions in such a way that a computer can execute a task. Programming makes use of abstractions, algorithms, and data to implement ideas and solutions as executable code through an iterative process of design and debugging. e) Modeling and Simulation: Computational modeling and simulation help people to represent and understand complex processes and phenomena. Computational models and simulations are used, modified, and created to analyze, identify patterns, and answer questions of real phenomena and hypothetical scenarios. 68.CS.a.4 Identify and describe the use of sensors, actuators, and control systems in an embodied system (e.g., a robot, an etextile, installation art, smart room). 912.CS.a.1 Select computing devices (e.g., probe, sensor, tablet) to accomplish a realworld task (e.g., collecting data in a field experiment) and justify the selection. 912.CS.a.2 Examine how the components of computing devices are controlled by and react to programmed commands. 912.CS.a.3 Apply strategies for identifying and solving routine hardware and software problems that occur in everyday life (e.g., update software patches, virus scan, empty trash, run utility software, close all programs, reboot, use help sources). 912.CS.a.4 Explain and demonstrate how specialized computing devices can be used for problem solving, decisionmaking and creativity in all subject areas. 912.CS.a.5 Describe how computing devices manage and allocate shared resources (e.g., memory, Central Processing Unit [CPU]). 912.CS.a.6 Examine the historical rate of change in computing devices (e.g., power/energy, computation capacity, speed, size, ease of use) and discuss the implications for the future.
CSTA K–12 Computer Science Standards
The Computer Science Teachers Association (CSTA) provides opportunities for K–12 teachers and their students to better understand computer science. Membership consists of more than 23,000 members from more than 145 countries.
https://csta.acm.org/Curriculum/sub/K12Standards.html
CSTA K12 Computer Science Standards
CL.L1:302 Work cooperatively and collaboratively with peers teachers, and others using technology
CT.L201 Use the basic steps in algorithmic problem solving to design solutions
CT.L206 Describe and analyze a sequence of instructions being followed
CT.L207 Represent data in a variety of ways: text, sounds, pictures, numbers
CT.L208 Use visual representations of problem states, structures, and data
CT.L212 Use abstraction to decompose a problem into sub problems
CT.L214 Examine connections between elements of mathematics and computer science including binary numbers, logic, sets, and functions
CT.L3A01 Use predefined functions and parameters, classes and methods to divide a complex problem into simpler parts
CT.L3A03 Explain how sequence, selection, iteration, and recursion are building blocks of algorithms
CPP.L1:605 Construct a program as a set of stepbystep instructions to be acted out
Click here to download the full standards document with active hyperlinks.
Click here to download K12 Estandares para las Ciencias de la Computacion.
AP Computer Science Principles
Further articles to explore
http://historycomputer.com/ModernComputer/Software/Visicalc.html