1. Definition
Programming Education is comprehensive term that refers to the study of teaching and learning of some activities include the processes of general problem solving, planning, precise thinking, debugging, developing a reusable product consisting of a series of written instructions that make a computer accomplish some task, and the discovery of powerful ideas (Pea, 1984) in classroom especially in the primary and secondary school. Topics in programming education might include understanding how student learn programming, how best to teach programming and what kind of programming that appropriate for student in each level (cognitive demands of programming).
2. Background
The motivation for the emphasis on programming education; It is firmly believed that students who can add programming skills to their other scholastic achievements have a greater chance of finding employment when they leave school than students without these skills. On the other hand, the emphasis on giving students training in programming reflects an implicit belief that programming indirectly improves students' problem-solving skills.

2.1 History
In the early 1970s at MIT, Seymour Papert set out to develop a new and different approach to computers in education. He developed a programming language, LOGO, to encourage rigorous thinking about mathematics. He wanted it to be accessible to children and to be easy to express procedures for simple tasks like many non-numerical problems familiar to children. LOGO soon became the language of the elementary school computer literacy movement. (Molnar, 1997)

In the 1980s home computers arrived with an explicit DIY ethic, and users would programme these 8bit machines (Commodore, Amstrad, Dragon, Sinclair Spectrum…modern systems are 32 or 64bit), often building a game to gain familiarity with their equipment. (Everitt, 2011)

However, in the early 1990s the increasing development and adoption of the compact home PC (‘Personal Computer’ covers both Apple and Windows) created a divide between parents beginning to use a home computer and children who craved and dedicated for games consoles. Games consoles have created a separate market, emulators that run within modern operating systems (Everitt, 2011).

Following the early steps in the development of programming education, many versions of tools that encouraged programming appeared such as the Hypercard, Web, and Social Network Services
This tool arrived with the OS began to become abstracted away from lowerlevel code during the 80s and early 90s, notably the remarkable Hypercard (and Hypertalk language) created by Bill Atkinson at Apple in 1987. Hypercard arrived free with all Apple Computers and provided a toolkit for building your own applications by using programmable components with the standard interface elements. (Everitt, 2011)

During the 90s this level of activity on the web went unchallenged until developers began to produce more complex applications that could be used as ‘content management systems’, such as MovableType (2001) and WordPress (2003). Since around 2009, web technologies have undergone a parallel shift that adds layers of complexity to the formerly simple process of ‘writing a web page’. Until then, coding for the web had been be relatively simple (HTML/CSS/JavaScript + Flash) but the web is shifting towards multiplatform code that works across mobile, tablet and desktop browsers and displays complex graphics (Everitt, 2011).
Until its latest redesign, MySpace was the last popular customisable social software that allowed users to alter their profile’s style and appearance, and add various cut’n’paste widgets. But the problems such as extremely slowloading pages (from seriously invalid markup codeadded by users). MySpace closed that vulnerability, but other social software sites prohibit such code changes completely; you cannot alter the appearance of Facebook,or add external cut’n’paste widgets. This shift removed users even further from source code, Although this shift has had little impact on the uptake of programming as an informal learning tool, the removal of access to the code from the user has created anenvironment in which code experimentation is not encouraged. (Everitt, 2011)

2.2 Theories
Problem Solving
Problem solving is a non routine mental and or motor activity undertaken under condition of uncertainty and oriented toward overcoming an impediment to goal attainment by circumventing, eliminating or removing a barrier and or restoring previously established route to goal attainment (Tallman, Leik, Stafford, 1993)
Logical Thinking
Logical Thinking is the process in which one uses reasoning consistently to come to a conclusion, Inhis book Brain Building, Dr. Karl Albrecht says that the basis of all logical thinking is sequential thought. This process involves taking the important ideas, facts, and conclusions involved in a problem an arranging them in a chain-like progression that takes on a meaning in and of itself. To think logically is to think in steps.
Pizzingrilli and Antonietti (2010) concluded that ‘creativity has been meant as a mental process, as the sum of distinctive features of original artifacts, as personality traits, and as set of environmental characteristics which foster unusual ways of thinking

