Tag Archives: Computer Science

The CS Capacity Program – New Tools and SIGCSE 2017



The CS Capacity program was launched in March of 2015 to help address a dramatic increase in undergraduate computer science enrollments that is creating serious resource and pedagogical challenges for many colleges and universities. Over the last two years, a diverse group of universities have been working to develop successful strategies that support the expansion of high-quality CS programs at the undergraduate level. Their work focuses on innovations in teaching and technologies that support scaling while ensuring the engagement of women and underrepresented students. These innovations could provide assistance to many other institutions that are challenged to provide a high-quality educational experience to an increasing number of introductory-level students.

The cohort of CS Capacity institutions include George Mason University, Mount Holyoke College, Rutgers University, and the University California Berkeley which are working individually, and Duke University, North Carolina State University, the University of Florida, and the University of North Carolina which are working together. These institution each brings a unique approach to addressing CS capacity challenges. Two years into the program, we're sharing an update on some of the great projects and ideas to emerge so far.

At George Mason, for example, computer science professor Jeff Offutt and his team have developed an online system to provide self-paced learning for CS1 and CS2 classes that allows learners through the learning materials wore quickly or slowly depending on their needs. The system, called SPARC, includes course content, practice and assessment exercises (including automated testing), mini-lectures, and daily inspirations. This team has also launched a program to recruit and train undergraduate tutorial assistants to increase learning support. For more information on SPARC, contact Jeff Offutt at [email protected].

The MaGE Peer Mentor program at Mount Holyoke College is addressing its increasing CS student enrollment by preparing undergraduate peer mentors to provide effective feedback on coding assignments and contribute to an inclusive learning environment. One of the major elements of these program is an online course that helps to recruit and train students to be undergraduate peer mentors. Mount Holyoke has made their entire online course curriculum for the peer mentor program available so that other institutions can incorporate all or part of it to assist with preparing their own student tutors. For more information on the MaGE curriculum, contact Heather Pon-Barry at [email protected].
MaGE Program Students and Faculty from Mount Holyoke College
At University of California, Berkeley, the CS Capacity team is focused on providing access to increased and better tutoring. They’ve instituted a small-group tutoring program that includes weekend mastery learning sessions, increased office hours support, designated discussions section, project checkpoint deadlines, exam/homework/lab/discussion walkthrough videos, and a new office hours app that tracks student satisfaction with office hours. For more information on Berkeley’s interventions, contact Josh Hug at [email protected].

The CS Capacity team at Rutgers has been exploring the gender gap at multiple levels using a longitudinal study across four required CS classes (paper to be published in the proceedings of the SIGCSE 2017 Technical Symposium). They’re investigating several factors that may impact the retention of women and underrepresented student populations, including intention to major in CS, grades, and prior experience. They’ve also been defining an additional set of feature set to improve their use of Autolab (a course management system with automated grading). This work includes building a hint system to provide more information for students who are struggling with a concept or assignment, crowd-sourcing grading, and studying how students think about CS content and the kinds of errors they are making. The Rutgers team will be publishing their study results in the proceedings of the SIGCSE 2017 Technical Symposium. For more information on these tools, contact Andrew Tjang at [email protected].

The team consisting of Duke, NCSU, UNC, and UF have produced and plan to share tools to improve the student learning experience. My Digital Hand (MDH) is a free online tool for managing and tracking one-to-one peer teaching sessions (for example, helping to keep track of how many hours peer mentors are spending with mentees). MDH supports best practice in peer teaching and mitigates some of the observed challenges in taking peer teaching to scale. The team has also been working on ASCEND (Adaptive Student Computing Environment with Natural Language Dialogue), an Eclipse plug-in designed to facilitate remote synchronous peer teaching sessions. Students can share their projects with a peer teaching fellow (PTF) and chat as the PTF leads the student through a session. ASCEND helps instructors better understand current practice by logging all programming actions and textual chats in real time to a database. For more information on these tools, contact Jeff Forbes at [email protected].

