Programming

Learn in English

Computational
Thinking

Connect the world

Programming

Learn in English

Computational
Thinking

Connect the world

Scroll down for more or 選擇中文

Scroll down for more or 選擇中文

Upcoming Events


...
Winter Programming Camps 2020

Join our Unity and Little coder winter camps!

More info
...
Demo lessons 2019/12

Curriculum introduction and demo lessons in December 2019.

Register

Welcome


Dear Parents and Students,

I started Peanuts Programming in 2017 to bring my love of programming and computer science to students in Taiwan, and to create an environment where I would be confident that my daughter can acquire the skills she will need for success in the future. I believe it is essential that we help prepare all children for a future where automation will have an enormous effect on the nature of jobs, by empowering them with computational thinking skills learnt through programming.

Please use the following links to discover more:

Why is learning to program important?

Why choose our school?

What is in our curriculum?

When you are ready, please contact us to book a private consultation or arrange to join a free demo lesson.

I hope you will join us on this journey!

Dr. David White
PhD Computer Science, University of York, UK

Why is learning to program important?


Direct Benefits

Seeing your ideas come to life through programming is an incredibly rewarding experience - being able to program not only enables you to be more efficient at completing tasks, but it also allows you to solve problems that would previously have been impossible.

Computational Thinking

Arguably the most significant benefit behind learning to program is that it trains the development of computational thinking, which is a set of problem solving skills applied by programmers that have application in many other scientific and engineering fields.

What does computational thinking entail?

Computational thinking is defined by the following five skills: algorithmic thinking, evaluation, decomposition, abstraction and generalization. A programmer employs these skills to arrive at solutions when planning and developing software. However, it is clear now that these skills are highly desirable across many non-programming fields and can help us in day to day life as well.

Algorithmic thinking
"I can precisely specify instructions."

A classic example of an algorithm is how to multiply two numbers together. Once we know the sequence of steps and can reliably perform them, it is possible to multiply any two numbers together without having to learn from the beginning. Alternatively, consider giving directions to a friend, if your instructions are unclear or ambiguous then your friend may not be able to find you.

Since a computer blindly follows instructions, it is especially important that those instructions are clear and unambiguous, otherwise the program may exhibit unexpected behaviour - i.e. bugs!

Evaluation
"I can determine the quality of a solution."

There are often many ways to solve a problem and each comes with its advantages and disadvantages. Evaluation allows one to compare solutions and select the solution that represents the best overall compromise. For example, when booking flights there is often a tradeoff between convenience (departure/arrival times and airports), comfort (journey duration) and cost.

Similarly, there exist tradeoffs in the different ways to write a piece of software - one solution may be fast, but require lots of memory, while another solution may exhibit the opposite characteristics. Programmers then evaluate which solution is the best for a particular situation.

Decomposition
"I can split a problem into smaller parts, then solve those seperately."

At first glance, a problem can often appear overwhelmingly complex. Decomposition allows one to split a problem into smaller, simpler parts which are easier to solve. Once these sub-problems are solved, they can be combined to solve the original problem. A day-to-day example would be the kitchen of a busy restaurant, where the preparation of a dish is split between multiple people.

In web applications, such as online banking, the client (your computer) communicates with the bank’s server. Decomposition is applied to split the work between two teams, one developing the client side software and the other the server side. The two parts are then combined into a solution through a well-defined interface which allows the two parts to communicate.

Abstraction
"I can ignore the irrelevant and focus on the important."

Abstraction is one of the main reasons software can be developed so rapidly today. In the past, programmers had to consider the low-level details of a computer, such as the physical hardware and operating system. Today, however, abstractions hide all those details thus allowing a programmer to concentrate purely on their software rather than worrying about the system that will execute it.

Generalization
"I can adapt existing solutions to new situations."

Imagine we had an existing solution for sending the messages “Hello” and “Goodbye” to a friend’s cell phone, but now we wish to add the message “Let’s meet up”. To accomplish this we can generalize from our two existing solutions to arrive at a solution where we can send a message with any text to our friend’s cell phone. We can now use this generalized solution to easily solve the original problem.

Automation

We know that automation is changing the type of jobs that will be available in the future, yet those requiring the skills of computational thinking will likely be very difficult to automate. Thus training students to acquire these skills can help to protect them against a future defined by automation.

National curriculums

