Star Wars and the micro:bit

“I wanted to make it play the theme from Star Wars.”

So began a Grade 5 student’s response this week when I asked her what she was working on with her micro:bit program. It was her very first session with it but she, and the rest of class, did have several other experiences in recent months making things with Scratch.

I recorded a video in which she runs her program for me; you can hear the theme.

She then went on to explain that she had recently learned how to play the theme from Star Wars on the recorder. She knew the fingering, the notes, and the length of the notes. Now, she decided to make the micro:bit play it. She showed me how she used the ‘play tone’ blocks to make the notes and set the length.

Here is the bit of code she made that plays the notes:

star wars microbit

Three things made a strong impression on me as she told me more about her project:

  1. She came up with her own exciting idea to do something on the micro:bit and was given the encouragement and support to try it. She was passionate about the idea.
  2. She transferred her knowledge of playing the recorder to coding the micro:bit to do the same thing. This reminded me of Papert’s notion of syntonic learning in Mindstorms (although not exactly the same).
  3. She transferred her knowledge of making & coding in the Scratch environment to the process of making & coding in the makecode environment she was using.

And, there was a fourth thing that made an impression—the variety of projects by the other students in the class. By genuinely inviting students to pursue their own exciting ideas and passions for an initial project on the micro:bit, they were highly driven to see it come to life. In the span of about 45 minutes, and in the very first session, students made digital dice, a magic 8-ball, and music or message events tied to buttons. They were already talking about things they were going to work on at home.

If you have not yet read it, I highly recommend reading this article called A Different Approach to Coding written by Mitch Resnick and David Siegel. The 4P approach outlined in the article (and summarized below) is a tried and tested set of guiding principles that results in a higher level of engagement, motivation, exploration, and far more meaningful knowledge & skills being developed over time (I recently wrote about the kinds of knowledge and skills I would expect of effective coding to learn experiences).

4ps

“Coding to Learn” Outcomes

computer-child-program

Does the computer program the child or does the child program the computer? —Seymour Papert

[Updated July 2017]

I want to share my set of “coding to learn” outcomes. These are the things that I am looking for in children who are coding in educational contexts. These are the targets in my mind. To me, these represent the powerful learning potential in coding to learn.

“Coding to Learn” Outcomes

Students are:

  • learning to express their creativity using coding and technology
  • learning to solve a variety of problems encountered in their projects
  • demonstrating a growth mindset (rather than a fixed mindset)
  • speaking mathematically to the computer/device through their coding
  • making exciting, personal ideas come to life through coding (this serves as the prime motivator for students to learn, play and push their coding skills further every day)
  • creating meaningful software applications rather than isolated chunks of code
  • actively learning from, and sharing with, others (face to face & online)
  • learning to visualize a process that accomplishes a task in their project
  • learning, practicing and refining the design process
  • reflecting on their thinking and learning in order to transfer to new challenges
  • excited about learning and exploring coding and technologies on their ‘own time’

But where is the curriculum in all this? That’s probably a great topic for a different post but I do strongly believe that, for example, the ‘math curriculum’ could be completely integrated within a year long series of programming projects by students. I firmly believe that, within a constructionist philosophy, all crucial mathematical concepts could be built via effective coding experiences.

Over time, my approach to introducing coding, and the way my student use coding to learn, has changed. I hope it has improved. The way I measure my success is how strongly I observe the above “Coding to Learn Outcomes” in my students.

Below I have tried to describe, in a concise way, the progression in the way my past students have learned to code and learned through coding. At the beginning of my teaching career in the early 90s, I admit that I saw computer programming as a skill and as a separate subject. When we explored programming in my grade 5 classroom, that is how I approached it and how students saw it. Over time, I’ve made many changes to my philosophy and my practice in order to get to the potential outlined in my “coding to learn” outcomes.