Several of the CS Capacity principle investigators will be presenting papers on these new interventions and tools at the SIGCSE conference in March. Faculty from the CS capacity program will also be presenting a panel and roundtable discussion session called “New Tools and Solutions to Address the CS Capacity Crunch.” If you’re attending SIGCSE this year, we hope you’ll join us on Thursday, March 9, from 3:45-5:00 pm.

Given the likelihood that CS undergraduate enrollments will continue to climb, it is critical that the CS education community continue to find, test, and share solutions and tools that enable institutions to effectively teach more students while maintaining the quality of the education experience for students. Faculty from the CS Capacity program will continue to share their solutions and results with the community via CS education conferences and publications.

Careers with Code: A CS Magazine for High School Students



From the programmers behind Pokemon Go to the creators of chatbots, the impact of computer science (CS) is ubiquitous in our daily lives. This is because computer science education provides a way of thinking that focuses on problem solving, teamwork and a powerful way to express yourself - important skills for any career. And with a projected 1 million jobs going unfulfilled in computing-related roles by 2020, we need computer scientists from all backgrounds to bring their unique perspectives to solve real-world problems.

That’s why today, we’re excited to announce Careers with Code in the US, a free high school “CS + X” career magazine that shows how to combine your passions, your “X”, with computer science. We partnered with STEM specialist publishers Refraction Media to create a CS career magazine that illuminates the range of computer science careers and highlights the impact they have across industries. Readers can get to know people who use CS in their daily work in sometimes unexpected ways, such as Jonathan Graham.
A lifelong music fan, Jonathan learned to code as a way to mix live music on stage. One summer while visiting family in Pennsylvania, he was struck by the number of coal mines closing down in the region. Jonathan decided to put his CS skills to work by providing skill-based learning for laid-off coal miners, helping them explore new technical career opportunities. He is now the co-founder of the nonprofit Mined Minds Foundation, which aims to spur economic development by seeding technology hubs within the coal towns in Pennsylvania and West Virginia.

In Careers with Code, you can read more about Jonathan’s unexpected career pathway and learn about 40 other unique stories. And if you’re an educator or work with high school students, Careers with Code can be a useful tool for helping your student explore computer science with resources including:


As Jane Margolis, author of Stuck in the Shallow End, puts it: “Computer Science can be about using the power of technology to create meaningful things for your community.” We hope that Careers with Code will inspire students to do just that -- and equip educators, librarians and counselors to celebrate and support them along the way.

Computational Thinking from a Dispositions Perspective



(Cross-posted on the Google for Education Blog)

In K–12 computer science (CS) education, much of the discussion about what students need to learn and do to has centered around computational thinking (CT). While much of the current work in CT education is focused on core concepts and their application, the one area of CT that has not been well explored is the relationship between CT as a problem solving model, and the dispositions or habits of mind that it can build in students of all ages.

Exploring the mindset that CT education can engender depends, in part, on the definition of CT itself. While there are a number of definitions of CT in circulation, Valerie Barr and I defined it in the following way:
CT is an approach to solving problems in a way that can be implemented with a computer. Students become not merely tool users but tool builders. They use a set of concepts, such as abstraction, recursion, and iteration, to process and analyze data, and to create real and virtual artifacts. CT is a problem solving methodology that can be automated and transferred and applied across subjects.
Like many others, our view of CT also included the core CT concepts: abstraction, algorithms and procedures, automation, data collection and analysis, data representation, modeling and simulation, parallelization and problem decomposition.
The idea of dispositions, however, comes from the field of vocational education and research on career development which focuses on the personal qualities or soft skills needed for employment (see full report from Economist Intelligence Unit here). These skills traditionally include being responsible, adaptable, flexible, self-directed, and self-motivated; being able to solve simple and complex problems, having integrity, self-confidence, and self-control. They can also include the ability to work with people of different ages and cultures, collaboration, complex communication and expert thinking.