Many countries are now integrating programming into their national curriculums, and the UK has gone further than most by making programming and computer science mandatory from the age of five. It is clear that the logic behind these decisions is not that all children are expected to have programming as a part of their future job, but it is that they wish to train computational thinking to protect a future workforce against automation.

Why choose our school?


...
...

Teachers & Methods

Our teaching methods promote active engagement from students which leads to an exciting and dynamic atmosphere in the classroom. To achieve this result, all our teachers come from educational backgrounds where this style of learning is the norm.

...
...

State-of-the-art curriculum

Our carefully curated curriculum provides a continuous path from programming novice to expert, and employs proven teaching material from the UK and USA. Applied modules in our curriculum are always in motion as we adapt to the latest topics and trends in the industry.

...
...

Learn programming concepts

We develop programming ability that is transferable to other programming languages, which is essential for both the evolving nature of programming languages and participation in our applied modules.

...
...

Small group teaching

We deeply care about our learning environment and keep our class size small. This is to ensure that a teacher has enough time to help students work out solutions by themselves. It is only through independent problem solving that computational thinking can truly be learnt.

...
...

Creative projects

Students participate in creative programming activities to engage with the content. They learn to define their own problems and then apply computational thinking to solve them.

...
...

Project management skills

Through extensive final projects, students gain experience in the complete software development process, and give a presentation showcasing their work at the course conclusion.

...
...

Delivered in English

By delivering programming teaching in English, we combine two of the most important skills for our children in a modern interconnected world.

Curriculum


Our curriculum defines a clear and well-structured series of modules that take students from novice to advanced programmers. Along the way students are exposed to computational thinking and build up proficiency through repeated application of those skills in solving self-defined problems.

Each stage of our curriculum comprises one or more core concept modules followed by multiple applied modules that reinforce and extend core skills. This structure is essential to developing good programming skills, as we believe that racing through different programming languages just to get to the next thing is not a productive way to learn programming.

In contrast our curriculum ensures:

Stable Programming Environment - Many advanced concepts can be acquired in languages that are often assumed simple, such as Scratch, and the existing student familiarity with the language speeds up acquisition of new concepts. Moreover, it allows students to tackle challenging problems that would otherwise be too complex to pursue when combined with the additional overhead of a new programming environment.

Apply Skills to Real-world Problems - Rather than practicing new skills and concepts in toy problems, both our core concept modules, and to a greater extent our applied modules allow students to use their skills in solving interesting real-world problems. These range from building and programming wireless networks of IoT devices to advanced image recognition using deep learning frameworks.

Age Appropriateness - Learning programming can be a challenge and students do not need additional impediments during the process. For example, while textual programming delivers a degree of flexibility not present in block-based interfaces, to learn efficiently students must have sufficient typing speed and the resilience to overcome syntax related errors.

  • Level One (Ages: 6-9)

    • ... CORE
      Dash and Dot Robots CORE

      In this core module young students learn the fundamentals of programming and computational thinking through fun activities using the state-of-the-art robots Dash and Dot.

      • ... APPLIED
        Game design with Bloxels APPLIED

        Design your own computer game by importing Pixelart that you create in the real-world. Make your own game assets including levels and characters complete with custom animations!

      • ... APPLIED
        Robotic Hardware with Dash and Dot APPLIED

        Enhance the Dash and Dot robots with accessories and Lego to solve classroom problems. Make Dash into an artist that can sketch and a basketball player that can shoot hoops!

      • ... APPLIED
        Games and Animations with ScratchJr APPLIED

        Create games and animations in this simplified version of Scratch designed for mobile devices. Build a maze game or tell your favourite story!

      • ... APPLIED
        Physical Computing with BBC Microbit APPLIED

        Learn how to control electronic circuits through the BBC Microbit programmable controller. Make wearable electronics and an intruder detection system!

  • Level Two (Ages: 9-12)

    • ... CORE
      Creative Computing CORE

      In this core module students learn programming skills and train computational thinking through the design and implementation of creative projects such as stories, animations and games in Scratch.

      • ... APPLIED
        Machine Learning APPLIED

        Use deep learning to recognize patterns in text, images and sound. Make a smart assistant like Siri or a voice translator for an alien language!

      • ... APPLIED
        Internet of Things (IoT) with BBC Microbit APPLIED

        Build and program embedded systems and develop an Internet of Things (IoT) using wireless networking. Chat with your friends using emoticons or create a temperature monitoring network.

      • ... APPLIED
        Game Modification with Minecraft APPLIED

        Learn game modification and practice programming by modifying your Minecraft world. Program helpful AI "agents" that automatically build complex structures and mine resources for you!

  • Level Three (Ages: 11-14)

    • ... CORE
      Mobile App Development CORE

      In this core module students will expand their programming ability and computational thinking by learning to design and implement Android apps with MIT’s AppInventor. Projects will employ many of the sensors and features available in modern smartphones such as the camera, accelerometer and positioning systems.

      • ... APPLIED
        Machine Learning APPLIED

        Use deep learning to recognize patterns in text, images and sound. Make a smart assistant like Siri or a voice translator for an alien language!

      • ... APPLIED
        Internet of Things (IoT) with BBC Microbit APPLIED

        Build and program embedded systems and develop an Internet of Things (IoT) using wireless networking. Chat with your friends using emoticons or create a temperature monitoring network.

      • ... APPLIED
        Game Modification with Minecraft APPLIED

        Learn game modification and practice programming by modifying your Minecraft world. Program helpful AI "agents" that automatically build complex structures and mine resources for you!

  • Level Four (Ages: 13+)

    • ... CORE
      Python CORE

      In this core module students will expand their programming ability and computational thinking by learning Python, which is one of the world’s most popular programming languages. Due to its clean syntax Python is a great starting point for moving from block languages, such as Scratch, into the more powerful world of textual programming languages.

      • ... APPLIED
        Front-End Web Development APPLIED

        Students will learn how to design and build websites using the core technologies powering the world wide web, starting with HTML to structure content, then CSS to style the content and finally employing JavaScript to add behaviour to websites.

      • ... APPLIED
        Back-End Web Development APPLIED

        Students will learn how to design and build dynamic websites that are generated on demand by ever changing content stored in a database, such as an online shop or a blog. This dynamic behaviour will be realized through the Python-based web framework Django.

  • University Level Theoretical and Practical Courses (Ages: 16+)