Most outcomes are NOT evident or VERY WEAK

  • Coding is approached like a separate curricular subject
  • Coding is not understood as a literacy
  • Taught as discrete lessons, teacher driven, skills based
  • Focus is “learning to code”
  • No integration with other learning, school activities, or students’ interests
  • Coding tools chosen by teacher are designed for programming, not learning through code
  • Teacher role is instructor and coordinates learning through series of lessons
  • Students learn to code within a linear instructional design
  • Assessment is based on coding quizzes and tests
  • Sharing or remixing code is seen as cheating

Outcomes that are in evidence are WEAK

  • Focus is still “learning to code”
  • Mostly skills-based approach, series of lessons or assignments
  • Coding not understood as a literacy or creative tool
  • Lesson-based but some time for exploration, some choice
  • Coding is a short unit, not integrated into other learning
  • Some effort to make learning to code more meaningful beyond just a skill
  • Use of coding tools with some effort to connect code to more meaningful things
  • Teacher role is instructor but encourages some student-chosen explorations
  • Some deliberate attempts to connect learning from coding
  • Assessment based on quizzes, test, and projects

Most outcomes are in evidence and STRONG

  • Focus is “coding to learn” rather than “learning to code” but both occur
  • Coding is understood as a literacy through which ideas can be expressed
  • Attempts are made to integrate coding activities into other learning and school endeavors but not to high degree (full potential is not realized)
  • Student-centered approach, student voice and interests are valued
  • Regular sharing of ideas and code is encouraged between students
  • Choices for students, coding challenges, longer term projects
  • Students are encouraged to solve problems together
  • Teacher role is coach, modelling growth mindset
  • Teacher reflects on expected outcomes vs. observed outcomes
  • Assessment based on teacher observation and student projects
  • Regular, deliberate attempts to connect learning and coding; learning through coding has authenticity to students
  • Regular, deliberate attempts for student to reflect on coding, thinking, etc.

Most outcomes are STRONGLY in evidence and ROBUST

  • Focus is “coding to learn” rather than “learning to code” but both occur
  • Coding is integrated into other learning and school endeavors
  • Coding is understood as a literacy through which ideas can be expressed
  • Students engage in long term projects / inquiries of learning through coding
  • Projects and programs arise from student interests and passions, teacher’s role is to help connect to curriculum expectations; student interest came first
  • Regular sharing of ideas with peers and online discussion
  • exploration and playing with ideas and code is actively encouraged and shared with peers
  • Teacher role is coach, modeling growth mindset
  • Teacher is co-thinker, co-coder, co-learner
  • Teacher reflects on expected outcomes vs. observed outcomes
  • Assessment based on teacher observations, conversations, interviews, student products, student surveys, and student reflections
  • Regular structures in place to connect learning and coding (using coding literacy in other aspects of school activities, meaningful, authentic use is primary goal)
  • Regular structures in place for student to reflect on what they are learning through coding experiences

Scratch is the right place for coding

Coding in education is once again gaining more and more popularity in education. There are now too many coding tools, online and device-based, to keep up with. There are so many choices now for students, teachers, or for anyone looking at using coding in education. Choice is great but it creates a new challenge for teachers – which tool(s) is best for my students?

But coding in education is special. It’s not just learning about loops, variables, objects and if…then statements. Coding to learn in education has a long history. But computer science and computer programming also has a long history. Often, they are getting mixed up and, I think, there is time and effort being wasted as a result.

Here are the terms again with an explanation as I see it:

  • Coding to learn (constructionism)- the focus is on being creative, designing things, and learning concepts through the act of computer programming. Projects are coded in a social environment, ideas, problems, solutions are shared and discussed.  The nitty gritty of the programming code itself is important, too, but not the primary focus.
  • Learning to code (computer programming) – is a discipline and skill in which a human is creative and designing things, and puts together codes and symbols, in a logical, organized way, to instruct an electronic device what to do with input or data. The efficiency and structure of the code is paramount as is the program’s capability to complete the computing task(s).

Neither is better or worse than the other. And both overlap and are interrelated. The question I want to raise is: which one is the primary focus when students are coding?