Cuoco, Goldenberg, and Mark’s research also provided examples of what students should learn to develop the habits of mind used by scientists across numerous disciplines. These are: recognizing patterns, experimenting, describing, tinkering, inventing, visualizing, and conjecturing. Potter and Vickers also found that in the burgeoning field of cyber security “there is significant overlap between the roles for many soft skills, including analysis, consulting and process skills, leadership, and relationship management. Both communication and presentation skills were valued.”
CT, because of its emphasis on problem solving, provides a natural environment for embedding the idea of dispositions into K-12. According to the International Society for Technology in Education and the Computer Science Teachers Association, the set of dispositions that student practice and internalize while learning about CT can include:
  • confidence in dealing with complexity,
  • persistence in working with difficult problems,
  • the ability to handle ambiguity,
  • the ability to deal with open-ended problems,
  • setting aside differences to work with others to achieve a common goal or solution, and
  • knowing one's strengths and weaknesses when working with others.
Any teacher in any discipline is likely to tell you that persistence, problem solving, collaboration and awareness of one’s strengths and limitations are critical to successful learning for all students. So how do we make these dispositions a more explicit part of the CT curriculum? One of the ways to do so is to to call them out directly to students and explain why they are important in all areas of their study, career, and lives. In addition educators can:
  • Post in the classroom­­ a list of the Dispositions Leading to Success,
  • Help familiarize students with these dispositions by using the terms when talking with students and referring to the work they are doing. “Today we are going to be solving an open-ended problem. What do you think that means?”
  • Help students understand that they are developing these dispositions by congratulating them when these dispositions lead to success: “Great problem-solving skills!”; “Great job! Your persistence helped solve the problem”; “You dealt with ambiguity really well!”.
  • Engage students in discussions about the dispositions: “Today we are going to work in teams. What does it mean to be on a team? What types of people would you want on your team and why?”
  • Help students articulate their dispositions when developing their resumes or preparing for job interviews.
Guest speakers from industry might also:
  • Integrate the importance of dispositions into their talks with students: examples of the problems they have solved, how the different skills of team members led to different solutions, the role persistence played in solving a problem/developing a product or service…
  • Talk about the importance of dispositions to employers and how they contribute to their own organizational culture, the ways employers ask interviewees about their dispositions or how interviewees might respond (e.g. use the terms and give examples).
As Google’s Director of Education and University Relations, Maggie Johnson noted in a recent blog post, CT represents a core set of skills that are necessary for all students:
If we can make these explicit connections for students, they will see how the devices and apps that they use everyday are powered by algorithms and programs. They will learn the importance of data in making decisions. They will learn skills that will prepare them for a workforce that will be doing vastly different tasks than the workforce of today.
In addition to these concepts, we can now add developing critical dispositions for success in computing and in life to the list of benefits for teaching CT to all students.

Computational Thinking from a Dispositions Perspective



(Cross-posted on the Google Research Blog.)

In K–12 computer science (CS) education, much of the discussion about what students need to learn and do to has centered around computational thinking (CT). While much of the current work in CT education is focused on core concepts and their application, the one area of CT that has not been well explored is the relationship between CT as a problem solving model, and the dispositions or habits of mind that it can build in students of all ages.

Exploring the mindset that CT education can engender depends, in part, on the definition of CT itself. While there are a number of definitions of CT in circulation, Valerie Barr and I defined it in the following way:
CT is an approach to solving problems in a way that can be implemented with a computer. Students become not merely tool users but tool builders. They use a set of concepts, such as abstraction, recursion, and iteration, to process and analyze data, and to create real and virtual artifacts. CT is a problem solving methodology that can be automated and transferred and applied across subjects.
Like many others, our view of CT also included the core CT concepts: abstraction, algorithms and procedures, automation, data collection and analysis, data representation, modeling and simulation, parallelization and problem decomposition.
The idea of dispositions, however, comes from the field of vocational education and research on career development which focuses on the personal qualities or soft skills needed for employment (see full report from Economist Intelligence Unit here). These skills traditionally include being responsible, adaptable, flexible, self-directed, and self-motivated; being able to solve simple and complex problems, having integrity, self-confidence, and self-control. They can also include the ability to work with people of different ages and cultures, collaboration, complex communication and expert thinking.