3. Components of Programming Education
3.1 What should be taught
Rephrasing Romeike (2008), the core of programming is all about problem solving and creating a program as solution. In programming we can distinguish two kinds of knowledge, namely the program generation and the program comprehension (Van Merrienboer & Paas, 1987; Robins, Rountree, & Rountree, 2003; Mannila, 2007). In the first case, the programmer analyses the problem, produces and algorithmic solution, and then translates this algorithm into a program code. This means that students should be coached in the process of problem solving, reflection on this process, and in the development of algorithmic ways of thinking (Feurzeig et al., 1970; Hromkovic, 2006). As for program comprehension, the programmer is asked to give a demonstration of her/his understanding of how a given program works. Second aspect is the semantic of a program, also referred to as the meaning of a program. A semantically correct program is a program that performs the required task. Programs written with different syntax can perform the same semantic task.

There are so many tools that can be used to facilitate transferring these two knowledges. LEGO WeDo, Logo and other tablet apps can be use for younger student and for older student they can be introduced to relatively simple programming language like Pyhton, also by utilizing some interesting website that support learning to code such as codecademy.com and code.org

3.2 How should the topic be taught
A. Using simple programming language and use of practical examples
Hromovic (2006) suggests that programming is seen as a skill to communicate,in an unambiguously way, a set of instructions to an unintelligent computer. If this process could take place by means of a relatively simple programming language (e.g. Python) offering a simpler syntax than other commonly used programming languages, students could focus more on the semantic aspect of the program and produce fewer syntax errors (Mannila et al., 2006). Another way to start this learning process could be the use of practical examples, such as rewriting recipes for cooking for a cooking machine (Hromkovic, 2006). Writing a set of instructions to solve a problem is the definition of algorithm.

B. Ideal chain for learning computer programming (Linn & Dalbey, 1989)
These chains started from program comprehension and ends with program generation. The chain has three main links single language features, design skills, and general problem-solving skills. The ideal chain should start with the understanding of the language features, knowledge that can be assessed by asking students to reformulate or change a language feature in a program so that the program does something slightly different.
The second link of the chain consists of design skills, which are a group of techniques used to combine language features to form a program. This chain link also includes templates(stereotypical patterns of code that use more than a single feature) and procedural skills (used to combine templates and language features in order to solve new problems, including planning, testing and reformulating).
The third link of the chain, problem-solving skills, is useful for learning new formal systems. Problem-solving skills can be assessed by asking students to solve problems using an unfamiliar formal system such as a new programming language. Though this chain of cognitive accomplishment requires an extensive amount of time it forms a good summary of what could be meant by deep learning in introductory programming (Robins et al., 2003).

3.3 Levels of programming skill development
1) Program User
Student typically learns to execute already written programs such as games, demonstrations, or computer-assisted instruction lessons before beginning instruction in how to program.
2) Code Generator
At this level the student knows the syntax and semantics of the more common commands in a language. He or she can read someone else’s program and explain what each line accomplishes. The student can locate “bugs” preventing commands from being executed (e.g. syntax errors), can load and save program files to and from an external storage device, and can write simple programs of the type he or she has seen previously.
3) Program Generator
At this level the student has mastered the basic commands and is beginning to think in terms of higher level units. The student can read a program and explain its purpose, what functions different parts of the program serve, and how the different parts are linked together.
4) Software Developer
Finally, at this level the student is ready to write programs that are not only complex and take full advantage of the capabilities of the computer, but are intended to be used by others.