Students are learning things through the act of programming when they code to learn. Students who are learning to code are learning to be adept at programming (e.g., good efficiency, algorithms, structure, design, readability, annotations, etc). I think BOTH will happen despite the focus, but I think educators need to think about focus all the time and understand why their students are spending time coding. I wrote about this a bit before in this post.

If the focus is coding to learn, then I think there are other considerations that must be made besides the focus. For example, is the tool students are using in sync with the focus? This is where I am seeing some time wasted. There are lots of educational coding tools available but there are few coding to learn environments. Lots of blockly or Scratch-like block code tools are great for providing options but often they are missing essential components that make the tool better as a learning and thinking tool. (Likewise, there are software development environments that are specifically designed to facilitate rapid application development and provide the essential tools a programmer needs.)

I freely admit that I am a Scratch chauvinist.  I think that the Scratch environment, which continues to be free and has been online for many years, is the best place for students to be coding to learn. Why? Because it has built-in features that support tinkering, creativity, sharing, discussion, remixing, experimentation, exploration. It was designed from the beginning to allow for:

Screen Shot 2017-05-27 at 7.32.49 PM

Scratch script featuring coloured code bricks

tinkering and playing – the coloured code bricks are inviting to children,  like LEGO they snap them together and try them out and see what happens. Bricks are groups according to their purpose, for example, blue bricks are for sprite movement or location, orange bricks for variable functions.

Screen Shot 2017-05-27 at 7.39.37 PM

Scratch Project with user uploaded images

personalization – children can make their projects more interesting and meaningful by using their own images and sounds if they wish. Image files and sound files can be uploaded. Audio can also be recorded within Scratch if a microphone is available. Images can be edited within Scratch.

Screen Shot 2017-05-27 at 7.35.14 PM

Scratch – Remix Tree

collaboration – Scratchers are not alone; they form a community of makers, tinkerers, artists, game designers, and so on. Projects can be shared and remixed by anyone in the community. Discussion boards are connected to each project and to every studio.

In addition to these design principles, Scratch was developed to have a low floor, high ceiling and wide walls. This excerpt from Scratch: Programming for All explains these ideas:Screen Shot 2017-05-27 at 7.28.34 PM

Finally, one of simplest, but most important, features of Scratch is that it is a cloud-based tool. Users can create and save their work in within Scratch environment. And, because it is a cloud tool, students can access and work on their projects from any computer simply by logging into their account. This facilitates quick and easy access; that means that long-term, project-based learning is supported. Research I have read, and my own work with students over the years, has shown that “one-off” or isolated experiences with coding has almost no impact on student thinking and problem-solving and it is not meaningful to students. I have witnessed students working on long-term projects in Scratch—they care deeply about what they are doing, they think about it between sessions, and they are continuously engaged in this balanced interplay between creativity (getting exciting ideas about what they want to do) and problem-solving (making the ideas come to life in Scratch).

Dear Apple, Google & Microsoft

Dear Apple, Google & Microsoft:

I am a teacher and I like it when technology empowers my students, gives them voice, and helps them to create, design, share, and discuss. Your tools are great and they are used in education to do all of these things. Thank you. Sometimes the tools are free and sometimes they have to be paid for. Fair enough. It’s business. And the competition between you will keep the tools sharp, useful and relatively cheap. I hope.

I’ve even checked out and tried out many of your certification programs that you offer for your tools. I have certifications from all of you but I decided early on not list them; I didn’t want to be, or appear to be, aligned or biased towards any specific tool or company. Students and learning are my focus. Nevertheless, I am tempted to list them, sometimes, when I look at other educators’ social media profiles with strings of certification letters. It shows that they have met a certain standard and now, other people know it, too.

Don’t get me wrong. I am extremely pleased with the availability of your various high quality tools, both hardware and software, for my students to use. And I don’t for one minute think less of any teacher who achieves and/or lists certifications from Apple, Google and Microsoft in their profile. As I just said, I have a bunch of certifications, too. My concerns don’t rest with my colleagues at all. My concerns rest with three specific issues I have:

  1. a feeling of ‘being used’ as part of advertising
  2. losing sight of what really matters
  3. that one company’s technology has everything you need