Cuoco, Goldenberg, and Mark’s research also provided examples of what students should learn to develop the habits of mind used by scientists across numerous disciplines. These are: recognizing patterns, experimenting, describing, tinkering, inventing, visualizing, and conjecturing. Potter and Vickers also found that in the burgeoning field of cyber security “there is significant overlap between the roles for many soft skills, including analysis, consulting and process skills, leadership, and relationship management. Both communication and presentation skills were valued.”
CT, because of its emphasis on problem solving, provides a natural environment for embedding the idea of dispositions into K-12. According to the International Society for Technology in Education and the Computer Science Teachers Association, the set of dispositions that student practice and internalize while learning about CT can include:
  • confidence in dealing with complexity,
  • persistence in working with difficult problems,
  • the ability to handle ambiguity,
  • the ability to deal with open-ended problems,
  • setting aside differences to work with others to achieve a common goal or solution, and
  • knowing one's strengths and weaknesses when working with others.
Any teacher in any discipline is likely to tell you that persistence, problem solving, collaboration and awareness of one’s strengths and limitations are critical to successful learning for all students. So how do we make these dispositions a more explicit part of the CT curriculum? One of the ways to do so is to to call them out directly to students and explain why they are important in all areas of their study, career, and lives. In addition educators can:
  • Post in the classroom­­ a list of the Dispositions Leading to Success,
  • Help familiarize students with these dispositions by using the terms when talking with students and referring to the work they are doing. “Today we are going to be solving an open-ended problem. What do you think that means?”
  • Help students understand that they are developing these dispositions by congratulating them when these dispositions lead to success: “Great problem-solving skills!”; “Great job! Your persistence helped solve the problem”; “You dealt with ambiguity really well!”.
  • Engage students in discussions about the dispositions: “Today we are going to work in teams. What does it mean to be on a team? What types of people would you want on your team and why?”
  • Help students articulate their dispositions when developing their resumes or preparing for job interviews.
Guest speakers from industry might also:
  • Integrate the importance of dispositions into their talks with students: examples of the problems they have solved, how the different skills of team members led to different solutions, the role persistence played in solving a problem/developing a product or service…
  • Talk about the importance of dispositions to employers and how they contribute to their own organizational culture, the ways employers ask interviewees about their dispositions or how interviewees might respond (e.g. use the terms and give examples).
As Google’s Director of Education and University Relations, Maggie Johnson noted in a recent blog post, CT represents a core set of skills that are necessary for all students:
If we can make these explicit connections for students, they will see how the devices and apps that they use everyday are powered by algorithms and programs. They will learn the importance of data in making decisions. They will learn skills that will prepare them for a workforce that will be doing vastly different tasks than the workforce of today.
In addition to these concepts, we can now add developing critical dispositions for success in computing and in life to the list of benefits for teaching CT to all students.

Majoring in CS and mentoring along the way

Posted by Natalie Ang, Student, California State University, Fullerton

Editor's note: Natalie Ang is a student at California State University, Fullerton, majoring in Computer Science. She started a Google igniteCS mentorship program with her ACM-W chapter, and led the effort to introduce younger girls in her community to the world of programming.

My journey in computer science began in a computer systems class I took my freshman year of high school. Due to the many times I had to compile my program just to receive an error warning, I soon learned that programming takes much patience and effort. I found myself ready to throw the school computer out of the window, but the hours of frustration melted away the instant my program worked smoothly. That moment would become the reason I chose computer science as my major.

During my college orientation, I was told that girls make up 15% of the engineering field. The truth behind that shocking statistic became a reality when I experienced my first programming class where only 6 girls enrolled out of 40. Rather than be discouraged, it made me excited to represent the potential of women in engineering and lead me to join the Association for Computing Machinery Committee on Women (ACM-W) club. Like me, their goal is to increase the number of girls in engineering.

After becoming president of ACM-W, my club came across a program called Google igniteCS where groups can receive funding for their mentorship program. I knew that this opportunity would expand the club’s collaboration with the Girl Scouts of Orange County, so my team quickly applied with high hopes. When we found out that our club received funding, all of us were overjoyed and ready to put this money toward exposing young girls to the world of programming. For the next few months, the ACM-W hosted five events, each of them focused on teaching young girls scouts the countless possibilities involved with programming and where it can lead.