4. Educational Application
Estonia - ProgeTiger ProjectEstonia has launched a pilot program to teach students to do computer programming to further link their education system to skills required in future jobs. The pilot program has been started since 2012 and provides course material and specialized teacher training in computer coding for 20 schools (out of a total of 550 schools in Estonia).The ProgeTiiger initiative teaches simple programming languages, web applications and website creation during classes or in hobby clubs to students from grades 1 through 12 with a specific focus on teaching basic programming to primary school children. The project is still in the pilot-phase with only 60 teachers trained at this point.
Some example what teacher do in schools :

  • In preschool, teachers teach and use LEGO WeDo, Kodu Game Lab, tablets (apps), programmes to make animations etc.
  • In primary school, teachers teach and use Kodu Game Lab, Logo MSW, Scratch, LEGO Mindstorms EV3, mobile app making programmes and environments, many different programmes and environments which are used for teaching various subjects (music, mathematic, physics, biology), e-labs etc.
  • In high school and vocational education, teachers teach and use different programming languages (Python, JavaScript etc), Codecademy.com courses, 3D graphics, robotics, programmes to make games, web-pages and apps etc.

UK - Computing at School

5. Issues

(a) Teacher Experience
It is only recently that programming education has been offered in primary and secondary school. Therefore teachers tend to have limited training in teaching programming.Teachers need strong disciplinary background to assure a full understanding of the subject. To be able to recognize many kinds of students' difficulties, misconceptions and learning needs specific to programming, the teacher will also need strong pedagogical knowledge. Also, because the teacher needs to find different forms of reformulation and representation teachers also need several years of teaching experience to be sure they will gather sufficient knowledge about possible scenarios (Mara, 2012).
(b) Curriculum
The curriculum materials available for precollege programming instruction often fail to offer opportunities for students to move along the chain of cognitive accomplishments. Many texts are limited to intruction in programming language features. Teachers are often augment available resources. They must develop their own curriculum materials on their own very restricted resources (Linn and Dalbey, 1985).
(c) Access to computers
Both in school and out of school access to computers could influence student performance in programming. Computer access during School differed dramatically from one site to another. During class, Students generally took turns using the computer. In addition, at some Schools students could use the computer before school, at lunch, or after school. Linn and Dalbey(1985) estimated the maximum amount of time that students could spend online in each school. These maximum online times ranged from 12 hours at one of the typical schools to 84 hours at one of the exemplary
According to Kurland, Mawbry, and Cahir (1984) at least 500 hours of computer access are necessary to become expert at programming. The introductory courses in middle schools provide considerably less access. Home access is also not sufficient for becoming expert. Thus, the concern that home access to computers will create a gap between those who have them and those who don’t has not been realized. A more worri­-some problem is how to help students who do have out-of-school computer access benefit from the resource.
(d) Cognitive demands targeted to the appropriate educational level.
As the teaching of programming is initiated at increasingly early grade levels, questions concerning the cognitive demands for learning to program are beginning to surface. Of particular interest to both teachers and developmental psychologists is whether there are specific cognitive demands for learning to program that might inform our teaching and tell us what aspects of programming will be difficult for students at different stages in the learning process. Clearly the cognitive demands for the activities of young child and the college student will differ (Kurland et al, 1987)

6. Research Findings
Children generally express positive attitudes about computers when they are used for computer-based instruction, game-playing, or Logo turtle graphics (Clements, 1981; Demarest &McKenzie,1984; Lawton & Gereschner, 1982; Wilder et al.,1985;Williams&Williams,1984). However,their attitudes about computers used for required instruction in programming languages the typical use of computers in secondary schools (Becker,1985) range from neutral to negative. An example of this finding is provided by a study of 400 high school students enrolled in a required computer literacy course featuring instruction in BASIC. Fewer than half of the boys and one-third of the girls reported that they liked working with computers or programming (Lockheed et al.,1983). There also some evidence that courses featuring programming languages affect boys and girls differentially. For example,Collis (1984) found that girls' attitudes about computers were associated negatively with exposure to BASIC programming courses,whereas boys' attitudes were associated positively with them. Similarly, Miura (1984 )found that seventh-grade girls in programming classes reported liking computers less than their male classmates, and were less likely to take a subsequent elective computing course.
Because the teaching of CS at secondary school has only been relatively recently introduced, still discussion is open on agreeing what to teach, how to teach, with which reasons to teach and what students' difficulties to cope with. In other words the Pedagogical Content Knowledge (PCK), a construct defined by Lee Shulman (1986). For Computer Science it is still in its very early infancy. Thesis by Mara (2012) focuses on this topic, the first finding revealed that the reasons to teach programming are enhancing students’ problem solving skills and offering the students a subject, which includes aspects of different disciplines; use of modularity and transferability of the knowledge/skills; and the opportunity to work with a multidisciplinary subject. The second finding listed the concepts/aspects that a programming curriculum should include. They are Programming knowledge; programming strategies, and programming sustainability.
The third finding revealed various students difficulties while learning to program, such as a general problem of orientation; difficulty to instruct the machine about the solution of a problem; and tendency to converse with a computer as if it was a human. Regarding the solution of a problem, students tend to maintain a local, limited point of view, failing to find a suitable solution. And the last finding how to address these difficulties; by discussing teaching methods such as possible and effective teaching sequences; offering a simple programming language; choosing several problems to solve, which should be carefully chosen, independently from any programming language, in order to achieve algorithmic thinking.