I know ‘being used’ might sound a little harsh… and it is probably hypocritical, as well, since I have certifications from all of you. But I am getting more and more suspicious of these certifications. Are they really helping teachers to learn more about how technology can be used to empower students and transfer agency to them? I read the rationales in your ads about your certification programs and I wonder. The ads say things like: “You’ve spent the time growing your skills, now get certified to be recognized for the work you’ve done” (1) or “As an Educator you can build skills on iPad and Mac that directly apply to activities with your students, earn recognition for the new things you learn, and be rewarded for the great work you do every day” (2) or “The Microsoft Certified Educator (MCE) certification validates that educators have the global educator technology literacy competencies needed to provide a rich, custom learning experience for students” (3).

Recognition. Validation.

But in every certification process I have participated in, I’ve never been asked to critically compare similar tools from different companies in terms of their efficacy with students. I’ve never been asked how I could combine tools from different companies to best meet the needs of students. I’ve never been asked to explore in-depth how a tool, combination of tools, could help students think, learn, and share. (Interestingly, there was one certification process where I did do all of these things quite regularly—but that was in university.) So, I cannot help but feel that these certifications (and the constant encouragement to share them) are more about business competition and advertising and less about empowering modern learners.

What is most important in education is learning. What helps kids to learn better? What barriers are in the way of learning? What empowers kids? To me, these are the essential questions and these are the things I find that I have to constantly keep reminding myself of. As cool as Google Expeditions are, for example, one must ask how specifically it will help kids learn better? I’m not saying that it will or it won’t… My point is that one must take care not to lose sight of what really matters. I admit it; I am guilty of it all the time… and, all the time, I have to work hard to center my thinking on learning, and then surround myself with these essential questions: What helps kids to learn better? What barriers are in the way of learning? What empowers kids?

 

Coding, Thinking, Reflection & Transfer

Screen Shot 2017-04-23 at 8.44.38 PMI am always asking and thinking about three questions regarding the use of computer programming as a tool for (co)learning, (co)thinking, (co)designing, and self-expression in schools. Within educational contexts, my questions are:

  • What is the promise of coding to learn?
  • What is the promise of learning to code?
  • How can the promise of each be be realized?

This post is in no way an in-depth look at each of these questions; in fact, exploring these questions amounts to a significant chunk of my on-going professional learning in a career-long journey that started with this thesis.

But, recently, I’ve been thinking far more intently about the role of reflection applied to the development of coding projects by students and how reflection might enhance learning and transfer of learning. I have made observations of students coding; I have interviewed students in the midst of designing and realizing their projects; and I’ve reflected on my own experiences with computer programming over the years.

I’ve noticed that after solving problems that arise in coding projects, children often forget, or don’t attend to, the details of their thinking process when looking back at the program. While it is true that the result of their thinking process is captured in the product they created, how can we (and they) gain insights into the process?

What I have also observed, and felt as a programmer, is that the kind of reflection I am talking about is not helpful at the time of solving the problem. Keeping notes about how and what I am thinking when I am solving a problem would interfere with thinking itself! Any extra descriptive information I might want to capture in the middle of coding is usually highly practical (for example, I might want to make some notes about how a list of variables is being used in a function or I might want to write a note to myself in the future when I start to work another part of the program).

But one of the promises of learning through coding is the development of creative problem solving competency that can be transferred and applied to new contexts. That is, it is not enough that new knowledge and skills are learned… one needs also to learn how to apply the new knowledge and skills in the future. This is a paraphrasing of Papert’s Principle: Some of the most crucial steps in mental growth are based not simply on acquiring new skills, but on acquiring new administrative ways to use what one already knows. 

So, this is the focus of my question. How do we as educators help, support, encourage, facilitate, ensure that learners are acquiring new administrative ways to use what they already know? I am thinking reflection could be a powerful strategy–placing value and taking the time to really think about what was learned or figured out… thinking about how problems were solved, what mistakes were made and what success were had?