It wasn't easy creating the lesson plans from scratch or keeping everyone in the club organized, but we did it. Google not only gave us funds, but also the tools and suggestions to make our events successful. I'm fortunate to be a part of igniteCS and having the opportunity to share my passion for programming with other girls. Whenever I see their eyes light up from completing a task by themselves, I know that I am working towards the first step in increasing passion for engineering.
Another mentor and I set up Google Cardboard to use during a Google igniteCS session

Two of our mentees enjoying their Cardboard experience
igniteCS has allowed me to spread my passion for computer science and make a difference in the lives of girls in my own community. Through working with Google and the igniteCS team, I had the resources and support I needed to create a mentorship program that had the most impact. I am glad that I applied to igniteCS, and you should too!

igniteCS is accepting applications August 22nd - September 18th, 2016. To learn more, please visit our website at g.co/igniteCS. For more information about the application process, participate in our Hangout on Air on August 17th.

Computational Thinking for All Students



(Cross-posted on The Huffington Post and the Google Research blog.)

Last year, I wrote about the importance of teaching computational thinking to all K-12 students. Given the growing use of computing, algorithms and data in all fields from the humanities to medicine to business, it’s becoming increasingly important for students to understand the basics of computer science (CS). One lesson we have learned through Google’s CS education outreach efforts is that these skills can be accessible to all students, if we introduce them early in K-5. These are truly 21st century skills which can, over time, produce a workforce ready for a technology-enabled and driven economy.

How can teachers start introducing computational thinking in early school curriculum? It is already present in many topic areas - algorithms for solving math problems, for example. However, what is often missing in current examples of computational thinking is the explicit connection between what students are learning and its application in computing. For example, once a student has mastered adding multi-digit numbers, the following algorithm could be presented:
  1. Add together the digits in the ones place. If the result is < 10, it becomes the ones digit of the answer. If it's >= 10 or greater, the ones digit of the result becomes the ones digit of the answer, and you add 1 to the next column.
  2. Add together the digits in the tens place, plus the 1 carried over from the ones place, if necessary. If the answer < than 10, it becomes the tens digit of the answer; if it's >= 10, the ones digit becomes the tens digit of the answer and 1 is added to the next column.
  3. Repeat this process for any additional columns until they are all added.

This allows a teacher to present the concept of an algorithm and its use in computing, as well as the most important elements of any computer program: conditional branching (“if the result is less than 10…”) and iteration (“repeat this process…”). Going a step farther, a teacher translating the algorithm into a running program can have a compelling effect. When something that students have used to solve an instance of a problem can automatically solve all instances of the that problem, it’s quite a powerful moment for them even if they don’t do the coding themselves.

Google has created an online course for K-12 teachers to learn about computational thinking and how to make these explicit connections for their students. We also have a large repository of lessons, explorations and programs to support teachers and students. Our videos illustrate real-world examples of the application of computational thinking in Google’s products and services, and we have compiled a set of great resources showing how to integrate computational thinking into existing curriculum. We also recently announced Project Bloks to engage younger children in computational thinking. Finally, code.org, for whom Google is a primary sponsor, has curriculum and materials for K-5 teachers and students.

We feel that computational thinking is a core skill for all students. If we can make these explicit connections for students, they will see how the devices and apps that they use everyday are powered by algorithms and programs. They will learn the importance of data in making decisions. They will learn skills that will prepare them for a workforce that will be doing vastly different tasks than the workforce of today. We owe it to all students to give them every possible opportunity to be productive and successful members of society.

Computational Thinking for All Students



(Crossposted on the Google for Education Blog, and the the Huffington Post)

Last year, I wrote about the importance of teaching computational thinking to all K-12 students. Given the growing use of computing, algorithms and data in all fields from the humanities to medicine to business, it’s becoming increasingly important for students to understand the basics of computer science (CS). One lesson we have learned through Google’s CS education outreach efforts is that these skills can be accessible to all students, if we introduce them early in K-5. These are truly 21st century skills which can, over time, produce a workforce ready for a technology-enabled and driven economy.