Consequently, there are still few guidelines or instructional strategies that teachers and others in the educational field can use to improve their programming courses in order to increase learning outcomes. Research by Merrienboer (1990) revealed that completion strategy (emphasized the modification and extension of existing programs) is considered to be a good alternative to more traditional strategies (emphasized the design and coding of new programs)
Cognitive impacts of programming experience are also being focused on the research. Dramatic accounts have been offered of how some school-aged children’s thinking about their own abilities to solve problems is transformed through learning to program (e.g. Papert et al., 1979; Watt, 1982; Weir & Watt, 1981; Weir, 1981). Important social interactional changes have been demonstrated in classrooms where children are learning Logo programming (Hawkins, Sheingold, Gearhart & Berger, 1983).

7. External Links

Short film promoting code starring Bill Gates, Mark Zuckerberg, will.i.am, Chris Bosh, Jack Dorsey, Tony Hsieh, Drew Houston, Gabe Newell, Ruchi Sanghvi, Elena Silenok,VanessaHurst,andHadiPartovi.

8. References
Abelson, H., & Sussman, G. J. (1996). Structure and Interpretation of Computer Programs (second ed.). Cambridge, Massachusetts: The MITPress. Hardcover. Available from http://mitpress.mit.edu/sicp/full-text/book/book.html
Albrecht, K. (1984). Brain Building: Easy Games to Develop Your Problem Solving Skills. NJ: Prentice Hall.
att D. Logo in the schools. Byte 7, 116 - 134 (1982).
Becker,H.J.(1985,May). School uses of computers: Results from these second survey. Paper presented at Educational Testing Service Sociology of Education Seminar, Princeton.
Bell, T., Newton, H., Duncan, C., Jarman, S. (2014) Adoption of Computer Science in NZ schools. Paper on 5th annual conference of Computing and Information Technology Research and Education New Zealand (CITRENZ2014) and the 27th Annual Conference of the National Advisory Committee on Computing Qualifications and CSANZ2014, Auckland, New Zealand.
Caspersen, M. & Nowack, P. (2013). Computational Thinking & Practice—A Generic Approach to Computing in Danish High Schools. In Proceedings of the 15th Australasian Computing Education Conference, ACE 2013, pages 137–143, Adelaide, South Australia, Australia.
Clements,F .J .(1981,April). Affective considerations in computer-based education. Educational Technology,21,28-32.
Collis,B.A. (1984). The development of an instrument to measure attitudes of secondary school males and females toward computers. Unpublished doctoral dissertation, University of Victoria,Victoria, British Columbia.
Cooper, S., Dann, W., & Pausch, R. (2003). Teaching objects-first in introductory computer science. In Proceedings of the 34th sigcse technical symposium on computer science education (pp. 191{195). Reno, Navada,USA: ACM.
Curzon, P., & McOwan, P. (2008). Engaging with Computer Science throughMagic Shows. Paper presented at the 13th Annual Conference on Inno-vation and Technology in Computer Science Education .
Demarest,M.,&McKenzie,J.(1984). Probing the computer gap. Unpublished manuscript.
DuBoulay, B. (1989). Some Difficulties of Learning to Program. In E. Soloway & J. C. Spohrer (Eds.), Studying the novice programmer (pp. 283{299). London: Lawrence Erlbaum Associates.
DuBoulay, B., O'Shea, T., & Monk, J. (1989). The Black Box Inside the Glass Box: Presenting Computing Concepts to Novices. In E. Soloway & J. C. Spohrer (Eds.), Studying the novice programmer (pp. 467{446). London: Lawrence Erlbaum Associates.
Erlich,K., Abbott,V., Salter,W. and Soloway,E.(1984). Issues and Problems in Studying Transfer Effects of Programming, paper presented at the Annual Meeting of the American Educational Research Association, New Orleans. (ERIC Document Reproduction Service, ED-257–441). Retrieved 10 October 2014
Everitt, D. (2011). Introducing programming skills in education. Retrieved from http://www.academia.edu/1478617/Introducing_programming_skills_in_education
Feurzeig, W., Papert, S., Bloom, M., Grant, R., & Solomon, C. (1970). Programming-languages as a conceptual framework for teaching mathe-matics. SIGCUE Outlook , 4 , 13{17.
Futschek, G. (2006). Algorithmic Thinking: The Key for UnderstandingComputer Science. In R. Mittermeir (Ed.), Informatics education { thebridge between using and understanding computers (Vol. 4226, pp. 159{168). Berlin / Heidelberg: Springer.
Hawkins J., Sheingold K., Gearhart M. & Berger C. The impact of computer activity on the social experience of classrooms. Journal ofApplied Developmental Psycho100 2, 361 - 373 (1983).
Hromkovic, J. (2006). Contributing to General Education by Teaching Informatics. In R. Mittermeir (Ed.), Informatics education { the bridge between using and understanding computers (Vol. 4226, pp. 25{37). Berlin/ Heidelberg: Springer.
Kolling, M., & Henriksen, P. (2005). Game programming in introductory courses with direct state manipulation. SIGCSE Bulletin , 37 , 59{63. Available from http://dx.doi.org/10.1145/1151954.1067465
Kurland, D. M., Clement, C., Mawby, R., & Pea, R. D. (1987). Mapping the cognitive demands of learning to program. In D. Perkins, J. Lochhead, & J. Bishop (Eds.),Thinking: Progress on research and teaching (pp. 333-358). Hillsdale, NJ: Erlbaum.
Kurland,D.M.,Mawby,R.,&Cahir,N. (1984,April).The development of programming expertise in adults and children. Paper presented at the annual meeting of th e American Educational Research Association, New Orleans.
Lawton,J.,&Gerschner,V.T.(1982). Are view of the literature on attitudes towards computers and computerized instruction. Journal of Research and Development in Education,16(1),50-55.
Linn, M. C., & Dalbey, J. (1989). Cognitive Consequences of Programming Instruction. In E. Soloway & J. C. Spohrer (Eds.), Studying the novice programmer (pp. 58{62). London: Lawrence Erlbaum Associates.
Linn, M.C& Dalbey, J. (1985). The Cognitive Consequences of Programming Instruction in Classroom. American Educational Research Association, Berkeley. (Sage Document, EDUCATIONAL RESEARCHER-1985-LINN-14-29). Retrieved 10 October 2014
Linn,M.C, & Fisher,C.(1983).Gap between promise and reality in computer education: Planning a response. Proceedings of Making Our Schools Mor eEffective: A Conference for California Educators.SanFrancisco: Far West Laboratories. Retrieved 10 October 2014
Lockheed, M. E., & Mandinach, E. B. (1986). Trends in Educational Computing: Decreasing Interest and the Changing Focus of Instruction. Educational Researcher, 15(5), 21-26
Lockheed,M.E.,Nielson,A.,&Stone,M.K.(1983).Sex differences in microcomputer literacy. In D. Bonnette (Ed.),Proceedings of NECC/5, National Educational Computing Conference1983.SilverSpring, MD:IEE E Computer Society Press.
Mannila, L. (2007). Novices' progress in introductory programming courses. Informatics in education , 6 (1), 139{152.
Mannila, L., Peltomaki, M., & Salakoski, T. (2006). What about a simple language? Analyzing the diculties in learning to program. Computer Science Education , 16 (3), 211{227.
Mara, S. (2012). Teaching Programming for Secondary School: a Pedagogical Content Knowledge. Published Master Thesis, Technische Universiteit Eindhoven, Eindhoven, Netherland.
Mayer, R. E. (1989). The Psychology of How Novices Learn Computer Pro-gramming. In E. Soloway & J. C. Spohrer (Eds.), Studying the novice programmer (pp. 129{159). London: Lawrence Erlbaum Associates.
Merrienboer, J.J.G. (1990). Strategies for programminginstruction in high school:Program completion vs. program generation. Journal of Educational Computing Research, 6, 265-287
Miura,I.T.(1984). Processes contributing to individual differences in computer literacy. Unpublished doctoral dissertation, Stanford University.
Molnar, A. (1997). Computers in Education: A Brief History Technology in Higher Education. Technology in Higher Education (THE) Journal. Molnar, A.R. (1990).
Murnane, J. S., & McDougall, A. (2006). Bad computer science in beginners programming courses: "considered harmful?". In D. Watson & D. Benzie (Eds.), Proceedings of ip-conference on imagining the future for ict and education. Alesund, Norway.
Papert S., Watt D., diSessa A. & Weir S. An assessment and documentation of a children’s computer laboratory. Final Report of the Brookline Logo Project, Brookline, MA (1979).
Pea, R.D. (1984). What will it take to learn thinking skills through computer programming? In D.M. Kurland (Ed.), Developemental studies of computer Programing skills. (Tech.Rep. No. 29). New York: Bank Street College of Education
Pizzingrilli, P., & Antonietti, A. (2010). Implicit theories of creativity in school children anexploratory study. Procedia – Social and Behavioral Sciences, 2(2), 4732–4736.
Ragonis, N., Hazzan, O., & Gal-Ezer, J. (2010). A survey of computer sci-ence teacher preparation programs in israel tells us: 'computer sciencedeserves a designated high school teacher preparation'. SIGCSE'10 pro-ceedings of the 41st ACM technical symposium on Computer scienceeducation.
Resnick, M., & Ocko, S. (1990). Lego/logo: Learning though and about design.(Vol. 8). Cambridge: MIT Media Laboratory.
Robins, A., Rountree, J., & Rountree, N. (2003). Learning and Teaching Programming: A Review and Discussion. Computer Science Education ,13 (2), 137{172.
Romeike, R. (2008). What's my challenge? the forgotten part of problem solving in computer science education. In R. T. Mittermeir (Ed.), Issep 2008, lncs 5090 (p. 122-133). Springer Berlin / Heidelberg.
Tallman, I., Leik, R.K., Gray, L.N., Stafford, M.C. (1993). A Theory of Problem-Solving Behavior. Social Psychology Quarterly, 56(3), 157-177.
Van Merrienboer, J. J. G., & Paas, F. G. W. C. (1987). Instructional strategies and tactics for the design of introductory computer programming courses in high school. Instructional Science , 16 (3), 251{285.
Weigend, M. (2006). From intuition to programme. programming versus application. In R. T. Mittermeir (Ed.), Issep 2006, lncs 4226 (p. 117-126). Berlin / Heidelberg: Springer.
Weir S. & Watt D. Logo: A computer environment for learning-disabled students. The Computer Teacher 8, 11 - 17 (1981).
Weir S. Logo as an information prosthetic for the handicapped (Working paper No. WP-9). MIT, Division for Studies and Research in Education, Cambridge, MA, May (1981).
Wilder,G.,Mackie,D.,&Cooper,J.(1985). Gender and computers: Two surveys of computer-related attitudes.Sex Roles,13, 215-228.
Williams,F.,&Williams,V.(1984).Microcomputers in elementary education: Perspectives on implementation.Belmont,CA: Wadsworth.