Learn key stage 3 science with over 100 information-nuggets. Just ask KS3 science for biology, chemistry or physics and you'll be on top of your science in no time.


:sparkles: Inspiration

As a science student, I wanted to produce an Alexa skill to help younger children thrive and enjoy STEM subjects. I decided to target the skill for students aged between 11 and 13, when science begins to get more involved. There is a lot of new information to be learn because what was previously one subject splits into three at secondary school - chemistry, physics and biology. This skill is designed to help solve this problem.

:mortar_board: What it does

My app provides students with daily information-nuggets, optimized for their science curriculum. Breaking learning into small, digestible chunks is the best way to absorb large amounts of information, and what could be easier than asking Alexa to teach you something while you’re eating breakfast or about to go to sleep. A key objective was to create a skill that kids could adopt into their daily routine so they could learn more, interacting with it more frequently.

:hammer: How I built it

First I compiled a database of educational material - over 100 phrases - based off the biology, chemistry and physics UK National Curriculum specification for 11 to 13 year olds, known simply as key stage three. When writing, I thought carefully about length and content. To aid understanding and keep young children engaged, I kept each fact short, encompassing only the key information that would be easy to understand when read aloud.

On the technical side, I built the Interaction Model in the Skill Builder Beta, leveraging several premade intents from the built-in library to save time. For the custom intents, I supplied a large variety of sample utterances to ensure the skill would understand anything that was thrown at it. By using the ‘Code Editor’ tab I could also extract the model in JSON, and use a text editor to quickly add lots more subtly different phrasings.

I used AWS Lambda function endpoints, deployed on both the US East (N. Virginia) and EU (Ireland) servers to speed up response times. I used 7 test events in AWS Lambda to catch silly mistakes, saving time debugging. When I had a logic error I used Amazon CloudWatch Logs to help debug it.

I used session attributes to store the current category, so users asking for another fact are given another from the same category. However at any time users are still free to swap category by simply asking to do so. I contemplated storing the session state in Amazon DynamoDB but ultimately decided against it as I was worried users could get stuck in a specific category if they were not prompted at the beginning (although users can jump directly by asking for a specific category with the invocation utterance e.g. "ask KS3 science to teach me chemistry").

:warning: Challenges I ran into

It took a long time to perfect over 100 facts, especially as I carefully considered the phrasing, language used and content of each one, using custom SSML in places to sort out intonation quirks, bring character into the skill and correctly pronounce chemical symbols.

It was hard to get in the mindset of much younger children when writing the facts. However, by reading a lot of existing material online, I was able to tailor the style to students aged 11-13.

Thanks to Amazon’s easy to use developer console and AWS integration, it was a breeze to get the code up and running, plus the automated testing functionality in AWS Lambda helped catch silly mistakes.

I wanted to add hint directives to the response, helping the user know what to say next. I thought this would be especially useful with younger children as they might be more unpredictable; therefore hints would help guide them to the ‘happy path’. It would also make the skill more interesting on Echo Show devices. However, I couldn't implement this with the alexa-skills-kit-sdk-for-nodejs, getting the error that this.response.hint is not a function.

:tada: Accomplishments that I'm proud of

I'm proud that my skill could help the young students learn science and improve their confidence.

I'm also proud that the skill is intuitive and easy to use, by following best practices. For example, it uses natural language: instead of saying "say 'another’ if you want another fact, or 'quit' to exit", the skill simply asks "do you want another fact or to exit?". It also handles events that some might not expect, e.g. an AMAZON.YesIntent to the question "Would you like to learn biology, chemistry or physics?" will return a random fact from across all categories.

:muscle: What I learned

I learned a lot about designing a skill aimed at younger children, rather than the general population. I also gained an insight into how to teach younger children - ensuring the language is simple and avoids scientific jargon, especially for speech.

I want to keep adding more content to KS3 science to keep students engaged and help them continue to learn. I will also add other STEM subjects, including maths and computer science. And further in the future, the skill will hopefully cover all KS3 subjects including geography, history and languages. It could also be extended to older students - studying for GCSEs and A-levels - as learning in small chunks is beneficial to people at all stages of their study.

Share this project:

Updates