How can teachers start introducing computational thinking in early school curriculum? It is already present in many topic areas - algorithms for solving math problems, for example. However, what is often missing in current examples of computational thinking is the explicit connection between what students are learning and its application in computing. For example, once a student has mastered adding multi-digit numbers, the following algorithm could be presented:
  1. Add together the digits in the ones place. If the result is < 10, it becomes the ones digit of the answer. If it's >= 10 or greater, the ones digit of the result becomes the ones digit of the answer, and you add 1 to the next column.
  2. Add together the digits in the tens place, plus the 1 carried over from the ones place, if necessary. If the answer < than 10, it becomes the tens digit of the answer; if it's >= 10, the ones digit becomes the tens digit of the answer and 1 is added to the next column.
  3. Repeat this process for any additional columns until they are all added.
This allows a teacher to present the concept of an algorithm and its use in computing, as well as the most important elements of any computer program: conditional branching (“if the result is less than 10…”) and iteration (“repeat this process…”). Going a step farther, a teacher translating the algorithm into a running program can have a compelling effect. When something that students have used to solve an instance of a problem can automatically solve all instances of the that problem, it’s quite a powerful moment for them even if they don’t do the coding themselves.

Google has created an online course for K-12 teachers to learn about computational thinking and how to make these explicit connections for their students. We also have a large repository of lessons, explorations and programs to support teachers and students. Our videos illustrate real-world examples of the application of computational thinking in Google’s products and services, and we have compiled a set of great resources showing how to integrate computational thinking into existing curriculum. We also recently announced Project Bloks to engage younger children in computational thinking. Finally, code.org, for whom Google is a primary sponsor, has curriculum and materials for K-5 teachers and students.

We feel that computational thinking is a core skill for all students. If we can make these explicit connections for students, they will see how the devices and apps that they use everyday are powered by algorithms and programs. They will learn the importance of data in making decisions. They will learn skills that will prepare them for a workforce that will be doing vastly different tasks than the workforce of today. We owe it to all students to give them every possible opportunity to be productive and successful members of society.

Project Bloks: Making code physical for kids



When we were kids, physical things like toys and blocks helped us learn—inspiring curiosity and imagination in a fun, playful way. We think there’s no reason that shouldn’t also be possible when it comes to Computer Science.

When kids learn to code, they’re not just learning how to program computers, they’re learning a new language for creative expression and developing computational thinking: a skillset that will help prepare them to solve all kinds of problems. Making code physical — known as tangible programming — offers a unique way to combine the way children innately play and learn with computational thinking.

Earlier this week we announced a new research initiative called Project Bloks. The project is a collaboration between Google, IDEO and Stanford’s Paulo Blikstein, inspired by — and building upon — a long history of educational theory and research in the field of tangible programming.

The ultimate goal of Project Bloks is to create an open hardware platform for physical programming experiences to help kids develop computational thinking through play. By creating an open platform, Project Bloks will allow designers, developers and researchers to focus on innovating, experimenting and creating new ways to help kids develop computational thinking. Our vision is that, one day, the Project Bloks platform could become for tangible programming what Blockly is for on-screen programming.

As a first step, we’ve created a system for physical programming and built a working prototype with it. We’re sharing our progress before conducting more research over the summer to inform what comes next.

Want to get involved?
We are currently looking for participants (educators, developers, parents and researchers) from across the globe who are interested in helping shape the future of Computer Science education by remotely taking part in our research studies later in the year. If you would like to be part of our research study or simply receive updates on the project, please sign up here.

For more detailed information about the technology behind Project Bloks, check out our recent post on the Google Research Blog and our position paper. And to learn more about our other initiatives aimed at driving CS education forward and helping kids develop computational thinking skills, check out programs like CS First and Made with Code; and tools like Coding with ChromeBlockly and Pencil Code.

Project Bloks: Making code physical for kids



At Google, we’re passionate about empowering children to create and explore with technology. We believe that when children learn to code, they’re not just learning how to program a computer—they’re learning a new language for creative expression and are developing computational thinking: a skillset for solving problems of all kinds.

In fact, it’s a skillset whose importance is being recognised around the world—from President Obama’s CS4All program to the inclusion of Computer Science in the UK National Curriculum. We’ve long supported and advocated the furthering of CS education through programs and platforms such as Blockly, Scratch Blocks, CS First and Made w/ Code.

