Computer Science in the National Curriculum


Published on

Published in: Education, Technology
1 Comment
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Computer Science in the National Curriculum

  1. 1. education Computer Science in the National Curriculum
  2. 2. Introduction........................................................ 3 Chapter 1: Case studies...................................... 6 The early days.................................................................... 7 English primary curriculum............................................. 8 Scottish Curriculum for Excellence................................ 9 US CS 101............................................................................. 9 Estonia................................................................................ 10 Industry certification and training................................ 10 Chapter 2: CS Competencies............................ 11 ‘Computational thinking’................................................ 12 Managing projects........................................................... 14 Working collaboratively.................................................. 14 Coding................................................................................ 15 Debugging........................................................................ 15 Independent learning..................................................... 16 Chapter 3: Programming.................................. 17 Sequencing and selection.............................................. 18 Games and events........................................................... 19 Functional programming............................................... 20 Building and sharing....................................................... 21 Apps .................................................................................. 22 Getting started with procedural programming........ 23 Getting the interface right.............................................. 23 Performance matters...................................................... 24 Chapter 4: Other aspects of CS......................... 25 The network from the command line.......................... 26 Developing for the web.................................................. 27 Interesting algorithms..................................................... 28 Input and output.............................................................. 29 Big data.............................................................................. 29 Chapter 5: Where to go for help...................... 30 Communities..................................................................... 31 Further Reading: Communities..................................... 32 Resources........................................................................... 33 Further Reading: Resources.......................................... 34 Recognition....................................................................... 35 Further Reading: Recognition....................................... 36 In summary........................................................ 37 Microsoft IT Academy..................................................... 38 Microsoft IT Academy Chart ......................................... 39 The English Computing curriculum and Microsoft products.................................... 40 KS1 (5-7)............................................................................. 40 KS2 (7-11)............................................................................ 41 KS3 (11-14).......................................................................... 42 KS4 (14-16)......................................................................... 43 education Contents Computer Science in Education 2 Windows 8.1 in Education Page Page
  3. 3. education Introduction. Computer Science in Education 3 Computer Science in Education These are exciting times for Computer Science Education. In Great Britain, the US and an increasing number of other countries, we’re seeing a resurgence of interest in developing pupils’ understanding of how computers work, how they’re programmed and the fundamental ideas underpinning computation. The work of Computing at School in the UK, the campaign and the number of universities offering Computing for non-specialists courses in the US, great on-line resources for learning about Computer Science (CS), such as the Microsoft Virtual Academy, and some brilliant programming tool-kits that make it easier than ever for users to take control of their computers have all played their role in this. There are are several reasons why this trend should be welcomed: • There’s an economic argument, at both national and individual level - more programmers in the workforce makes it easier for technology companies to recruit locally; it might mean more tech-based start-ups and might also improve the chance of managers making sound decisions when it comes to technology. At an individual level, a grasp of coding opens up pathways to further academic and vocational study as well as career options in, and beyond, the IT industry: it’s certainly not just programming jobs where the ability to program is useful. The demand for those with a sound grasp of current IT systems and programming languages, acquired through academic courses, apprenticeships and courses leading to industry certification seems to be ever increasing, with many positions unfilled due to a lack of training and certification. There’s an opportunity here for the education system to teach more relevant and job-related skills. • There’s also an argument around empowerment: ‘program or be programmed’ as Douglas Rushkoff memorably puts it. Given the role that digital technology already plays in our lives and society, those who understand how computers works, and who can program computers themselves, almost inevitably enjoy greater autonomy and can be more active, and indeed critical, participants in an increasingly digital society. • The UK falls behind many other countries in the EU and further afield, for example, China and India have hundreds of thousands of Computer Science graduates. Currently there are 100,000 vacant jobs in the UK technology sector but we have a skillset gap and so look to international graduates to fill these positions. In 2013 Poland had 40,000 Computer Science graduates, whilst the UK had just 7,434. Microsoft believes that with the right training and support, all Computer Science related jobs in the UK could be filled by a UK Graduate. For more information and statistics surrounding Computer Science in the UK, please see the following infographic overleaf. Read more Computing at School Read more The Read more Microsoft Virtual Academy
  4. 4. GET SWITCHED ON TO COMPUTER SCIENCE IN 2014 From September 2014, Computing will become a statutory part of the English national curriculum for 5-16 year olds. The government not only wants pupils to be creative and confident users of information technology – but also to understand the fundamental principles of Computer Science. COMPUTING UK SCHOOLS 74% of teachers say they feel unprepared to teach Computing 69% of teachers are not confident the government will provide sufficient support From September 2014, the idea is that all children from 5 - 16 will have targets for progress in Computing. But… full-time equivalent school workforce employees working in publicly funded schools in England 899,000 There are full-time qualified teachers in the England 442,000 There are full-time and part-time pupils in around 24,300 8.2 MILLION There are schools in England Equipping pupils to use computational thinking and creativity to understand and change the world. – DfE Computing has deep links with mathematics, science, design and technology – and provides insights into both natural and artificial systems – DfE The UK is falling behind many other countries in the EU and further afield, for example, China and India have hundreds of thousands of Computer Science graduates 2013 COMPUTER SCIENCE GRADUATES COMPUTING OPPORTUNITIES IN THE UK The UK is the world’s largest economy 6TH 1 There are currently vacant jobs in the UK technology sector 100,0002 3 Microsoft believes that with the right training and support, of all Computer Science related jobs in the UK could be filled by a 80% UK GRADUATE MICROSOFT IN BRITAIN Computer Science forms the core of the computing curriculum. It’s a quintessentially STEM subject that teaches many key skills: • Unique and creative thinking • Problem solving • Abstraction • Precision • Computation • Practical application UK 7,434 Poland 40,000 is helping teachers get ready for this changeMICROSOFT The sectors that need computing skills (with 27 per cent of UK jobs already IT-related) are proliferating, and we’re not educating enough new talent. The number of students taking Computing A-levels has dropped by 61 per cent since 2003. And graduation rates are way behind job creation figures. At Microsoft, we believe that our support will help the UK education sector to turn this around. We built our success on innovation – and we’ve been helping educators in the UK for over a decade. When the English national curriculum changes in September 2014, Microsoft UK can help you integrate Computing into your education programme. We’re committed to work with schools, consumers, businesses and the British government – bringing to bear our unique set of assets and experience to open new horizons. And we’re focused on creating opportunities for young people by empow- ering them to imagine and realise their full potential. The key to inspiring the next generation is shifting the perception of Computer Science. In the past there has been too much focus on technology. And not enough on ideas. This has given students the impression that Computer Science is a niche subject for ‘geeks’. We’ll help you make it an exciting and creative subject for everyone. REAL IMPACT FOR A BETTER BRITAIN MICROSOFT IN BRITAIN Program or be programmed – Douglas Rushkoff Microsoft UK has made a commitment to encourage innovation, growth and competitiveness in the UK. To help teachers get switched on to Computer Science in 2014, we’re providing support, technology and training to both primary and secondary schools. There’s support for teachers and initiatives to inspire pupils. For pupils: a stimulating game design challenge for young children that makes coding fun THE KODU KUP PROJECT SPARK an exciting project for Windows 8.1, Xbox 360 and Xbox One that allows children to become game makers THE IMAGINE CUP the world’s premier technology competition for secondary school students DREAMSPARK • Equipping students with free professional developer software and resources • Encouraging passion and skills in school and at home • Free DreamSpark Premium for Computer Science students aged 16-19 MICROSOFT TOUCHDEVELOP for coding and creating games or apps across touch screen devices For teachers: IT ACADEMY • Microsoft technology curriculum • User-based skills • Become an accredited Computer Science teacher through the Microsoft Technology Associate qualification a valuable set of resources, helping teachers get to grips with teaching Computing from Year 1 upwards, created jointly with award-winning publisher Rising Stars 18,000 FREE COPIES OF ‘SWITCHED ON COMPUTING’ COMPUTER SCIENCE BOOT CAMPS IN 6 UK CITIES • Taking 1,500 teachers from concerned to confident • Microsoft Virtual Academy for those who can’t make it
  5. 5. Computer Science in Education education Introduction continued. • Coding as creative work shouldn’t be underestimated either: it’s wonderful to see how digital technology has made it possible for many to produce high quality, creative work in a range of media themselves - from photos, through publishing to animation and video, and a CS education open up these opportunities further still into developing for the web, hacking hardware, writing apps and beyond. • At a more fundamental level, a persuasive case can be made that learning about CS, particularly learning to program, helps develop a mind-set, ‘computational thinking’, which gives unique insights into complex systems, both technological and natural, and a set of powerful tools for solving problems, with or without computers. • For me, the most persuasive argument is about the nature of a liberal education in the third millennium: we value the place of art, music and poetry on the curriculum not because they’re vocationally useful, but because we’ve come to recognise that being able to paint a picture, compose or perform a piece of music and read or write a poem is an essential part of what being ‘educated’ means. The same, to my mind, is now true of computer programming - these days, can an education really be complete without some grasp of the ideas of CS and the experience of programming? Whilst these arguments combine to make a strong case for including CS on the school curriculum, most would argue that this should be alongside a solid grounding in using and applying IT, as well as developing critical digital literacies that encompass an understanding of the implications of technology at individual, community and societal levels. Teaching CS does, though, place some demands on teachers’ own subject knowledge as well as their pedagogic skills. Relatively few in the profession have a background in academic Computer Science or software development, and thus many, particularly at primary or lower secondary level, will find themselves expected to teach things that they themselves were never taught. I don’t think teachers should be daunted by this, as learning new things is really exciting, and renews teachers’ own understanding of how learning takes place. For CS, there are great resources and supportive communities there to help, as long as teachers have the desire, and the time, to learn. In what follows, I seek to explore some aspects of CS education at school level, looking first at a few brief case studies of curriculum development. I discuss some of the competencies that CS and software development draw on, before considering some of the tools available for learning to program. There’s more to CS than programming though, and so I look at a few other aspects, before providing pointers to further resources to draw on in school. For me, the big change from old-style ICT lessons to CS is the move from learning the skills to use particular applications to developing an understanding of principles, concepts and techniques. Whilst the illustrative examples in what follows are drawn from Microsoft’s products and platforms, the particular technologies are far less important than the ideas. 5 Computer Science in Education
  6. 6. education Chapter 1: Case studies 6 Computer Science in Education
  7. 7. The early days. Back in the earliest days of computers in education, the distinction between using IT across the curriculum and learning to program simply didn’t exist - the early school computers came only with an operating system and simple programming languages. To get these computers to do anything typically involved writing programs, often typing them in and fixing the resulting bugs. In those days, using a computer would normally involve programming a computer. Whilst a few schools in the 60s and 70s enjoyed shared access to university mainframe computers, it wasn’t until the early 80s and the rapid development of personal computers that the computers in mainstream primary and secondary schools became common place. Many teachers learnt to program, often out of their own interest and a willingness to create interactive resources for their pupils to use. Teachers taught pupils to program, and many pupils carried on programming at home, creating (and sometimes selling) their own games, with more than a few going on to study CS at university. The impact of Seymour Papert and others, introducing young children to the ideas of mathematics and computation through the practical, creative work of programming in Logo, shouldn’t be underestimated: for them, programming was never an end in itself, it simply provided a rich environment in which pupils could learn about learning and think about thinking. Papert’s insight, that making things to show to others provided some of the most powerful learning opportunities, still lies at the heart of the best IT and CS education pedagogy, and can apply to learning in plenty of other subjects too! There’s a certain nostalgia for those heady days amongst my generation, but the apparently inexorable progress of technology has opened up opportunities few of us would have dreamt of back then, making programming and other aspects of CS far more accessible and appealing to those beyond the geeky minority. Chapter 1: Case studies 1.1 education Computer Science in Education 7 Computer Science in Education Read more Programming in Logo Read more Seymour Paper
  8. 8. English primary curriculum. In January 2012, education secretary Michael Gove announced that the ICT national curriculum would be ‘disapplied’, giving schools complete autonomy over what they’d teach pupils in ICT, in the hope that they’d make the most of the chance to develop rigorous, challenging curricula encompassing much more CS. Computing at School had already developed its own Computer Science Curriculum, and platforms such as Kodu and Quick Basic were starting to attract the interest of a few primary teachers. Later that year, the decision was made to develop a new, statutory programme of study for ICT, subsequently renamed Computing, drawing on the expertise of educators, the IT industry and computer scientists. The new programme of study, which becomes a statutory requirement in September 2014, guarantees an entitlement to be taught Computer Science, IT and digital literacy for all children in local authority primary and secondary schools. Whilst some programming had been on the National Curriculum right from the start, the new programme of study raises the expectations significantly, emphasising aspects of computational thinking and an understanding of computer systems as well as coding. The new programme of study has high ambitions. It begins: “A high-quality Computing education equips pupils to use computational thinking and creativity to understand and change the world.” The preamble and aims make clear that this is about much more than children learning to program; for example, one of the aims is that pupils “can understand and apply the fundamental principles and concepts of Computer Science” The foundations for this are laid early on, with 5-7 year-olds (Key Stage 1) being taught about algorithms and to use logical reasoning to predict the behaviour of simple programs, as well to create and debug programs of their own. 7-11 year-olds should develop their understanding further still, decomposing problems into smaller parts, and using logical reasoning to detect and correct errors in algorithms and programs, in addition to using programming constructs such as sequence, selection, repetition and variables, and working on projects that involve controlling or simulating physical systems. There’s also an expectation that pupils understand the internet and the web, and appreciate how search engines like Bing select and rank results. The programme of study, as with the rest of the national curriculum, should be considered the equivalent of building regulations rather than architects’ plans. There’s ample scope for teachers and others, individually or collectively, to develop their own creative, stimulating schemes of work, resources and lesson plans for pupils here. Just as an ‘embedded’ or cross-curricular approach to ICT education has had much to commend it, providing a motivating context for pupils to develop their skills in using technology, so I’m hopeful that teachers will find ample opportunity to integrate programming and other aspects of CS with the rest of the curriculum - what better way to learn about the the motion of the planets than through writing a program to simulate this? What about locating the IP addresses of servers and traceroute hops on a map to connect computing and geography? How better to develop an understanding of fractions arithmetic than by writing an educational game to teach this to others? 1.2 education Chapter 1: Case studies Computer Science in Education 8 Computer Science in Education Read more The New Programme of Study Read more Computer Science Curriculum
  9. 9. Scottish Curriculum for Excellence. North of the boarder, Scotland has taken Computing Science education seriously for a while now, as part of the technologies area of Curriculum for Excellence. With a very successful computer games industry, it’s perhaps no surprise that the Scottish national curriculum has used gaming as a motivating context for developing an understanding of CS, with individual or collaborative work on designing and implementing a game part of the expectations at lower secondary level. Gaming is a great way in to CS education. Many of the claims made for game- based learning, such as immediate feedback, interactivity, challenge and flow, apply to programming too. With many pupils already into gaming outside of school, giving them some experience of writing their own games develops their ‘literacy’ with games as media, with programming being to writing as playing is to reading. A more critical understanding of games and how they’re made draws on, but then develops, many pupils’ experience of technology outside of school. For many a game, playing successfully is at least in part about figuring out the algorithms which developers have programmed into the game. The Royal Society of Edinburgh and the British Computer Society Academy of Computing have worked together to develop a set of free resource packs for Computing Science teachers, including topics such as game development and apps, but exploring the CS concepts here as well as these highly motivating practical projects. US CS 101. In higher education, Computer Science has quickly earned it’s place as a highly regarded academic discipline. Undergraduate and postgraduate degrees are widely available, with syllabuses ranging from highly practical software engineering to more theoretical Computer Science. A-level Computing is increasingly accepted, and even preferred, as an entry qualification, and as more students gain experience of CS at school level it’s hoped increasing numbers will go on to study CS at University, reversing the decline seen in recent years. It’s worth noting that programming is becoming increasingly important in other academic disciplines too. There have been close connections between mathematics and science and CS right from the earliest days, but the role of Computing in business, the arts, social science and even the humanities is ever more important, and thus professional and academic work in these fields will often draw on some programming skills. In US Universities, this is now recognised through the development of Computing for non-specialist courses, such as Berkeley’s ‘Beauty and Joy of Computing’ course, now available to US high school students as an Advanced Placement course. Current interest in providing open access to higher education online, often as ‘massive, open online courses’ (MOOCs), means that these materials, and those of similar courses such as Harvard’s CS50, are freely available to anyone with an internet connection. Whilst many find it hard to maintain motivation for online study, access to high quality courses such as these, from some of the world’s leading universities, provides a great opportunity for teachers to develop their own CS subject knowledge, and for students at school or university to pursue a subject in more depth than allowed by exam specifications or their own degree syllabus. 1.3 education Chapter 1: Case studies 1.4 Computer Science in Education 9 Computer Science in Education Read more Curriculum for Excellence Read more The Royal Society of Edinburgh Read more Harvard CS50Read more Joy of Computing
  10. 10. Estonia. It’s not just Great Britain and America where there’s interest in Computer Science at school level. The Baltic state, Estonia, has placed great value on digital technology, with connectivity and online services actively promoted by national government and extensive free wifi, even in rural areas. The Estonian President himself learnt to program when at high school. Programming and the basics of application development are on Estonia’s national curriculum as an optional course for Grades 10 to 12, but recently there’s been interest in introducing CS much earlier, with the development of in-school and extra curricular materials from Grade 1 onwards through ‘ProgeTiger’. In grades 1 to 4, pupils are introduced to CS ideas through games involving logic and thinking before going on to develop games of their own using Kodu and then learning to control screen turtles using Logo. This leads naturally into graphical and then text based programming for robots in grades 5-9, alongside web development. Materials for the last three grades take the web-development ideas further, including design aspects alongside the development of web-based applications. As with developing computer games, mobile apps and robotics programs, developing applications for the web provides a great context for learning CS ideas, linking these with design principles and an appreciation of the broader context for programming, thinking through issues such as accessibility, security and marketing. Industry certification and training. Microsoft has long recognised the importance of training, study and certification for those working at all levels of the IT industry, or working with IT in other industries. Many of the qualifications and courses available include significant elements of Computer Science, with a highly practical focus. The CV of an IT professional might include a number of such certifications, at progressively more demanding levels, recognising the increased responsibilities with more senior roles. A starting point would be that of Microsoft Technical Associate, with the Developer pathway covering many aspects of programming and Computer Science. Pupils could study for this entry point qualification alongside their GCSEs whilst still at school (the syllabus has close links to the AQA Computing GCSE specification). Further Microsoft Certified Professional (MCP) pathways take in server and database solutions (MCSA Solutions Association, MCSE Solutions Expert), as well as Windows apps, Web applications, SharePoint applications and application lifecycle management through MCSD Solutions Developer. Schools and colleges interested in offering MTA certification, or perhaps just interested in using the course materials to support their Computing curriculum, should consider enrolling in Microsoft’s IT Academy programme. This includes professional development for teachers through the teachers’ starter pack and 10 free MTA Certifications. MTA is now being accredited by the British Computer Society and provides an excellent way for teachers to learn some of the knowledge needed to teach the new Computing curriculum. IT Academy also comes with the free digital academy MTA Courseware that can be used to support both the teaching of a GCSE (or separate computer course) as well as the MTA certifications themselves. 1.5 education Chapter 1: Case studies 1.6 Computer Science in Education 10 Computer Science in Education Read more Proge Tiger Read more Microsoft IT Academy
  11. 11. Chapter 2: CS Competencies Programming forms just one of the portfolio of competencies which a CS education develops. Whilst the practical, creative activities or programming are often likely to form the focus of CS lessons, at school learning to program isn’t, nor should it be, an end in itself, but is more about extending and applying our own cognitive functions. education11 Computer Science in Education
  12. 12. ’Computational thinking’. The programme of study focusses rightly on pupils using ‘computational thinking’, and this features too in CAS’s own curriculum as well as much of the CS education work happening in the US. However, ‘computational thinking’ is not an unproblematic term. It certainly doesn’t mean learning to think like a computer, but nor can we simply assume that ‘learning to think like a computer scientist’ is something that’s easily achievable at school level, even if there were a clear agreement on what that means. Computer scientists typically have years of education and experience behind them, and there’s an unavoidable gap between studying a subject at school and pursuing an academic or professional career in a discipline. Perhaps ‘computational thinking’ is a close analogue of the scientific method, and it does seem reasonable for those studying science at school to have some grasp of how science develops and how scientists go about investigations. Computational thinking, then, might be thought of as looking at systems, both natural and artificial, and particularly problems, in a way that they can be modelled and perhaps solved using computer systems. Just as the scientific method can be applied beyond scientific investigations, so computational thinking provides a powerful set of insights and processes for understanding systems and problems, even if they’re not going to be computerised. There’s a fair degree of agreement over some of the aspects that make up computational thinking: • Algorithms: before any code gets written, the programmer needs to have a pretty clear idea of the steps that have to be coded. In the old days, this might have involved drawing flowcharts, and more recently a more or less formal ‘pseudo-code’ might be used to express the steps towards a solution, but a clear grasp of the steps or rules that produce the required output or solve the given problem lies at the foundation of any software development. There are often many different algorithms to achieve the same goal: part of the task of CS is comparing these and finding more efficient ways of getting the same job done. Thinking algorithmically has applications beyond CS: from cookery through to project management, it’s important to have a clear grasp of the steps, and it is usually worth making sure that you’re doing this as efficiently as possible. • Decomposition: Modern software engineering, as with other engineering disciplines, builds solutions through systems of modular components, each working as they should, and fitting together with all the other components of the system. Developing a piece of software involves a high level understanding of the system as a whole, but also meticulous attention to detail in each of the individual components. In complex projects, there may be substantial teams working on each component, but even where just one or two programmers are involved, a modular architecture seems to be the most reliable way to produce, and reuse, working code. Breaking problems down into their components also applies beyond software engineering - any project work is likely to draw on this approach, within or beyond school, as does much mathematical problem solving. education 2.1 Chapter 2: CS Competencies Computer Science in Education 12 Computer Science in Education
  13. 13. education • Patterns: After only a little time programming, a programmer will recognise certain common structures, or ‘patterns’ in their code, common ways of achieving particular outcomes or code structures which can be used time and again to get things done. Most programming languages make use of procedures, functions or classes, allowing the programmer to reuse their own code time and time again, and indeed standard libraries of code make the job of the programmer that much easier, as they can simply use functions developed by other developers rather than having to write everything from scratch themselves. A good computer scientist is a lazy computer scientist, in the sense of looking for more efficient ways to achieve a goal as well as drawing extensively on others’ work rather than constantly reinventing wheels. • Logical reasoning: As wholly deterministic machines, computers merely follow the programs they’re given. Thus their behaviour is entirely predictable - if the computer is in the same state, if it runs the same program with the same input, then it will produce the same output. Understanding how programs work or how algorithms work, is about applying logical reasoning - it’s about thinking clearly what programs or commands do when given well understood inputs or parameters. This sort of reasoning is useful for using computers as well as programming them: when software doesn’t quite do what you might expect it to, identifying what’s changed since last time or thinking carefully about how the program works may well get you back on track. • Abstraction: Whilst you could argue that the thought processes previously mentioned could be developed, and certainly applied, in plenty of other areas of the school curriculum, the thing which sets CS apart is the notion of abstraction. Abstraction is about capturing the essential ideas of a system, but not worrying too much about the detail. The London Underground map is a good example: this shows the order of stations on each line and where you can transfer between lines whilst ignoring the details of distance or physical location. In using computers to solve problems or model systems, the programmer captures some detail of the system they’re working with, but ignores much: a simple game physics engine might model Newtonian gravity and acceleration but ignore air resistance or moments of inertia. Using and programming computers itself involves many layers of abstraction - the user might be content with clicking the save button, but the application programmer would need to think about how the information in a document is represented as a data file, whilst the operating system developer is concerned about input and output to the file system itself and the hardware engineer with nanoscale electronics and magnetic domains. Chapter 2: CS Competencies Computer Science in Education 13 Computer Science in Education A good computer scientist is a lazy computer scientist ’Computational thinking’ continued.2.1
  14. 14. education Managing projects. Developing working and reliable software beyond simple programming exercises is a complex process, all the more so in ‘real world’ settings with large teams and multiple requirements. The skills of managing software projects, from establishing requirements through to testing and documenting code, whether under old school ‘waterfall’ methodologies or agile approaches, are important ones. Acquiring these skills through working on programming projects at school is an important preparation for more extended software projects at University and then in the industry. Whilst the specifics of particular development methodologies will vary between contexts, working to deadlines, deploying limited resources as effectively as possible, keeping track of tasks, ensuring work is high quality and does what it should and keeping others informed are common to software projects within and beyond education, as well as plenty of projects beyond Computing. The skills acquired in managing projects in one context or domain can be applied, with more or less modification, to other projects too. Working collaboratively. It’s rare for a software project to be developed by lone programmers these days, with most software needing a team of programmers to work together to get things done in the time that’s available. Providing some experience of collaborative group work for CS projects has much to commend it, with contributing effectively to a team a pretty much indispensable ‘21st century skill’. In most schools, it’s no longer necessary for pupils to double up when working on computers, and indeed there are increasing numbers of schools that have got as far as 1:1 access to computers (often tablets of one sort or another) across the curriculum. That said, when learning to program, there’s much gained through having a partner to work alongside, to bounce ideas off and to help with debugging code. In CS, as in so many other subjects, pupils can learn so much from one another as well as their teacher or other resources. ‘Pair programming’ is a well regarded and highly effective agile development approach, in which two programmers work together on a shared computer, one typically taking the ‘driving seat’ position of hands-on, line by line coding, whilst the other takes on the role of a navigator, thinking about strategic issues and reviewing the code as it’s typed. The pair swap over frequently. Whilst pair programming is far from universally accepted, some experience of this could be very useful in CS lessons, even if it’s not something most exam boards would encourage in controlled assessments! 2.2 2.3 Chapter 2: CS Competencies Computer Science in Education 14 Computer Science in Education
  15. 15. education Coding. The practical experience of writing code itself has to be part of a CS education. There are going to be many factors determining the choice of language, not least the trade off between accessibility and flexibility. This balance changes depending on specifics of the task and the age and experience of learners. I’ll explore some of the possibilities in the next section. Coding is the task of translating the ideas, steps or rules of the algorithm into a formal language understood by other software (interpreters and compilers) on the computer. Part of learning to program is about mastering the language, understanding its vocabulary, grammar and syntax, as well as knowing where to look for help when using less familiar bits of the language. There are parallels with using English, or learning a foreign language, particularly in relation to the need for attention to detail in spelling, punctuation and grammar, although our fellow humans are usually much more forgiving than computers in interpreting what’s meant. The computational thinking ideas I discussed above get their practical expression through programming: the same algorithm can be expressed more or less succinctly in any number of programming languages; constructs such as procedures, functions capture the idea of decomposition; data structures, classes and libraries capture something of the pattern concept; flow control as well as Boolean operators (e.g. ‘and’, ‘or’ and ‘not’) link closely with logical reasoning; and all programming languages, even assembly and machine code include at least some element of abstraction: the higher level the language, the more abstraction. Look out for how these ideas apply in the programming languages you use and teach. Debugging. Programs hardly ever work the first time round. It’s almost inevitable that mistakes get made. Finding and fixing those mistakes is an essential part of software development. Of course, it makes sense to try to keep the mistakes to a minimum from the start: careful, logical thinking through the problem, a thorough knowledge of the programming language used and some thought on how the program’s likely to be used, and the different inputs with which it might be provided, are all going to help, but even with the best will in the world, errors do slip in. Some of the simplest errors to fix are ‘syntax’ errors, where mistyping produces code which has no meaning in the programming language, and thus the computer refuses to interpret or compile the program. Error messages normally point the programmer in the right direction for spotting the typo, and a careful look, sometimes with the language reference to hand, will normally help fix this sort of mistake. The real problems emerge though when the code is syntactically correct, but doesn’t do quite what’s intended, due to errors in the logic of the program or the underlying algorithm. Without the helpful syntax error messages, there’s no guarantee that programmers will even spot these sorts of bugs, which is why rigorous testing of each bit of the code is stressed so often in software engineering courses. Whilst testing will help identify if there is a bug, and can help with locating where the bug is, tracking it down calls for thinking through the code logically, perhaps explaining it to yourself or someone else. Development tools can help here too: the debuggers built into integrated development environments like Visual Studio let you set breakpoints and step through code, checking (or changing) the value of variables and other data structures as you do. 2.4 2.5 Chapter 2: CS Competencies Computer Science in Education 15 Computer Science in Education
  16. 16. Debugging continued. On other occasions, things don’t work as intended because of problems with the resources used, or more often the programmer’s understanding of those resources - a thorough knowledge of how the language works, and even how the underlying operating system and hardware work can help here. In The Craftsmen, Richard Sennett argues that and so it’s best to think of debugging as a great opportunity for learning - for many, the sense of achievement when they eventually find and fix a bug after a struggle is akin to the rush from completing a particularly challenging level or mission in a computer game. Independent learning. Whilst there’s much to be said for learning to program from a great teacher or from one’s peers, many developers are, to a greater or lesser extent, self taught. Completing programming exercises or working on controlled assessment or coursework tasks have their place, but such things can rarely match the challenge or motivation of choosing your own project, and teaching yourself enough programming to solve the problems you’ll encounter along the way. In some ways, learning to program is like learning music - few would argue that there should not be a place for it as part of the school curriculum, but nor would many see class music lessons as enough for those for whom music is a passion or a future career - hour after hour of practice is necessary to develop mastery, and working with other musicians on joint endeavours, whether that be youth orchestra or rock band, provides motivation and opportunity to develop further still. Similarly with coding: it’s the time spent beyond the formal curriculum where much of the really valuable learning takes place, including particularly the contributions to shared projects. There’s much more to CS than coding though, and whilst practical skills can come through independent, autonomous and informal learning, the theoretical foundations of the subject are more likely to be learnt through more formal learning, drawing on, and making sense of, this practical experience. education 2.6 Chapter 2: CS Competencies Computer Science in Education 16 Computer Science in Education 2.7 It is by fixing things that we often get to understand how they work
  17. 17. Chapter 3: Programming Whilst it’s true that there’s more to CS than programming, it’s not that easy, or particularly interesting, to learn CS without doing some programming. There’s a huge variety of languages and environments around, and the choice of language is going to be determined by a number of factors, including the age and experience of the programmer as well as the tasks at hand. From the perspective of CS education at school level, there’s no real need to rush to the languages currently in use in industry: we are, after all, concerned with education rather than training: computational thinking and a grasp of the fundamentals of CS can be developed through using simpler, more accessible, less powerful languages that might throw few cognitive stumbling blocks in the way of those learning them. Whilst the switch from procedural to object oriented or functional programming paradigms can take some effort, most would agree that learning a new programming language is much easier for those who can already program. So, where to start and where to go next? What follows are a few examples of things worth learning in programming and ideas for how some of Microsoft’s products can be used to help explore these. Remember though, that CS education is much more about developing pupils’ understanding of ideas than about learning to use particular tools or programming languages. 17 Computer Science in Education education
  18. 18. education Chapter 3: Programming Sequencing and selection. When pupils start to learn about algorithms, real world contexts are much more likely to be accessible than abstract computational problems - think about the steps a child might follow to get ready for school in the morning or to prepare a sandwich. Breaking down a task into a sequence of steps is at the heart of algorithmic thinking. It’s easy enough to draw pictures to illustrate this, or to jot down sentences to describe the various steps, but it’s fun working with digital media here too. Taking a collection of jumbled up photos in PowerPoint or sentences in Word and using drag and drop editing to get the steps into the right sequence provides an easy way in. Alternatively, you could video yourself or a pupil following a recipe, TV cookery programmes being a genre with which many children will be familiar. Import the footage to MovieMaker, then split into clips and jumble the order up on the time-line, setting pupils the challenge of reassembling the clips into the right sequence. The idea of selection in algorithms, such as that of ‘if ... then .... else ...’ rules, can be explored through PowerPoint too, using two or more hyper-links on slides to link to other slides in a non-linear deck. For example, pupils can quickly develop a simple ‘choose your own adventure’ game by creating a branching story, each scene written or illustrated on its own slide, with choices presented as hyper-linked options, with the next slide determined according to whichever option is clicked. The same idea could be used to model biological classification keys (or ‘branching databases’ as in the old QCA scheme of work), with successive questions displayed according to the answers clicked on preceding slides. Getting pupils to think about the branching, typically binary, tree structure underpinning decks like these leads into interesting, and quite subtle ideas about formal data structures. 3.1 Computer Science in Education 18 Computer Science in Education Read more Branching Databases
  19. 19. education Chapter 3: Programming Games and events. Whilst traditionally many of the languages used to introduce programming are imperative or procedural, in the sense of one step after another, and indeed a good introductory definition of ‘algorithm’ captures the idea of a sequence of instructions, most of the programs that pupils use on a daily basis, whether application or operating system, on phone, tablet or laptop, tend to be more about implementing algorithms understood as sets of rules for describing what should happen in response to certain events, such as key presses, mouse clicks or messages from other bits of code. Thus, for example, the algorithms for many computer games are much more likely to be ‘in this situation, if this happens, do that’ than ‘do this, then this, then this’. Given many children’s fondness for and familiarity with computer gaming, there’s much to be said for providing an early experience of programming in this sort of event-driven, rule based paradigm. Kodu, which runs on both Windows Tablet and PCs and the Xbox, provides a beautifully rendered 3D environment for developing simple computer games using just this sort of event-driven approach. Kodu can be programmed using an Xbox controller or keyboard and mouse or even your fingers, using an icon based interface, without the need to type lines of code, thus avoiding the pitfalls of syntax errors and making this accessible to pupils for whom typing commands might present too much additional challenge. Programs are expressed in physical terms, using concepts like vision, hearing, and time to control character behaviour as sets of rules such as ‘when Kodu sees a red apple move towards it quickly’. As with any programming language, the way simple instructions such as these are combined is where things get interesting, with many different types of computer games being possible. There’s an online gallery of games that Kodu programmers have shared and good curriculum support materials as well as self-study tutorials built in to Kodu itself. It offers a highly motivating introduction to programming, and whilst not a general purpose language it provides some insights into more complex aspects of CS, with the ‘heavy lifting’ of simulating physics and a 3D environment already in place. There’s an annual Kodu Cup, for UK school children aged 7-14, with schools entering teams of three pupils. At the time of writing, Microsoft offer Xbox 360s at a very attractive price to UK schools, including a Kinect controller and a DreamSpark subscription. 3.2 Computer Science in Education 19 Computer Science in Education Read more Kodu Read more Xbox 360 for Education
  20. 20. education Functional programming. Another programming paradigm, that of functional programming, draws heavily on mathematical ideas. In functional programming, algorithms are thought of as functions, with computation being the evaluation of these functions. Because the output of a function is determined solely by its inputs, functional programming advocates argue that these languages make it easier to understand and predict the behaviour of a program. Functional languages have quite a following in academic CS. Whilst it’s very far from a typical example, Excel provides one way to gain at least some experience of functional programming - each cell in a spreadsheet has a constant value or is a function, producing a value based on the contents of other cells. The state and behaviour of many systems, from mortgages or pensions, to predator and prey populations can be modelled by entering the right functions into an Excel spreadsheet. Much of the ‘computational thinking’ ideas discussed above apply as readily to creating spreadsheet models as they do to writing more conventional, imperative programs. In functional languages, iteration is usually accomplished via recursion, ie by a function calling itself - Excel typically complains of circular references in these circumstances, but it’s possible to turn this error message off by switching to manual calculation. The notion of re-using code where possible is a bit harder to do in Excel - whilst it’s easy enough to copy and paste, or fill, formulae between cells, the next step would be to create a user defined function using some simple Visual Basic in Excel’s own editor. For those interested in pursuing functional programming further, the F# language is available as standard with Visual Studio, and integrates fully with the .NET framework. Excel has other uses too for the Computing curriculum – it’s a great tool for working with binary, as well as exploring the way in which images and text can be represented digitally – check out Matt Parker’s online JPG to spreadsheet converter. It’s a great tool for learning about Boolean logic (AND, OR, NOT etc) too. Excel spreadsheets can be used as a data source for powerful, visually stunning apps built using Microsoft’s Project Siena tool, currently in open beta, with some interesting applications linked to customer facing business processes such as product catalogues and logistics. 3.3 Chapter 3: Programming Computer Science in Education 20 Computer Science in Education Read more F# Language Read more Spreadsheet Converter Read more Microsoft’s Project Siena
  21. 21. education Building and sharing. Papert’s great insight, that Computing, and much else, is learnt best through building things to share with others, provides the foundation for a powerful pedagogy for CS. The internet makes it even easier to do this with simple ways to share programs as part of an online community of practice. We can, though, go beyond mere sharing of code, using the internet to download, examine and modify the code that others have developed: this sort of remixing of the source code for computer programs is an effective way to develop software collaboratively, as well as a great way to learn to program - it’s much easier to tweak and change someone else’s programs than to start from a blank screen, and many find it easier to learn how to program from examples than from manuals. Project Spark (currently in beta testing, and available for Xbox and Windows 8.1) provides a rich, immersive, and crucially editable, 3D environment for developing games, movies or other experiences. As in Kodu, programming is done through creating sets of ‘when ... do ...’ rules for the ‘brains’ of the different objects in the world, using game controllers, touch or the mouse. It’s easy to see Project Spark as the successor, or perhaps as the step on, from Kodu. Project Spark is founded on the idea of sharing and remixing of the content others create, although there’s no requirement to share the source code for projects publicly. When you download games created and shared through the Project Spark community, you can duplicate and then change the terrain, the objects and their brains. The Kodu Game Lab Community website is another prime example of sharing, with features including technical support to help find solutions, a show and tell area to discuss cool worlds and creations, a suggestions area and a forum to connect with other Kodu enthusiasts. All of this and a heap of training resources to keep moving with your games. 3.4 Chapter 3: Programming Computer Science in Education 21 Computer Science in Education Read more Project Spark
  22. 22. education Chapter 3: Programming Apps. The impact of smart-phones and tablet computers has been phenomenal - ubiquitous access to Computing, and to the whole of the web has been transformative for so many aspects of our lives, including, at least potentially, education. For many Schools, up until quite recently, the impact of technology on learning has been limited by access to computers - where Computing and internet access has been restricted to ICT suites and the classroom PC, the opportunities for pupils’ own independent and collaborative work on-line have been similarly restricted. Now though, many pupils, particularly at Secondary School, have smart-phones of their own and simple, reliable, affordable tablet computers have renewed teachers’ and schools’ interest in access to technology across the curriculum. Programming on a smart-phone or tablet though can be difficult, with many of these devices apparently designed to make it quite a challenge to create your own code, particularly on the device itself. TouchDevelop is a web-based programming environment created with touch based interfaces such as Microsoft Surface in mind, although it can be used with any device that has a web browser. Whilst the programming language is text based, it’s not keyboard driven: apps can be built on the tablet or smart-phone itself by tapping, selecting and editing parameters, with much of a smart-phone or tablet’s functionality there to access through the programming language. What’s more, as TouchDevelop is web-based, the apps created can be used straight away on multiple platforms. Although TouchDevelop shares some of the event driven feel of Kodu and Project Spark, there’s more scope here for writing procedural programs: for example, Logo style turtle graphics are available, making this a great way in to more formal programming, particularly (but not only) in schools that have gone down the tablet or BYOD (bring your own device) routes to technology provision thanks to its support for multiple platforms. The programming concepts here would transfer readily to traditional languages such as Java or C#. There’s a great introductory ‘digital literacy’ course on building apps in TouchDevelp, and lots of interactive tutorials built in to the platform itself and again the share/remix approach is part of how the language works. The apps developed can even be exported and sold on the Windows Phone and Windows 8 stores. 3.5 Computer Science in Education 22 Computer Science in Education Read more TouchDevelop
  23. 23. education Chapter 3: Programming 3.6 Computer Science in Education 23 Computer Science in Education 3.7 Getting started with procedural programming. Lovely as TouchDevelop and Kodu are as innovative introductions to coding crafted around new interfaces, after a while using a touch screen or Xbox controller seems to slow things down and becomes more frustrating than helpful. At this point, turning to text based programming using an accessible language like Small Basic would be a natural step forward. The Small Basic editor is simple, but it has ‘intellisense’ built in, with possible commands, methods and parameters being suggested as you type, together with a helpful language reference being displayed to the side of the editor window - a great resource for learning the programming language as you go. As with TouchDevelop, turtle graphics are fully supported, drawing on the heritage of Papert’s use of Logo’s turtle graphics for introductory programming. Creating complex geometric patterns using Small Basic would be accessible to upper primary or lower secondary pupils as an introduction to text- based, graphics programming. Small Basic provides a rich set of libraries make it possible for beginners to develop compelling and interesting programs, and there’s support for event driven programming, which makes it possible to develop simple graphical user interface applications including games. Small Basic programs can also be published online, again providing a sense of audience and the chance to learn from and remix the code developed by others. Whilst the programs run inside Small Basic’s own run time environment, itself based on the modern .NET framework, whether on the web or the desktop, the Small Basic editor includes a ‘graduate’ button, which exports Small Basic as a Visual Basic project, allowing the subsequent development of stand-alone desktop applications. Getting the interface right. Software development isn’t just about writing lines of code - a key part of any ‘real world’ programming project is taking account of the user’s needs and thinking through how they will interact with the software. Developing programs for modern graphical user interfaces might often start with designing (or ‘wire framing’) at least some aspects of the user interface, which then leads naturally into event driven programming - when this button is clicked, or when this option is selected, etc. Thinking about how an application will look and how it will be used is a great way to start working out the algorithms that you’ll need to code. The forms, controls, databases etc used in Visual Basic programs are objects, each with associated properties, methods and event: object oriented programming is a paradigm for designing modular, reusable code, with the programming focussing on modelling how objects and their classes should behave. Visual Basic and the Visual Studio IDE (Integrated Development Environment) make it easy to take this approach to developing applications for Windows, with the detailed work of interface interactions dealt with by simply dragging controls onto a form, that then automatically fills in enough of the code for the programmer to be able to get on with the interesting bits of the programming. Through the .NET framework, Visual Basic provides integration with the rest of Windows, databases and the Web. ‘Intellisense’, a built in language reference and a debugger makes the jobs of writing and fixing code as easy as possible. Whilst the form based approach can make application development a rapid process, Visual Basic can also be used in a console mode, with simple text input and output: this simplified form is perhaps most useful when learning the language and using it to explore CS concepts rather than for application development per se. A variant of Visual Basic, Visual Basic for Applications is the programming language for developing functions, macros and extensions for Microsoft Office. Read more Small Basic Read more Visual Basic Read more Visual Studio
  24. 24. education Chapter 3: Programming Performance matters. Whilst Visual Basic provides a rapid, flexible way to develop applications for Windows, high level languages such as Visual Basic are rarely used where high performance is the priority. In such circumstances, an intermediate level language, eg C#, which captures both high- and low-level features might be preferred. Like Visual Basic, C# is an object oriented language, but it can be very efficiently compiled to executable, stand-alone code, making it a popular choice for system software, applications, embedded systems and video games across a wide variety of platforms. There’s a sense that programming in C# takes the programmer much closer to the internal operation of the computer, including things like file and memory management, than high level languages like Visual Basic. There’s certainly a steep learning curve involved in mastering C#, but using a development environment like Visual Studio and the .NET framework libraries makes it easier to write and test code, and to get useful things done using Visual C#. There’s a good introductory course available through Microsoft Virtual Academy. The design of the C# language is very similar to C, C++, and Java and the skills and concepts learnt transfer smoothly from one language to another. C# is used for programming the Xbox, using Microsoft’s XNA framework. This provides all the “heavy lifting” concerned with creating a game. It drives the display, manages content, and provides an easy to use way of interacting with gamepads and other controllers. It also provides a common platform so that XNA games can run on a variety of different devices, games can also be distributed to Xbox users around the world using the Xbox Live service. As mentioned above, Xbox 360’s are currently available at a good discount for UK schools. C# is also used as the programming language for .NET Gadgeteer, an open-source toolkit for building small electronic devices. Note (I should acknowledge how useful Lee Scott’s excellent summary of Microsoft’s developer tools for the UK Faculty Connection blog was in putting together these examples). 3.8 Computer Science in Education 24 Computer Science in Education Read more .NET GadgeteerRead more Microsoft’s Virtual Academy Microsoft’s Developer ToolsRead more
  25. 25. Chapter 4: Other aspects of CS Important as coding is, both as a practical, creative skill and as the ‘lab work’ for Computer Science, it would be wrong to limit CS education in school to just learning to program. In England, the new programme of study includes other important aspects of Computer Science such as developing pupils’ understanding of the Internet and the web, how computers represent and manipulate data and working with different forms of input and output alongside algorithms and programming. Topics such as these surely should form part of a broad and balanced Computing education. education25 Computer Science in Education
  26. 26. The network from the command line. The Internet evolved rapidly from something few had heard of, to something which we largely take for granted, for many of us without any intermediate step of learning how it works. Many of us also fall into the trap of using ‘the Internet’ as a synonym for ‘the web’. Both the internet and the web are about connections: the Internet is about connecting computers together so packets of data can be passed efficiently and reliably between them; the web uses the Internet to provide access to documents (web pages) stored on some of these computers (web servers), with one document linking to another through hyperlinks. A few simple command line tools can be used easily and safely to explore the internet. Although some school networks prevent access to them, if you can run the command prompt or power shell on Windows, you can try out a few simple diagnostic tools. These can help develop an understanding of the Internet’s engineering, as well as being practically useful for troubleshooting the occasional problem. This may be something teachers at GCSE level or above would find useful. +ipconfig brings up the details of the computer’s network interface, including its IP (‘Internet Protocol’) address - the numeric location on the local network or the internet of the computer. You’ll also see a default gateway listed: this is the IP address through which any data packets that can’t be delivered locally get sent, and from there out to the rest of the internet and the final destination. +ping is a diagnostic tool that sends a few small data packets to a given destination, timing the trip and checking they get through - try ping, and compare the trip time with other addresses. +tracert takes the ping idea one step further, giving the IP addresses of all the routers between your computer and the destination machine, showing a data packet’s journey through the internet in some detail - try tracert -d, and again compare and contrast with other server addresses. The -d flag switches off looking up the name of the servers and switches on route, which tends to speed up the process. +nslookup converts between the domain names that make it easy for users to refer to servers on the internet and the IP addresses used to route packets of data via it. Typing nslookup gives first the address of the local DNS (‘domain name system’) server used and then the IP address of the host, in this case that for You can reverse the process too, typing in nslookup followed by one of the IP addresses from tracert to see if there’s a domain name associated with a server. Chapter 4: Other aspects of CS 4.1 education Computer Science in Education 26 Computer Science in Education
  27. 27. Developing for the web. Important as programming is for developing computational thinking, far more pupils are likely to need to develop web-based content at some point in their studies, work or personal life than those who’ll need to write programs. Much of the time this involves using a WYSIWYG (what you see is what you get) editor in a web-based application created by someone else, such as a social networking site, a forum or a blog, but swapping into the HTML (hyper text markup language) mode for these can often be quite useful. Creating HTML from scratch is useful too, as web-based content becomes preferred to paper or locally stored digital documents. A simple text editor like Notepad and Internet Explorer are all that’s needed to make a start with creating a webpage. Visual Studio includes some rather more sophisticated tools for developing webpages, and indeed web based applications. As with programming, so with HTML coding, there’s much that can be learnt by reviewing and remixing the work of others. Hitting F12 in Internet Explorer brings up the developer tools, which allow all the different elements of a web page to be inspected, to see HTML code that describes the content and structure of the page, as well as the CSS (cascading style sheet) information which defines the appearance of the page. Better still, both the content and formatting can be edited using these tools: experimenting with tags and attributes is a great way in to learning HTML and CSS. Note that you’re not actually editing the original webpage when you do this, just a local copy. Web-based content can be readily repurposed as native apps for smartphones and tablets. The open source Web Application Template for Visual Studio 2013 makes it easy to create Windows 8.1 apps based on existing web content. Similarly App Studio for Windows Phone allows a range of web-based and other content to be repurposed as the basis of visually stunning interactive native apps. App Studio also generates the source code, allowing for further development of these apps using Visual Studio. Chapter 4: Other aspects of CS 4.2 education Computer Science in Education 27 Computer Science in Education
  28. 28. education Interesting algorithms. There’s much else about the web that we take for granted, and part of a CS education should encompass thinking more carefully about these things. Search engines like bing are one example - children quickly become adept at using search engines to find the web-based content they’re looking for, but how many of them, or indeed of us, have much idea about how search engines work - spending time exploring and experimenting with different search queries can give some insights into this - the occurrence of the keyword in the text of a site, the popularity of a page with other users and inbound links from other high quality pages are all things which search engines could use when deciding how to rank the results they present. Finding the shortest path between two points on a network is a classic CS problem, with an interesting history of successively more and more efficient algorithms that solve (or probably solve) it. Web based services such as give a usually reliable solution to this problem very quickly, as do the apps built in to GPS enabled mobile phones. Whilst pupils might not grasp the detail of Dijkstra’s algorithm and its successors, it’s still worth having them think about how a computer might be programmed to do this. Machine translation via would be another interesting algorithm for pupils to learn more about - systems like this draw on the extensive corpus of texts professionally translated to draw statistical conclusions about how one phrase or sentence is normally translated into another language. Getting pupils to think about how Photo Gallery recognises, and then matches faces is worth doing - the detail is less important than thinking about this problem from a computational perspective. Stitching overlapping photographs together in Photosynth and then representing this as a 3D environment also draws on some interesting aspects of machine learning and data representation. Even something as seemingly simple as removing the background from an image for a PowerPoint slide is a really interesting computational problem - whilst designing an algorithm to do this is way beyond the level of school CS, having pupils experiment with the tool to try to work out how this is done is entirely appropriate: remember that CS education is much more about understanding programs than merely using them. 4.3 Chapter 4: Other aspects of CS Computer Science in Education 28 Computer Science in Education Read more Bing Read more Bing Translator Read more Bing Maps Read more Photo Gallery Read more PhotosynthRead more Dijkstra’s algorithium
  29. 29. 4.5 education Input and output. Computers accept input, process this according to stored programs and produce output. For a while input was typically done via a keyboard, then with a mouse too, but now might include microphones, cameras, touch screens, GPS receivers, accelerometers and other forms. Output was once on printout, then screens and speakers as well as instructions to control motors, such as on robots. It can be really interesting to get pupils to start working with other forms of input data than simply text or mouse clicks, as well as generating output other than onto the screen. The Kinect sensor for the Xbox can also be used with Windows computers, through the use of a software development kit (SDK), allowing pupils to use Kinect data in their own Visual Basic, C++ or C# programs. Kinect allows developers to track large scale physical gestures, as well as working with voice recognition, using these to control applications. .NET Gadgeteer lets pupils get to grips with electronics components and programmable micro-controllers using C# and Visual Studio Express to create their own programmable digital devices, such as remote cameras, simple robots or internet connected printers. In thinking about getting pupils working with hardware, it’s also worth considering the input/output sensors built into tablets and smart-phones, many of which can be used or controlled through TouchDevelop. Big data. One current area of much interest in Computing is that of ‘Big Data’. Storage capacity and processing speeds are now at such levels that huge amounts of digital data can be processed quickly using machine learning and other statistical techniques to spot patterns and exceptions. Think, for example, of the server logs for your school website or learning platform, or of the click stream of pupils’ interactions with educational games, or of all the traffic passing through your school’s firewall. Large public data sets are freely available online, with increasingly sophisticated tools to help visualise and analyse these. Working with large amounts of data exposes pupils to things close to the cutting edge of the Computer Science, as well as providing some exciting insights into what data can reveal. Excel provides a great way into data analysis, particularly once PivotTables and PivotCharts have been mastered to allow data to be ‘sliced’ in different ways to reveal previously hidden patterns. With Excel 2013, the data model allows millions of rows of data to be summarised, visualised and analysed quickly using PivotTables and PivotCharts. In the Professional Plus version of Excel, these tools are extended further with Power Pivot. Excel also includes tools for analysing web-based data, text files and data in Access databases. 4.4 Chapter 4: Other aspects of CS Computer Science in Education 29 Computer Science in Education Read more Software development Read more .NET Gadgeteer Read more Kinect Read more Power Pivot
  30. 30. education30 Computer Science in Education Chapter 5: Where to go for help It’s amazing to see how the ICT education community is stepping up to the challenges and opportunities which CS presents. The internet has facilitated the development of some amazing, distributed communities of practice; there are some fabulous resources available and we’re seeing the development of an impressive portfolio of courses and qualifications to recognise pupils’ achievements in learning CS.
  31. 31. Communities. In the UK, Computing at School (CAS) has been a powerful advocate for seeing CS recognised as an important part of the school curriculum. With over 9000 members, CAS is the subject association for Computer Science, providing a place for those concerned with CS education as teachers, academics and IT professionals to meet, both virtually and physcially, to share experiences, insights and resources. CAS has a vibrant network of local hubs and a packed calendar of events. From time to time, CAS members produce briefing documents, such as the Computer Science curriculum for schools, an infrastructure whitepaper and a recent set of guidance notes for Computing in primary schools. CAS membership is free. The British Computer Society (BCS) through CAS and with support from the DfE has created the Network of Excellence in Computer Science Teaching. This includes nearly 800 schools, 70 universities and CAS accredited Master Teachers, who take responsibility for running local CPD events. CAS are eager to recruit more Master Teachers, and will provide training in CS subject knowledge if needed for outstanding teachers interested in taking on this role. Based in the USA, the Computer Science Teachers Association fulfils a similar role to CAS in supporting and promoting the teaching of CS in schools and welcomes international members. Although it’s not focussed specifically on CS education, those committed to or simply interested in the effective use of technology in education should consider joining Microsoft’s Partners in Learning network, which offers a global opportunity for those in education to share, communicate, collaborate and create. Many of the tools discussed here have their own web-based communities of practice: those programming in Kodu, Project Spark, TouchDevelop and Small Basic are positively encouraged to share their work on-line, and to download and remix the work of others as a great way into programming. At a more advanced level, the Microsoft Developer Network provides high quality on-line content for developers as well as discussion forums for peer to peer support. Membership is open to students through DreamSpark. Video conferencing tools like Lync and Skype also have their part to play in connecting educators and classrooms locally and globally: there’s potential here for team teaching at a distance, which could be great for CS education in schools where teachers are just starting to develop their own subject knowledge of CS. Skype in the Classroom for example currently connects over 79,000 teachers globally to enhance learning experiences for students. See the Skype Education site for ideas and opportunities. Chapter 5: Where to go for help 5.1 education Computer Science in Education 31 Computer Science in Education
  32. 32. Read more Infrastructure Whitepaper Read more Guidance Notes Read more British Computer Science Read more British Computer Society Read more Network of Excellence Read more Master Teachers Read more Teachers Association Read more Partners in Learning Read more Microsoft Developers Network Read more Skype in the Classroom Read more Skype Education Read more Computer Science Read more Computing at School education32 Computer Science in Education Chapter 5: Where to go for help Computer Science in Education Further Reading: Communities5.2
  33. 33. Resources. It would be a mistake to think that the move from ICT to Computing is going to require schools to buy lots of new hardware or software. Whilst there’s much to be said for running the latest edition of Windows and Internet Explorer, particularly to run some of the programming tools discussed above, neither need schools to update hardware to the latest specifications. Most of the tools listed here (including Kodu, Project Spark, TouchDevelop and Small Basic, and their associated communities) are free for anyone to download and use: Schools, pupils, teachers and parents included. Visual Studio Professional is a commercial product, but Visual Studio Express, which includes Visual Basic, C++ and C# as well as HTML and Javascript, is a free download. Schools interested in taking programming further than is possible using free tools like this would be well advised to subscribe to DreamSpark, which makes 27 commercially licensed Microsoft products (including Visual Studio Professional), available for a nominal subscription for teachers and students to use on school or home computers. The idea here is that students get access to professional level developer and design tools at no cost, helping educators teach using the latest technologies and research. DreamSpark is free for bona fide students and at present Microsoft has agreed to wave the institutional subscription for three years for CAS members, which provides free access to these tools for teachers too. There’s an excellent range of high quality technical courses (and a great collection of free ebooks) available through the Microsoft Virtual Academy. These start with materials for ‘aspiring technologists’, which cover fundamentals of Visual Basic, C# and software development for beginners: there’s much scope for integrating these into a school or college curriculum, as well as drawing on these for professional development. There are also prep videos to support teaching on Microsoft Technical Associate courses. The courses are free, with some 1.6 million signed up as I write. For Primary School teachers, a new programme of study was written up, and is to be introduced into the national curriculum, September 2014. With a much stronger focus on programming and many teachers feeling somewhat unprepared, Microsoft teamed up with primary education publisher Rising Stars to develop the Switched On Computing guide. The resources include six units for each year covering programming, computational thinking, creativity, computer networks, communication and collaboration and productivity. Find out more about the free resources. Microsoft have plenty of other resources of interest to teachers, including a lively UK Schools blog, the Global Faculty Connection site and UK Faculty Connection blog for those teaching or studying IT in higher education, and regular news from the cutting edge of CS research via Microsoft Research Cambridge. Not to mention the ever growing Windows store, which has a range of development, productivity and classroom management apps for both teachers and students. For example Zip App, allowing users to create and build Windows 8 apps with ease and efficiency or CreateBook, gives you the ability to create and publish ebooks. At the back of this ebook we have a complete list of resources categorised by age group and key stage level. Chapter 5: Where to go for help 5.3 education Computer Science in Education 33 Computer Science in Education
  34. 34. Further Reading: Resources. Chapter 5: Where to go for help 5.4 education Computer Science in Education 34 Computer Science in Education Read more TouchDevelop Read more Small Basic Read more Visual Studio Express Read more DreamSpark Read more Institutional Subscription Read more Current eBooks Read more Microsoft’s Virtual Academy Read more Free Resources Read more UK School Blog Read more UK Faculty Connection Blog Read more Microsoft Research Cambridge Read more Zip App Read more Project Spark Read more Kodu
  35. 35. Recognition. It’s great to see new qualifications being developed for students to gain recognition for achievement in programming and CS. In England, GCSE Computing is now recognised alongside the other science as part of the EBacc school performance measure, with all the exam boards now offering a GCSE in Computing. The AQA specification, for example, covers Computing fundamentals as well as practical programming, the latter assessed through a couple of 25 hour long controlled assessments drawing on engaging and relevant contexts such as gaming, the web and mobile phone applications. There are strong links between the AQA specification and the Microsoft Technical Associate exams, which would allow these courses to be delivered side by side, as Ray Chambers’ Windows 8 app illustrates. Teachers could draw on the extensive support materials available for MTA exams in developing a course for the AQA specifications. At A-level, again the exam boards all offer qualifications, with each including both theoretical and practical components. There’s been something of a sea- change of late, with Computing at A-level becoming increasingly recognised by elite Russell Group universities as a ‘useful’ qualification for a wide range of degree subjects, notably science, engineering and mathematics disciplines, but also medicine and economics. At some instituions, A level Computing is now an ‘essential’ qualification, alongside A-level mathematics, for admission to CS degrees. Beyond A-level, as indicated above, many universities are making CS courses and course materials available to any who are interested, often through MOOC platforms such as EdX, Coursera and FutureLearn. Software development and academic Computer Science are related, but far from identical, and there are going to be many suited to whom a more vocational rather than academic approach to programming. Schools could consider registering as Microsoft IT Academies, providing access to a well structured technical curriculum with progression from core digital literacy through to technical vocational qualifications, as well as teaching resources and support materials and professional development for teachers. Microsoft Certified Professional qualifications can also be taken for free through DreamSpark, including the developer pathway for the entry level Microsoft Technology Associate certification. Microsoft technical certification is open to teachers too, and studying for these qualifications, using the high quality materials available, would be excellent continuing professional development, as would the more classroom focused Teaching with Technology courses. Microsoft also recognises teachers’ classroom innovation through Microsoft Innovative Educator and Microsoft Innovate Educator Expert designations. It’s worth remembering though that whilst academic and vocational qualifications undoubtedly have their place, securing a job as a developer or admission to Russell Group CS courses is often going to be about people, projects and portfolios - contributing to collaborative projects and developing web based applications, apps or games is likely to impress in either context, as well as providing a depth of practical experience in itself. Chapter 5: Where to go for help 5.5 education Computer Science in Education 35 Computer Science in Education
  36. 36. Further Reading: Recognition. Chapter 5: Where to go for help 5.6 education Computer Science in Education 36 Computer Science in Education Read more Russell Group Read more EdX, Coursera Read more Future Learn Read more Microsoft’s IT Academies Read more Microsoft Technology Associate Read more Teaching with Technology Read more Windows Apps Read more AQA Specifications
  37. 37. education In summary... Learning through making There’s little doubt in my mind that the best way for someone at school to learn the fundamentals of Computer Science, or more importantly to develop their computational thinking skills is through repeated, meaningful practical experience programming. An understanding of the foundational ideas, as well as the broadening of horizons which a good theory lesson can achieve are important, but just as experimental investigations and the application of the scientific method should lie at the heart of science education, and practical performing and composing in music education, so writing useful, working software is an essential part of CS education. Learning through sharing Similarly there’s no doubt in my mind that learning is a social process - we learn from one another, as well as from play, exploration and experimentation. This is as true of CS as any other discipline. It’s also evident from the craft of software development, where team work and peer learning are very evident. I don’t think it any coincidence that so many of the introductory programming tools discussed above include mechanisms for sharing the source code of programs via the web: being able to see how others have solved problems, and adapt their solution to fit the problems you encounter is a great way of learning to code. Understanding matters I come back again to the need to focus on understanding rather than skills as we move to Computing from ICT. Yes, the practical skills of using a programming language and working in an IDE are useful and important, but they’re not an end in themselves. CS in schools needs to be about education, rather than training, and education is, for me at least, about developing some degree of all-round understanding. There’ll be plenty of time after school (in either sense) for those who want to become software developers to polish their practical skills, but CS education for all is more about insights, ideas and fundamental principles. More than one programming language There’s an expectation in the new programmes of study that pupils learn at least two programming languages between 11 and 14, and I think rightly so. Swapping between different programming paradigms develops a flexibility of mind and a breadth to their understanding of computation that’s hard to acquire through mastery of just the one language. There are strong arguments in favour of professional developers learning a new language each year, how much more so for those still at school. There are many ways to do this: swapping between the visual programming of Kodu or Project Spark and the text based programming of TouchDevelop or Small Basic could be one, or between the functional modelling of Excel to object oriented, event driven programming in Visual Basic another. More to CS than coding In England, the old ICT has been replaced by Computing, but Computing includes more than just Computer Science - IT and critical digital literacy (the applications and implications of the subject, if you will) are essential for a broad and balanced Computing education. It’s also worth remembering that there’s more to CS than coding - the coding bit is great fun, of course, but understanding how computer hardware works, how networks work and how data can be represented and manipulated similarly should be part of any CS education. Relatively few pupils learning CS in school will become software developers, fewer still academic computer scientists, but all should have some grasp of computation and how digital technology works, and most will find plenty of occasions to apply computational thinking to other areas of study or employment. Computer Science in Education 37 Computer Science in Education
  38. 38. education38 Computer Science in Education Computer Science in Education Microsoft IT Academy. Microsoft IT Academy (ITA) program provides industry-leading technology skills to help bridge the skills gap. With the Microsoft IT Academy (ITA) program, academic institutions and their educators, students and staff get digital curriculum and certifications for fundamental technology skills - as well as courses critical for students to be successful in today’s technologically evolving world - all at significantly reduced pricing. Joining the Microsoft IT Academy (ITA) program, staff will get a full curriculum for teaching technology courses and learning tools that help students achieve success. ITA offers training not only on fundamental technology skills but also technical courses for students, faculty and staff who are interested in pursuing a career in IT after graduation. See overleaf for the certification road map
  39. 39. Certification Destinations: MCSE SharePoint 415 Implementing a Desktop Infrastructure 416 Implementing Desktop Application Environments 413 Designing and Implementing a Server Infrastructure 414 Implementing an Advanced Server Infrastructure 246 Monitoring and Operating a Private Cloud with System Center 2012 247 Configuring and Deploying a Private Cloud with System Center 2012 337 Enterprise Voice and Online Services with Microsoft Lync Server 2013 336 Core Solutions of Microsoft Lync Server 2013 341 Core Solutions of Microsoft Exchange Server 2013 342 Advanced Solutions of Microsoft Exchange Server 2013 331 Core Solutions of Microsoft SharePoint Server 2013 332 Advanced Solutions of Microsoft SharePoint Server 2013 464 Developing Microsoft SQL Server 2012 Databases 465 Designing Database Solutions for Microsoft SQL Server 2012 467 Designing Business Intelligence Solutions with Microsoft SQL Server 2012 466 Implementing Data Models and Reports with Microsoft SQL Server 2012 485 Advanced Windows Store App Development using C# 484 Essentials of Developing Windows Store Apps using C# 498 Delivering Continuous Value with Visual Studio 2012 Application Lifecycle Management 497 Software Testing with Visual Studio 2012 MCSA SQL Server 2012 MCSA Windows Server 2012 MCSA Windows 8 483 Programming in C# 496 Administering Microsoft Visual Studio Team Foundation Server 2012 480 Programming in HTML5 with JavaScript and CSS3 461 Querying Microsoft SQL Server 2012 462 Administering Microsoft SQL Server 2012 Databases 463 Implementing a Data Warehouse with Microsoft SQL Server 2012 410 Installing and Configuring Windows Server 2012 411 Administering Windows Server 2012 412 Configuring Advanced Windows Server 2012 Services 412 Configuring Advanced Windows Server 2012 Services 687 Configuring Windows 8 688 Managing and Maintaining Windows 8 481 Essentials of Developing Windows Store Apps using HTML5 and JavaScript 486 Developing ASP.NET 4.5 MVC Web Applications Office Client Server Database Development MTA 349: Windows OS Fundamentals 365: Windows Server Administration Fundamentals 366: Networking Fundamentals 367: Security Fundamentals MTA 349: Windows OS Fundamentals 365: Windows Server Administration Fundamentals 366: Networking Fundamentals 367: Security Fundamentals MTA 364: Database Fundamentals MTA 361: Software Development Fundamentals 362: Windows Development Fundamentals 363: Web Development Fundamentals 372: .Net Fundamentals 375: HTML5 Application Development Fundamentals Microsoft IT Academy (ITA) Program provides students with the technology skills they need to be successful in college and a career. With Microsoft Certification, students can validate those skills and pursue a career path in business or technology. ITA Program members receive attractive price reductions on Microsoft Certification exams so they can enable skills development and certification for their students globally. Secondary Students: Microsoft Office Specialist (MOS) Students pursuing a career using client-side productivity applications for business or IT should pursue MOS certification. MOS certification validates mastery of Microsoft Office skills that all businesses require, setting students apart as they go on to higher education or enter the workforce. Microsoft Technology Associate (MTA) For a technology career, students should start with MTA certification, which validates core technology concepts in infrastructure, database and development. MTA helps students explore technology for today's popular IT careers. MTA is recommended, but not required, prior to pursuing a deeper technical certification path. MTA certification may be earned in one semester and can be used to demonstrate capability and commitment for entry-level IT positions. 2-year Post-Secondary Students: Microsoft Certified Solutions Associate (MCSA) The MCSA certification is recommended for 2-year program students and those who already have some knowledge of IT. MCSA validates deeper skills on Microsoft technology and cloud computing, and allows students to gain experience in a classroom setting versus on the job. MCSA is required for becoming an MCSE. 4-Year Post-Secondary Students: Microsoft Certified Solutions Expert (MCSE) / Microsoft Certified Solutions Developer (MCSD) The MCSE and MCSD certifications are recommended for students in a 4-year program. The MCSE builds off of the experience gained while achieving the MCSA certification, and further develops an individual’s expertise in cloud technologies. The MCSD builds off of MTA development fundamentals. MCSE and MCSD certifications allow students to acquire additional experience developing, deploying and maintaining full technology solutions in a classroom setting versus on the job. Upon graduation and certification, a student will be in a competitive position for a mid-level IT job. Microsoft Official Course and Exam Number Official training courses and exams are available through Microsoft Learning Partners worldwide. Microsoft Technology Associate Non-compulsory training courses and exams that help prepare individuals for professional certification. MTA exams and classroom content are included as benefits within the Microsoft IT Academy Program subscription. Microsoft Certified Solutions Associate MCSA certification validates core platform skills and is required to achieve MCSE certification. Microsoft Office Specialist MOS certification enables individuals to tap the full functionality of the Microsoft Office programs. For more information visit Start by choosing your certification and career path Microsoft IT Academy Certification Roadmap MOS Master Microsoft Office 2010 Core Exam choose one: 881: Word 882: Excel 883: PowerPoint Expert Exam choose one: 887: Microsoft Word (Expert) 888: Microsoft Excel (Expert) 883 Microsoft PowerPoint Elective Exam choose one: 884: Outlook 885: Access 886: SharePoint MOS Specialist Selected program MOS Expert Word or Excel 884: Outlook 885: Access 886: SharePoint 853: OneNote 891: Office 365 853: OneNote 891: Office 365 MCSE Desktop Infrastructure MCSE Server Infrastructure MCSE Private Cloud MCSE Communications MCSE Messaging MCSE Data Platform MCSE Business Intelligence MCSD Windows Store Apps Using C# MCSD SharePoint Applications MCSD Application Lifecycle Management MCSD Windows Store Apps Using HTML MCSD Web Applications 482 Advanced Windows Store App Development using HTML5 and JavaScript 487 Developing Windows Azure and Web Services 489 Developing Microsoft SharePoint Server 2013 Advanced Solutions 486 Developing ASP.NET 4.5 MVC Web Applications 488 Developing Microsoft SharePoint Server 2013 Core Solutions
  40. 40. KS1 (5-7) PROGRAMMES USED Understand what algorithms are, how they are implemented as programs on digital devices, and that programs execute by following precise and unambiguous instructions Movie Maker PowerPoint Kodu Create and debug simple programs Kodu Use logical reasoning to predict the behaviour of simple programs Kodu Xbox Use technology purposefully to create, organise, store, manipulate and retrieve digital content Office Movie Maker Photo Gallery SkyDrive Recognise common uses of information technology beyond school Surface Windows Phone Internet Explorer Bing SkyDrive Xbox Use technology safely and respectfully, keeping personal information private; identify where to go for help and support when they have concerns about content or contact on the internet or other online technologies Internet Explorer Bing Security Essentials / Forefront education The English Computing curriculum and Microsoft products. Computer Science in Education 40 Computer Science in Education
  41. 41. KS2 (7-11) PROGRAMMES USED Design, write and debug programs that accomplish specific goals, including controlling or simulating physical systems; solve problems by decomposing them into smaller parts Kodu Project Spark Small Basic TouchDevelop .Net Gadgeteer Use sequence, selection, and repetition in programs; work with variables and various forms of input and output Project Spark Small Basic TouchDevelop .Net Gadgeteer Kinect Use logical reasoning to explain how some simple algorithms work and to detect and correct errors in algorithms and programs Kodu Project Spark Small Basic TouchDevelop .Net Gadgeteer Excel Understand computer networks, including the internet; how they can provide multiple services, such as the World Wide Web, and the opportunities they offer for communication and collaboration Command prompt / PowerShell Internet Explorer Yammer Skype Office 365 / Office Online Notepad Use search technologies effectively, appreciate how results are selected and ranked, and be discerning in evaluating digital content Bing Select, use and combine a variety of software (including internet services) on a range of digital devices to design and create a range of programs, systems and content that accomplish given goals, including collecting, analysing, evaluating and presenting data and information Office 365, Office Online including Onenote Internet Explorer Power View Project Siena Power Pivot Use technology safely, respectfully and responsibly; recognise acceptable/unacceptable behaviour; identify a range of ways to report concerns about content and contact Internet Explorer Bing Security Essentials / Forefront education Computer Science in Education 41 Computer Science in Education