In my role as an educator and facilitator, I’d been reading these reflections and having conversations with students and looking to highlight any of the following:

  • creative process
  • design process
  • self-expression
  • collaboration
  • problem solving, testing, debugging
  • generalizing strategies & concepts
  • algorithms
  • efficiency
  • programming repertoire
  • code portfolios & remixing
  • learning transfer

What if an appropriate reflection is attached to the product, either in contextual notes within the code itself and/or by creating a parallel product such as a blog post in which reflective thoughts are captured? The criteria behind “appropriate” I think is the most important part of this and this would vary depending on quite a number of factors. I am currently facilitating a lot of 9-10 year olds working on long-term coding projects in Scratch. So, perhaps some reflective questions might be:

  • Tell the story of your project. Why did do it? How did the ideas for parts of your project change after you started?
  • How would describe the design process you used in your project? Imagine you are telling a friend about it who is interested in working on a similar project.
  • Tell the story of how you solved problems that came up in your project? Try to name the problem and describe why it was a problem. What was the process you went through to go about solving it?
  • What new ideas, questions or goals have come about as a result?
  • Create a timeline, description, process steps, of the creation of your project from start to finish?

I continue to think about the role of reflection and how to incorporate reflection with these students in way that is actually useful to them. I’ve been rereading a number of resources about reflection in learning within this new context. Here are some I have been looking at; if you have some great resources or you have ideas, comments or responses to what I am thinking about in this post, please comment below.

Some learning transfer and learning reflection resources I’m looking at:

 

Writing Teams vs. Curation Teams

I did a little research because I didn’t want to assume… But, as far as I can tell, many school districts in Canada and in the United States call a group of educators writing together a “writing team.” They assemble writing teams to write curriculum resources for teachers, documents that promote best practices in assessment, instructional design, effective teaching, summaries of new research about educational practices, and so on. I’ve written on a few writing teams.

My question is this: When is a writing team appropriate and when is a curation team appropriate? By the way, I’m not sure any district has ever formally organized a curation team… I just made that term up. But, in any case, it would seem to me that, there will be contexts in which the best resources are the most current resources or newest resources.  If innovation is the goal, then a static resource might not cut it.

Some might argue that curation is often one component of what writing teams do. They review research and summarize what is most applicable to the educational practice being addressed. That might be but my idea is different. My idea is the idea that the team is committed to an ongoing project of specific knowledge curation, and not a big one time creation.

My point is that I think there should be careful thought put into the nature of the knowledge that is to be created. When is it more appropriate, or necessary, to have static knowledge created and when it is more appropriate for the creation of resources that are dynamic, that is, updated, edited, and improved on a regular basis? I would love to see three kinds of knowledge creation teams in action: writing teams, curation teams, and hybrid teams.

For example, the thoughtful review and presentation of careful, painstaking, peer-reviewed research into certain educational practices might be more suitable for writing teams. I think the Ontario Ministry of Education’s collection of monographs called the Capacity Building Series is an excellent example of a very useful (yet static) set of resources for educators.

Much of my own professional work in education involves technology and new innovations and new ideas are shared daily. Let’s say a school district wanted to assemble a writing team about using coding in the classroom to support learning and thinking. This might be a job for a curation team. Instead of meeting for several days or weeks to write a single resource, the team would meet regularly through the year for short periods of time and curate (review, select, annotate, organize, share) resources on an ongoing basis.

I think it’s harder to find dynamically created/curated resources because they don’t look like traditional knowledge. I think a wiki is the killer app for ongoing knowledge creation but I’m not sure about curation. There are lots of curation tools (for example, storify) but perhaps the choice of curation tool is bound to the context and purpose of the content.

I think there is great potential for a hybrid team to write/collect a solid core set of resources and then to be bound by an ongoing mandate to curate resources… to keep improving, adding to, culling, and annotating so that they are as useful, practical and as fresh as possible.

 