Today, we’re happy to announce Project Bloks, a research collaboration between Google, Paulo Blikstein (Stanford University) and IDEO with the goal of creating an open hardware platform that researchers, developers and designers can use to build physical coding experiences. As a first step, we’ve created a system for tangible programming and built a working prototype with it. We’re sharing our progress before conducting more research over the summer to inform what comes next.

Physical coding
Kids are inherently playful and social. They naturally play and learn by using their hands, building stuff and doing things together. Making code physical - known as tangible programming - offers a unique way to combine the way children innately play and learn with computational thinking.

Project Bloks is preceded and shaped by a long history of educational theory and research in the area of hands-on learning. From Friedrich Froebel, Maria Montessori and Jean Piaget’s pioneering work in the area of learning by experience, exploration and manipulation, to the research started in the 1970s by Seymour Papert and Radia Perlman with LOGO and TORTIS. This exploration has continued to grow and includes a wide range of research and platforms.

However, designing kits for tangible programming is challenging—requiring the resources and time to develop both the software and the hardware. Our goal is to remove those barriers. By creating an open platform, Project Bloks will allow designers, developers and researchers to focus on innovating, experimenting and creating new ways to help kids develop computational thinking. Our vision is that, one day, the Project Bloks platform becomes for tangible programming what Blockly is for on-screen programming.
The Project Bloks system
We’ve designed a system that developers can customise, reconfigure and rearrange to create all kinds of different tangible programming experiences.
A birdseye view of the customisable and reconfigurable Project Bloks system
The Project Bloks system is made up of three core components the “Brain Board”, “Base Boards” and “Pucks”. When connected together they create a set of instructions which can be sent to connected devices, things like toys or tablets, over wifi or Bluetooth.
The three core components of the Project Bloks system
Pucks: abundant, inexpensive, customisable physical instructions
Pucks are what make the Project Bloks system so versatile. They help bring the infinite flexibility of software programming commands to tangible programming experiences. Pucks can be programmed with different instructions, such as ‘turn on or off’, ‘move left’ or ‘jump’. They can also take the shape of many different interactive forms—like switches, dials or buttons. With no active electronic components, they’re also incredibly cheap and easy to make. At a minimum, all you'd need to make a puck is a piece of paper and some conductive ink.
Pucks allow for the creation and customisation of endless amount of different domain-specific physical instructions cheaply and easily.
Base Boards: a modular design for diverse tangible programming experiences
Base Boards read a Puck’s instruction through a capacitive sensor. They act as a conduit for a Puck’s command to the Brain Board. Base Boards are modular and can be connected in sequence and in different orientations to create different programming flows and experiences.
The modularity of the Base Boards means they can be arranged in different configurations and flows
Each Base Board is fitted with a haptic motor and LEDs that can be used to give end-users real time feedback on their programming experience. The Base Boards can also trigger audio feedback from the Brain Board’s built-in speaker.

Brain Board: control any device that has an API over WiFi or Bluetooth
The Brain Board is the processing unit of the system, built on a Raspberry Pi Zero. It also provides the other boards with power, and contains an API to receive and send data to the Base Boards. It sends the Base Boards’ instructions to any device with WiFi or Bluetooth connectivity and an API.

As a whole, the Project Bloks system can take on different form factors and be made out of different materials. This means developers have the flexibility to create diverse experiences that can help kids develop computational thinking: from composing music using functions to playing around with sensors or anything else they care to invent.
The Project Bloks system can be used to create all sorts of different physical programming experiences for kids
The Coding Kit
To show how designers, developers, and researchers might make use of system, the Project Bloks team worked with IDEO to create a reference device, called the Coding Kit. It lets kids learn basic concepts of programming by allowing them to put code bricks together to create a set of instructions that can be sent to control connected toys and devices—anything from a tablet, to a drawing robot or educational tools for exploring science like LEGO® Education WeDo 2.0.
What’s next?
We are looking for participants (educators, developers, parents and researchers) from around the world who would like to help shape the future of Computer Science education by remotely taking part in our research studies later in the year. If you would like to be part of our research study or simply receive updates on the project, please sign up.