Winter Programming Camps 2020


Unity (Ages 10+)

Unity is cool, and you want to learn it because:

  • It's a powerful, professional tool that is used to make many apps being sold today.
  • It allows you to put your games/apps on PCs, mobile devices, the web, and game consoles.
  • It's a great way to learn about 3D design and programming, without all the technical knowledge needed to use a 3D modeling program like Maya or 3DMax.
  • It's got a great community, with an asset store where you can get free art/programming assets for your game.

At the end of this camp, you will have learned how to:

  • Start a Unity project.
  • Make a themed 3D obstacle course with music, sound effects, animated obstacles, and particle effects.
  • Give your players ways to lose and ways to win your games.
  • Find 3D models, sounds, and other resources on the web for your game.
  • Get feedback from the teacher and your classmates, so you can improve your 3D level design.
  • Export your project for the web or a desktop computer, so you and your friends can play it at home.

In the camp, we will do the following:

  • Build our names out of 3D blocks, and blow them up!
  • Make a scary haunted house with lights.
  • Build a crazy zoo, with animals that make sounds.
  • Make a dangerous 3D obstacle course.
  • Choose one project to work on and polish!

Register for the camp!

Little Coder (ages 6-9)

Exciting, educational and fun activities in the camp:

  • We use state-of-the-art educational tools including Dash and Dot robots, ScratchJr and Bloxels that are fun to work with so students will enjoy learning essential programming concepts and gaining computational thinking skills.
  • We use creative projects designed to reinforce particular concepts - students are not just copying from a teacher.
  • Unplugged activities are used to introduce new concepts, thus breaking up computer time and forcing students to think about how a programming idea relates to the world outside of programming.
  • Students will discover that software which they previously thought was fixed in function, is actually modifiable if one has the right skills.

Lesson format:

  • Each lesson is dedicated to introducing a specific programming concept or mathematical idea through fun and creative activities.
  • Each lesson consists of small sessions in which students gain familiarity with a concept, followed by a creative project where students demonstrate their competencies and apply computational thinking to solve problems.
  • The course concludes with a longer individual creative project with a focus structuring programming ideas through planning.

Register for the camp!

Summer Programming Camps 2019


Contact Us


Please contact us to:

  • book a private consultation
  • arrange to join a free demo lesson
  • find out more information

(06) 268-9969
155 Chongshan Road, Tainan City

East Dist., Tainan City 701
Yongkang Dist., Tainan City 710
Lingya Dist., Kaohsiung City 802
peanuts.edu@gmail.com