Learning Design by Making Games (Update 3)

This the third update about our year-long game design project in grade 4/5. The game designers have one goal:

Design and code a game in Scratch that makes learning about fractions fun and easy for younger students.

The target game-playing audience for this project are grade 2 students. You can check out the progress of the games at any time by visiting our Fraction Games Scratch studio:

fraction-games-studio

Our fraction games Scratch studio

One of the books I have been reading this year is called Launch: Using Design Thinking to Boost Creativity and Bring Out the Maker in Every Student and I am attempting to see how that design thinking approach (lower left) can inform what I am doing with these students this year. So far, I continue to see many similarities to other design cycle and learning frameworks I have found useful, the simplest of which is Mitch Resnick’s Kindergarten approach to learning (lower right):

launch-cycle         kindergarten-approach-to-learning-resnick

I’m planning to devote a future post to reflecting on the learning design thinking aspects of this project.

On March 2, it was the grade 2 students’ turn to visit the grade 4/5 students (see Update 2 to read about when the grade 4/5 students visited the grade 2s). This time, the game designers sought feedback from their target game-playing audience. Even though the games were unfinished, the grade 2s provided their feedback about what they saw and other (as yet unimplemented) game ideas explained to them by the grade 4/5 designers.

There were three basic questions the designers had (but there were many follow up questions during the actual meetings):

  • What do you think of the game so far?
  • What makes a computer game fun?
  • What would you like to see in the game I am making?
file_008

Grade 5 student (left) asking questions and getting feedback about her game.

Grade 2 students met with two different game designers and provided their thoughts, impressions, ideas, and suggestions. Immediately following the session, game designers wrote a concise blog post to capture the feedback they received. This information will be reviewed before they begin their next coding session.

Grade 2 students are providing feedback again on their next visit in early April. Stay tuned!

Resources & Links

 

Learning Design by Making Games (Update 2)

This is my second post about a project called Learning Design by Making Games and is directly modeled after the research of Yasmin Kafai. An overview of that research and this project is in the initial post. Other resources and links about this project can be found at the end of this post.

This update finds our students nearing the end of the second month of coding. A very big difference between Kafai’s research and this project is that we are only coding officially about one hour per week. Students are invited to code on their own time as well and many certainly do. In Kafai’s research, the students were coding their games one hour per day!

Nevertheless, students are making progress on their projects. A Scratch studio was created to contain all projects and allow easy access by the students in the class and anyone else online who is interested. If you take a look, keep in mind that all games are unfinished and will remain that way until June.

file_002

On February 1, the grade 4/5 game designers went to visit a class of grade 2 students, the target audience for the game. They worked with concrete materials together in small groups for about 45 minutes. There were a number of questions the grade 4/5s had planned to ask the younger students:

  • What do the grade 2 students already know about fractions?
  • What are their game preferences? What kind of games do they like playing?
  • How did the grade 2 students work with the materials?
  • What did the grade 2s find challenging?
  • What surprised you about your interactions with the grade 2s?

The last question above became a follow up question because one of the themes of the debrief session about the grade 2 visit was that the game designers were often surprised at how quickly the grade 2s learned things. We took notes during our debrief session about the visit. On March 2, the grade 2s will be visiting the Grade 4/5 class to take a peek at the game design/coding progress and provide feedback.

Resources & Links

 

Powerful learning results in flow

Once again, I was inspired and prompted by my friend Matt Oldridge into thinking and writing. This time, I found myself considering flow again. I wrote about this a few years ago but, since then, I have learned more about constructionism and more about learning in general. I’ve still so much to learn but Matt’s prompt today brought me to an epiphany:

Powerful, joyful, natural learning induces flow.

Seymour Papert always strongly argued that learning is an innate and powerful instinct in humans, especially children. His research, theories, and the learning & thinking tools he designed for children always sought to be in harmony with the way children learn naturally. When reading Papert, you hear him expressing, again and again, the idea that education and learning are two very different things. And, that learning should always be the goal.