If you want more context and detail on Project Bloks, you can read our position paper.

Finally, a big thank you to the team beyond Google who’ve helped us get this far—including the pioneers of tangible learning and programming who’ve inspired us and informed so much of our thinking.


Developing mobile apps with the Android Basics Nanodegree



When empowered with the right CS skills, we believe that each person can use technology to accelerate change towards a better world that they envision. So in partnership with Udacity, we’re launching the Android Basics Nanodegree: a free online curriculum for building basic Android apps. No previous programming experience required. Anyone —of any skill level— can access the content, take it at their own pace, and learn how to create Android apps. All of the individual courses that make up this Nanodegree are available at no charge at udacity.com/google.

Included in this launch is the Android Basics Facilitator’s Guide, which is an instruction manual that enables students, parents, and teachers to conduct in-person study groups via a blended learning model. This guide can be used in a variety of formats, adjusted for style or preference. Facilitators can vary the number of days, the length, the specific topics taught and more.

Curriculum
The curriculum offers a step-by-step approach on building several different types of Android apps. Through a “just-in-time” approach, students are actively exposed to fundamental computer science concepts, continuously learning as they build more complex apps. Along the way, students become familiar with the Java programming language — from variables and data types to more advanced object-oriented principles, HTTP networking concepts, and how to store data in a SQLite database.

Students can immediately start building layouts for Android apps using the XML language. They use Android Studio, the same official tool that professional Android developers use to write their apps. Students learn important software development skills such as how to identify and fix unexpected issues, read code for an existing app, and how to search for information on their own. They will also hear from professional developers, who are applying the same concepts from the classroom to popular apps like Google Play and Gmail.

Through each of the 6 courses, students gain first-hand experience by building apps designed for real-world experiences like placing orders in a coffee shop, tracking pets in a shelter, teaching vocabulary words from the Native American Miwok tribe, or reporting recent earthquakes in the world. By the end, students will have built an entire portfolio of apps to share that show off all their hard work.
Upon completing the Android Basics Nanodegree, students can continue learning with the Career-track Android Nanodegree (for intermediate developers). The first 50 participants to finish the Android Basics Nanodegree have a chance to win a scholarship for the Career-track Android Nanodegree. Additional details and eligibility requirements can be found here.

Students
Students can enroll in the individual courses here. We recommend signing up with friends and classmates, to create a support group for sharing work and asking questions. In addition, students can sign up for the full Nanodegree on Udacity to gain access to coaches who can help them stay on track, provide career counseling and guidance on their projects. They can receive a certificate upon completion for a fee.

Students who have gone through the course are building incredible apps that put their new skills to work. For example, Arpy Vanyan created the "ROP Tutorial" app to raise awareness of a potentially blinding eye disorder called Retinopathy of Prematurity that can affect newborn babies.
The ROP Tutorial app, created by student Arpy Vanyan, raises awareness of Retinopathy of Prematurity in newborns
Or Fadli Wilihandarwo who built “Pasienia,” an app connecting patients with the same disease in order to offer support and open communication.
Paisienia is a health support group app, created by student Fadli Wilihandarwo
Parents and Guardians 
Android development can be also be a fun family activity, with parents learning right alongside their children. But even if parents or guardians don’t have a background - or prior interest - in this topic, research shows that their encouragement can help motivate children to continue persisting through the course.

Meet Wendy Bravo and her 11-year-old daughter Katia. They started taking the Android Basics courses together, which sparked Katia’s desire to learn more about programming. It was difficult to find local in-person STEM courses for Katia’s age, but with the Android Basics courses, she and her mother were both able to learn.

Teachers and Sponsors
Teachers who want to inspire their students to learn CS through Android app development can use the online videos in their classroom to supplement existing lesson plans. Suggestions for in-person classroom activities to complement the online coursework are included in the facilitator’s guide, along with methods of adjusting the format. Teachers can also sponsor study groups during or after school to encourage students to complete the course content together.

Check out the curriculum or enroll in the Android Basics Nanodegree program. With this complete learning path, you can teach yourself to become a technology entrepreneur, and best yet, build cool Android apps for yourself, your community, and even the world.