# data[].attributes.body
Think of what we teach them during the course as tools in a toolbox. They can now use these tools to build even more complicated and interesting things.

Some of the things they can build are:
1. Web Applications
2. Games
3. Automate tasks on their own computers

They can even deepen their knowledge and add more tools into their toolboxes. Computer Science and Programming are fast growing disciplines with an unending treasure trove of things to learn.

Below are links to some great learning resources that will allow you to take what they have learnt with us much further, as well as the recommended follow-on courses at Saturday Kids.

# data[].attributes.body
Project Presentation and Showcase
In their final lesson, children take turns to present their final project, sharing their journey of how they created it with their peers while enhancing their presentation skills.

By the end of this lesson, your child will be able to:

Complete their final project with minimal help

Remember and revise their learnings

Articulate clearly what they have created for their final project to an audience

# data[].attributes.body
Project Planning
Introducing the concepts of design thinking, kids are guided on how they can brainstorm meaningful and impactful ideas for their final project.

# data[].attributes.body
Sharing of Final Project Ideas
In this session, children are given the chance to share the ideas they have generated to get suggestions on how they can improve and gain different perspectives on their project. They are also guided on how to provide constructive feedback to their peers, then use this feedback in the reiteration and prototyping process. Lastly, kids are given tips on how to prepare for and give presentations.

By the end of the lesson, your child will be able to:

Plan their project

Give feedback to their friends

Build their project

Prepare for presentation

# data[].attributes.body
Python Programming with For-Loops
Kids learn about another type of loop — a for loop —  and visualise its execution using the online tool Python Tutor. Through different activities, they learn why for loops are useful and how they can be implemented.

By the end of this lesson, your child will be able to:
For Loops

Describe what a loop does

Explain why we should use loops

Describe what is a for loop

Create a for loop using range(start, step, stop)

Create a for loop that repeats and go over each character in a string for char in string

Analyse the differences between for loop and while loop

# data[].attributes.headline
Recommended follow-on course: Make with micro:bit & Python

# data[].attributes.subject
Recommended follow-on course: Make with micro:bit & Python

# data[].attributes.attachment_link.readable_text
An introduction to the DIY movement & the art of Making with micro:bit & Python.

Making is the art of using tools to tell a story about what you see needs to be made & how to improve the world around you. Be introduced to the art of Making & tinkering through learning the micro:bit, a small but powerful computer. Combine it with your Python programming skills in this introduction to Making, to create your invention and tell your story.
KEEPIN' IT SHORT & SNAPPY

For ages 11 to 14

An introduction to the DIY movement & Making

Build on your Python skills and apply it to a physical context of microcontrollers & electronics

Combine both programming & electronics to invent your tools

Debug & Ideate to build confidence in designing your own programs

Bring back your micro:bit, accessories sold separately

Requires Back to Basics: From Zeroes to Python Heroes or Equivalent Python programming experience

Get hands on & be introduced to the Maker movement and the art of making with the micro:bit, a tiny computer that's small in size but HUGE in what it can do.

Build on the Python skills you already have and learn how to program and control the micro:bit. Learn to debug and resolve errors through deliberate debugging exercises.

Use the micro:bit's built-in radio to send messages wirelessly. Then learn to extend the what the micro:bit can do with additional add ons like LEDs, an OLED screen, sensors & more!

To cap it off, combine your knowledge of Python, the micro:bit and an ideation & planning framework to create your own micro:bit project.

1. Introduction to microcontrollers & micro:bit

2. Displaying images, animations on the display

3. Buttons & inputs

4. Tracking motion & gestures with the Accelerometer

5. Extending the micro:bit with breakout boards

6. Programmable LED displays with NeoPixel

7. Use Radio to communicate between microbits

8. More inputs with OLEDs & Potentiometers

9. Deliberate debugging & ideation process

10. Design & prototype your maker project!

No lectures. No memorisation. No ONE right answer. Like real life, we're all about trying things out yourself, failing, figuring what went wrong & trying again. These are the skills & mindset that will last a lifetime and how we learn in real life. Let's get kids to learn how to learn. Because the kids who learn to learn become curious, inventive, resourceful human beings who solve real world problems to make a meaningful impact.

# data[].attributes.attachment_link.title
Make with micro:bit & Python | Saturday Kids

# data[].attributes.attachment_link.description
Get hands on & be introduced to the Maker movement and the art of making with the micro:bit, a tiny computer that's small in size but HUGE in what it can do. Build on the Python skills you already have and learn how to program and control the micro:bit.

# data[].attributes.body
All the programs they have written in the past 8 lessons on repl.it

Their final project that was presented to the class, as well as any presentation aids they created to help them when presenting

# data[].attributes.body
Their final project idea

# data[].attributes.body
Their final project

Previous iterations of their project and how it has evolved