So, my mid-week morning epiphany is this: The conditions Mihaly Csikszentmihalyi describes as necessary for “flow” are the “look fors” for powerful (joyful and natural) learning as Papert often described. Powerful, joyful, natural learning induces flow.

july-20-aug-02-2008-134

That is, whenever I have witnessed powerful learning in students, or experienced powerful learning myself, a state of flow was achieved by those ‘doing’ the learning. I’m still wondering if it works the other way around: when one is experiencing flow while engaged in an activity, is powerful learning always happening at the same time? What do you think?

Remember passwords using an algorithm

At this point in the information age, our personal digitals tools, data and valuable resources are often protected by a username and password combination. Maybe this will change in the future but currently, the task of remembering dozens or hundreds of passwords is a challenge.

Many people I know use one, or just a few, passwords for all of their accounts. While easier to manage, the well known problem with this approach is that if someone with malicious intent discovers one of those passwords, it will unlock a long list of your accounts.

passwordimage

I’ve never liked writing down my passwords or using special software to securely organize my passwords because they could be lost, they have to be kept up-to-date and managed, and possibly they could be stolen (which means the thief has access to everything).

The strategy that I use, and one that I shared last week with a teacher and his students, is the approach of using an algorithm so that a unique and strong password can be generated on an as needed basis for any web site you are using. Then, you will only ever need to remember one thing, the algorithm, which is the process of remaking any of your passwords… months or even years into the future.

To illustrate this point, let’s create a very simple algorithm to generate passwords. In this example, the result of each instruction appears in bold after the instruction (we will use an account you might have on google.com in the example below)

  1. Write in lowercase the first, third and last letter from the unique part of the domain name (in this case the “google” part of google.com):
       Password so far: goe
  2. Count the number of vowels in that unique name and add a zero in the tens column if it is only one digit; write the two digits:
       Password so far: goe03
  3. Take what you have written so far and write it again
       Password so far: geo03geo03

That is now your algorithmically created password for your account at google.com. Using the above algorithm, if you had an account on amazon, your password is: aan03aan03. You might be thinking, “I have five Google accounts! They’d all be the same!” In that case, see below.

I wouldn’t recommend the above algorithm. It’s not a very strong password. If you are going to use the algorithm method, you should create an algorithm that builds a very strong password.

Let’s say you want a password that is 10+ characters long, has lowercase and uppercase letters, numbers, and symbols. Again, let’s use the google.com example and say your username/email on that account is example2017@gmail.com. Here is an algorithm that produces a strong password according to https://password.kaspersky.com/

  1. Write in lowercase the first, third and last letter from the unique part of the domain name
       Password so far: goe
  2. Count the number of total number vowels in the that unique name. Find that number on the number pad on your computer keyboard. Push shift and hit that number and the one after to add two symbols (if there are more than 10 vowels, return back to one again)
       Password so far: goe#$
  3. Count the number of vowels in the that unique name and add a zero in the tens column if it is only one digit; write the two digits
       Password so far: goe#$03
  4. Write the first three letters again of the password so far but in reverse order and in uppercase
       Password so far: goe#$03EOG
  5. Take the first three letters of your google username and add to the end
       Password so far: goe#$EOG03exa

According to https://password.kaspersky.com/ it will take a bruteforce attack about 33 centuries to crack that password. Not bad…

If anyone figures out, discovers, or somehow steals this password, then they can only get into that account. If they try it with any other account, it won’t work of course because it is unique for that site and account.

Neither of these is close to the algorithm I use… there are lots of ways to look at letters, numbers, keyboard, symbols, and so forth. And it’s fun to make one up that your like and that works for you. Just make sure that it’s not too complicated or else you might not be able to remake the password in your head.

And if remembering a somewhat complicated algorithm seems more daunting than remembering a few passwords, just remember that that is all you will have to remember once you start to use it and after you change the password on your accounts. And, you’ll have a unique and strong password for every site/tool you use.