# data[].attributes.body
In this course, children will learn how computers really work - from bits and the binary system to basic python programming. With an abundance of mini-challenges over the course of 4 weeks, kids will be able to build their problem-solving abilities as well as express their creativity when creating an original masterpiece for their final project.

Each day's lesson structure is broken down and summarized into columns so parents have a better idea of what their children learnt on each day.

We've also included 2 sections "Things you can do with your child" and "Questions to ask your kid" to help you learn alongside your kid and to help them share with you what they've learnt during the course!

The "Taking it further" column provides parents with information on what their children can do with the knowledge and skills they have acquired at this camp.

Feedback, suggestions or any comments? Email us at hello@saturdaykids.com.

# data[].attributes.body
Their program which can remove vowels

# data[].attributes.headline
FREE E-books on How to Build Games with Python

# data[].attributes.subject
FREE E-books on How to Build Games with Python

# data[].attributes.attachment_link.readable_text
Receive a Free Review Copy

If you'd like to receive a free print copy of Invent Your Own Computer Games with Python, 4th Edition, please fill out the form at https://goo.gl/forms/u1PoLWLRl6fZ7nQX2. Please specify you want "Invent Your Own Computer Games with Python". You'll receive a free ebook to read, and upon posting a review to Amazon, you will receive a complementary print review copy of the book. (UPDATE: There's been a large amount of interest, and I can't guarantee you'll get a print book. However, I can definitely send you an ebook to review.)

To demonstrate that you will be able to write a review, please send me a link to an Amazon, Goodreads, or Powells review you have written before. If you haven't written an Amazon review before, please explicitly tell me in your email you have an Amazon account and can post reviews. Also, please include the word "walrus" in the subject of your email so I know you read this. I'm happy to send out books to reviewers, but I can only respond to serious inquiries from folks who have read these instructions.

Please post an honest review. Posting a negative review will not impact whether or not you get a free print book. The only requirements are that the review be a minimum of 100 words, you must live within the United States (due to shipping costs), you must have purchased $50 off Amazon in the last year (Amazon has this requirement before you can write a review), and that you email me first before writing the review.

# data[].attributes.attachment_link.description
If you'd like to receive a free print copy of Invent Your Own Computer Games with Python, 4th Edition, please fill out the form at https://goo.gl/forms/u1PoLWLRl6fZ7nQX2. Please specify you want "Invent Your Own Computer Games with Python". You'll receive a free ebook to read, and upon posting a review to Amazon, you will receive a complementary print review copy of the book.

# data[].attributes.body
Are you happy with / proud of what you have created?

Tell me three things you have learnt during the process of refining your final project.

How would you further improve on your project if given more time?

What else would you like to create with Python?

# data[].attributes.body
Learn about the Problem Statement they have chosen with them

Ideate with them on how they can create something relevant to the issue and encourage them to share their personal thoughts on it

Explore other pressing world issues with them, like those that can be found here:
http://www.kidsgoglobal.net/the-issues

# data[].attributes.body
Play around with their final project and help test out the functionalities

Review all the concepts learnt

Ask them to present their idea to you as practice for their final presentation in front of their classmates

# data[].attributes.body
Review the concepts of loops

Try looking through examples of different ways loops can be structured here:
http://www.compciv.org/guides/python/fundamentals/for-loops/

# data[].attributes.headline
FREE E-books on How to Build Games with Python 2

# data[].attributes.subject
FREE E-books on How to Build Games with Python 2

# data[].attributes.attachment_link.readable_text
Making Games with Python & Pygame covers the Pygame library with the source code for 11 games. Making Games was written as a sequel for the same age range as Invent with Python. Once you have an understanding of the basics of Python programming, you can now expand your abilities using the Pygame library to make games with graphics, animation, and sound.

The book features the source code to 11 games. The games are clones of classics such as Nibbles, Tetris, Simon, Bejeweled, Othello, Connect Four, Flood It, and others.

Copyright 2009- | [email protected] | @AlSweigart

BLACK LIVES MATTER

TRANS RIGHTS ARE HUMAN RIGHTS

TAX THE RICH

# data[].attributes.attachment_link.description
Making Games with Python & Pygame covers the Pygame library with the source code for 11 games. Making Games was written as a sequel for the same age range as Invent with Python. Once you have an understanding of the basics of Python programming, you can now expand your abilities using the Pygame library to make games with graphics, animation, and sound.

# data[].attributes.body
Describe one thing that you learnt today.

What is your final project about?

Why did you choose this topic to work on?

What programming concepts are you planning to use?

# data[].attributes.body
Describe one thing that you learnt from each lesson.

What different feedback did you receive from your classmates?

Tell me about one of your classmates' project ideas you found most interesting.

What feedback did you give to that classmate?

How do you plan to use the feedback/advice/suggestions to improve the current version of your project?

Are there additional programming concepts you plan to use?

# data[].attributes.body
Describe one thing that you learnt today.

How does a for loop work?

What is the difference between a for loop and a while loop?

What can I do with Turtle?

# data[].attributes.headline
FREE E-book on How to Write Automation Programs with Python 

# data[].attributes.subject
FREE E-book on How to Write Automation Programs with Python 

# data[].attributes.attachment_link.description
By Al Sweigart. Over 500,000 copies sold. Free to read under a CC license.

# data[].attributes.body
Tips for Brainstorming

List a few issues that are important to you. Why is it an issue? Why is it important? How does it affect us?

Research on the relevant topics and current affairs regarding the issue. Are there current measures in place to help fix this issue? Are they currently effective? Why or why not?

How can we help improve this issue? Are there things we can create? What kind of programs can we code with regards to this?

# data[].attributes.body
How to give constructive feedback

Before sharing your thoughts, first ask yourself: Is it kind? Is it helpful? Is it specific?

To make your feedback more helpful, try think of the root cause of why you think a certain aspect of your friend's project may need improvement. If you were in their shoes, what kind of suggestions would you like to receive in order to improve it?

To be more specific, try to pick out which exact part(s) may be posing a problem. For example, if you find their project confusing, is it because of the phrasing of the text prompts? Perhaps it is not very intuitive and you expected the program to be run differently?

Use the feedback sandwich: start with a compliment, provide your suggestion, then end with another compliment.

How to write a script

First think about your presentation method. Would a video be more appropriate or effective to demonstrate your project's functionalities? Are slides more helpful if you require text and pictures  displayed to illustrate your point?

Start off your presentation by introducing what you created. Why did you choose this topic? What issues does it try to tackle?

How does your project work? How do users interact with it? Is there a certain order of events that take place in your project?

At what part(s) of the project did you face difficulty? Which part of it was not working the way you wanted? Why was that part difficult for you?

How did you manage to overcome the problem? Was there some advice you took? Which parts of your project did you change to fix it? What was your thought process when doing so?

Which concepts/skills that you've learned in the past lessons have you made use of? How/at which points did you implement them in your code? Was there a point where you decided to choose one method over another? Why did you think that method was better?

# data[].attributes.body
What is a for loop?

A for loop is able to go through each character in a string, or each value stored in a list

A for loop can also be used with the range() function to set the number of times the block of code under the for loop should be executed.

How does range() work?

To loop the code n times:

for i in range(n):
    <code to loop>

When do we use which loop?

Whether we should use for loops or while loops will depend on the program and it is supposed to do

We should use for loops if we know how many times we want to loop our code

We should use a while loop if the number of times looped depends on whether a condition is True or False

We should use a while True loop if we want a loop that repeats forever

# data[].attributes.headline
FREE E-book on How to Build Websites & Web apps with Python

# data[].attributes.subject
FREE E-book on How to Build Websites & Web apps with Python

# data[].attributes.attachment_link.readable_text
Web development is the umbrella term for conceptualizing, creating, deploying and operating web applications and application programming interfaces for the Web.

Why is web development important?

The Web has grown a mindboggling amount in the number of sites, users and implementation capabilities since the first website went live in 1989. Web development is the concept that encompasses all the activities involved with websites and web applications.

How does Python fit into web development?

Python can be used to build server-side web applications. While a web framework is not required to build web apps, it's rare that developers would not use existing open source libraries to speed up their progress in getting their application working.

Python is not used in a web browser. The language executed in browsers such as Chrome, Firefox and Internet Explorer is JavaScript. Projects such as pyjs can compile from Python to JavaScript. However, most Python developers write their web applications using a combination of Python and JavaScript. Python is executed on the server side while JavaScript is downloaded to the client and run by the web browser.

Web development resources

To become an experienced web developer you need to know the foundation principles that the web is built with, such as HTTP requests and responses, client (typically web browsers) and server ( web servers such as Nginx and Apache architectures, HTML, CSS and JavaScript, among many other topics. The following resources provide a range of perspectives and when combined together should get you oriented in the web development world.

How the Internet works is a must-read to get a quick overview of all the pieces that go into a network connection from one machine to another. The example explains how an email is sent and the story is just as useful for learning about other connections such as downloading a webpage.

If you want to be a web developer it's important to know the foundational tools used to build websites and web applications. It is also important to understand that the core concepts such as HTTP, URLs and HTML were all there at the beginning and then were expanded with new specifications over time. This article on the History of the Web succinctly explains the origins of the web starting from Tim Berners-Lee's origin vision and release at CERN.

Web Architecture 101 is a great high-level overview of the technologies that run the modern web, such as DNS, load balancers, web application servers (for Python that equates to WSGI servers), data bases, task queues, caching and several other critical concepts.

The Evolution of the Web visualizes how web browsers and related technologies have changed over time as well as the overall growth of the Internet in the amount of data transferred. Note that the visualization unfortunately stops around the beginning of 2013 but it's a good way to explore what happened in the first 24 years.

What happens when? is an incredibly detailed answer to the questions "What happens when you type google.com into your browser's address box and press enter?" that seems straightforward on the surface until you really dig in.

How browsers work provides an overview with solid detail on how browsers take the HTML, CSS, JavaScript, images and other files as input and render webpages as output. It is well worth your time to know this stuff as a web developer.

The history of the URL explains how the growth of ARPANET to hundreds of nodes eventually led to the creation of the URL. This is a great read that provides historical context for why things are the way they are with the web.

Web app checklist presents good practices that developers building and deploying web applications should follow. Don't worry about having every single one of these recommendations implemented before getting your site live, but it is worthwhile to review the list to make sure there is not something obvious you can handle in a few minutes that will improve your site's security, performance or usability.

The Browser Hacker's Guide to Instantly Loading Everything is a spectacular technical talk given by Addy Osmani at JSConf EU 2017 that has great bits of developer knowledge for both beginner and experienced web developers alike.

Build a web application from scratch and its follow on posts for request handling middleware explores the fundamentals of web development. Learning these foundational concepts is critical for a web developer even though you should still plan to use an established web framework such as Django or Flask to build real-world applications. The open source code for these posts is available on GitHub.

While not Python-specific, Mozilla put together a Learning the Web tutorial for beginners and intermediate web users who want to build websites. It's worth a look for general web development learning.

Web development involves HTTP communication between the server, hosting a website or web application, and the client, a web browser. Knowing how web browsers works is important as a developer, so take a look at this article on what's in a web browser.

Ping at the speed of light dives into the computer networking weeds with how fast packets travel through the internet plumbing. The author created a Python script that scrapes network speeds from disparate locations to see what the network speed is in fiber optic cables as a percentage of the speed of light.

The critical path: optimizing load times with the Chrome DevTools provides a well-written explanation about using Chrome's developer features to improve the performance of your websites and web applications.

Three takeaways for web developers after two weeks of painfully slow Internet is a must-read for every web developer. Not everyone has fast Internet service, whether because they are in a remote part of the world or they're just in a subway tunnel. Optimizing sites so they work in those situations is important for keeping your users happy.

The History of the URL: Path, Fragment, Query, and Auth gives a comprenhensive historical perspective on the fundamental way to link to resources on the web. This post should be required reading for web developers.

Quantum Up Close: What is a browser engine? explains how a browser takes in HTML, JavaScript, CSS, images and any other data and files to produce a webpage as output.

How to understand performance tests is an important topic because many websites are slow and bloated. Learning about improving the performance of your site is one of the best ways to become a better web developer. Another great article on website performance is The average web page is 3MB. How much should we care?. The visuals alone tell a compelling story about how large webpage sizes have grown in recent years.

Let's get started. What do you want to learn right now?

# data[].attributes.attachment_link.description
Web development is the umbrella term for conceptualizing, creating, deploying and operating web applications and application programming interfaces for the Web. The Web has grown a mindboggling amount in the number of sites, users and implementation capabilities since the first website went live in 1989.

# data[].attributes.headline
Free University Accredited Programming Courses

# data[].attributes.subject
Free University Accredited Programming Courses

# data[].attributes.attachment_link.readable_text
Learn programming languages and concepts to prepare for a career in hardware or software development

What is edX?

Real college courses from Harvard, MIT, and more of the world's leading universities.

Accelerate your career with a computer science program

Best for those who want a series of courses

Gain expertise with a Master's Degree in Computer Science

Earn a traditional credential from the University of Texas at Austin (UTAustinX), a top-ten university.

#10

Nationally in Computer Science

(US News Best Graduate Schools)

#8

Artificial Intelligence, Systems

(US News Best Graduate Schools)

#7

Theory

(US News Best Graduate Schools)

Stories from our learners

" The Front-End Web Developer Professional Certificate program from W3Cx changed my life. The remote format of the program allowed me to learn more about web development without taking time off of my current job. After I completed the certification, I moved to a completely different career path. I changed jobs and industries and am now am in a leadership role with a new company."

Larisa took this program

Details about Front-End Web Developer from W3Cx

Based on internal survey results

360,143 people are learning on edX today

# data[].attributes.attachment_link.title
Computer Science: Online Courses from Harvard, MIT, Microsoft

# data[].attributes.attachment_link.description
Learn programming languages and concepts to prepare for a career in hardware or software development Real college courses from Harvard, MIT, and more of the world's leading universities. Accelerate your career with a computer science program Best for those who want a series of courses Earn a traditional credential from the University of Texas at Austin (UTAustinX), a top-ten university.