Every Step Counts
"Sometimes the smallest step in the right direction ends up being the biggest step of your life."

  • Step 1. Check it out

    40 primary and secondary school students participated in our first club session on Feb 20th, marking the beginning of their journey to becoming Computer Science experts.

    Each participant was assigned a learning buddy and was mentored by a HKU Computer Science student. Collaborative learning allows students to work together towards a common goal, fostering teamwork and communication skills.

    We kickstarted our session by introducing basic Scratch programming concepts with materials designed by Google and HKU. Students dived into “starter projects”, which come with pre-written code, and used Scratch programming to tell a simple story. The purpose of teaching storytelling techniques is to train up students' ability to express a complete story in a step-by-step and systemic manner. In computer programming terms, students are required to plan a sequence of events to complete the task.

    Another highlight of the class was the introduction of the "Input-Process-Output" cycle in general hardware systems. We explained the concept by showcasing an Arduino-based robot, which students will be building projects with in the following 7 sessions. We went through the robot’s hardware components, including input sensors (light sensors, ultrasonic sensors and infra-red sensors, etc.), processing logic (Scratch programming), and output units (RGB LED lights, buzzers, motors, etc.).

    Students were on the edge of their seats by the end of the class as they were really looking forward to programming the robot 😉 .In the next class, students will finally be getting their hands on the robot and assembling a robot car. See you all again on Saturday (Feb 27th)! :-)

    - Natalie Lung, Oi Yung Ho, Yee Ling Ng and our Gurus in the programme

  • Step 2. Dialogue

    Our CS First club members and Computer Science student-mentors were in for a good challenge as they gathered back at HKU for the second club session on Feb 27th.

    We started the class by showcasing a number of student projects from the last session. Sharing is an important element in CSFirst classes as well as in Scratch programming because it encourages creativity and motivates students to work harder to have their best work presented.

    Students were then introduced to the programming concepts of Sequencing and Testing in their first task, which was to create a dialogue between two characters in Scratch. As students used different blocks to construct their story, they realized that the process of writing a program is similar to that of writing a story. It is vital that we plan the goals of a program, and reiterate the process of writing and testing as we receive feedback from sharing our work with others.

    With a second sprite in the Scratch program, students also acquired practical knowledge on object-oriented programming. By telling different objects in a program to follow different instructions, students were able to build a story such that the two sprites say their lines one after another. It was a challenging and thought-provoking exercise for everyone as questions were not allowed in the dialogue!

    Energy levels remained high as we moved on to the highlight of the day--assembling the mBot Arduino robot. Students and mentors worked in groups to bring the robot to life and revisited the Input-Process-Output process by examining the different mechanical parts.

    Our students feel a greater sense of accomplishment when collaborating with their study buddies and mentors.

    Towards the end of the class, our gurus showcased a smartphone-controlled Meca-Penguin, a modified version of mBot which waddles like a penguin.

    In the next class, students will be telling a story about a rainy day and programming the robot with Scratch. See you all again on Saturday (March 5th)! :-)

    - Natalie Lung, Oi Yung Ho, Yee Ling Ng and our Gurus in the programme

  • Step 3. Setting the Scene

    As the CSFirst programme moved into its third session on Mar 5, club members became more accustomed to the welcoming culture of CSFirst clubs and managed to establish a closer bond with their Computer Science student-mentors.


    The theme for the day was the setting of a story, and students’ task were to create a short animation about a stormy night on Scratch. The concept of looping was introduced when they had to make sure the rain sprite/object keeps falling throughout the whole story. There are a couple of blocks we can use to repeat a group of instructions in Scratch. They differ in that different flag conditions can be specified for the loop, for example, the “forever” block has no flag value, while the “repeat” block requires a value specifying the number of times to repeat the set of commands.

    The element of randomness was also incorporated in the story. Members had to make the lightning flash randomly, which closely imitates nature. In fact, randomness is often needed in real-life solutions to make the outcome unpredictable to humans, such as in an electronic game of rock-paper-scissors.

    Students revisited object-oriented programming when they gave commands to the stage for the first time to change the background from an image of a night sky to that of a lightning flash.

    The hardware session was particularly memorable for students as they finally saw the Arduino robot that they assembled come alive. They all exclaimed in awe as the mBot greeted them with three melodious beeps for the very first time.

    Using the two LED lights on the robot’s Arduino board, our gurus demonstrated the RGB colour model which is useful for design and front-end web development. Club members’ first mission with the robot was to make it emit all seven colours of the rainbow repeatedly. The advanced stage was to emit random colours repeatedly, reinforcing the concepts of randomness and looping.

    Curiosity levels peaked when gurus showcased a LED face add-on module on the mBot. With just a few simple blocks, the display was able to show a custom drawing of an emoji, and even the names of students in a horizontal scrolling motion.

    In the next class, students will be creating an original story of their own and completing a traffic light mission with the robot’s LED, buzzer, and motors. See you all again on Saturday (March 12th)! :-)

    - Natalie Lung, Oi Yung Ho, Yee Ling Ng and our Gurus in the programme

  • Step 4. Premise

    The fourth CSFirst club session, held on March 12, mainly focused on a mid-course check-point activity where students developed a complete storyline with the essential storytelling elements covered so far.

    Gurus from HKU introduced students to the standard story structure, which starts with setting the scene and premise, followed by the rising action which is usually created by dialogue between the characters in the story. Then, there will be the climax where the conflict gets in between the subjects. Finally, the resolution, where the problem presented in the premise is resolved.

    All premises can be generalised into the following four themes:

    • Character vs Character,
    • Character vs Themselves,
    • Character vs Nature, and
    • Character vs Society.

    Club members were encouraged to develop their plot on top one of the suggested story starters above.

    The concept of modularity was also introduced as students programmed add-on elements into their story, such as adding a second scene, or adding a new sprite which helps move the plot forward. Splitting a large problem into smaller manageable tasks enables division of labour to take place, and also shortens the time to test and debug different features of the program.
    Due to its highly productive nature, this strategy is employed by many software development houses with staff working from different parts of the world.

    The traffic light mission at the second part of the class was particularly challenging as students had to program and sync the actions of both the sprite in Scratch and the hardware robot. On top of that, students had to think through the logic of the LED light and buzzer on the Arduino board to mimic the traffic light in Hong Kong.

    It was a true test for collaboration and division of labour. Students surprised us as they managed to accomplish the whole mission in just half an hour, it is the best training for students to "divide-and-conquer" each modular task and tackle them systematically.

    Well done everyone! We are happy to see your progress in computational thinking and collaborative learning.
    See you all again next Saturday (March 19)! :-)

    - Natalie Lung, Oi Yung Ho, Yee Ling Ng and our Gurus in the programme

  • Step 5: Characterization

    Characters, among all things, are essential elements to a story. To boil it down to the core, we can give details about a story’s characters with dialogue, their thoughts and actions, appearance, personality and their motivations.

    In the fifth club session of HKUxGoogle CSFirst, students focused on developing a character with the help of a narrator, who helps the move the story forward. With the use of the broadcast block, the narrator was able to instruct the character sprite(s) to react accordingly.

    Gurus then moved on to introducing the programming concept of functions. In fact, students have already had prior knowledge to the process of calling of function, which is “disguised” as the broadcast block in Scratch. There was another way we could define a function--a set of instructions--in the visual programming language, and that is to define your own block. Functions help make the coding task more efficient because different programmers can reuse those instructions instead of writing everything from scratch again.

    Club members were in for a treat as gurus showcased not one, but two infrared fighting tanks, which are in fact a modified and more advanced version of the Arduino robot that they have been working on for the past few classes.

    The fighting tanks could be controlled using a game controller, and two players could play against each other by “shooting” infra-red “bullets” at the other robot. These robots had a number of modules which made the game more exciting- they include a LED strip indicating the remaining lives as well as a nine-segment display showing the number of remaining bullets of the player.

    Students also had a look at the text-based code that powered the two robots. They were able to overcome the complexity of the Arduino code with the help of gurus’ explanations using the Scratch blocks that they were familiar with. For these students, CSFirst is just the beginning of their journey to becoming proficient programmers, and our gurus are more than happy to guide them with more stimulating activities in the upcoming sessions. See you all again on Saturday (Apr 2nd)! :-)

    - Natalie Lung, Oi Yung Ho, Yee Ling Ng and our Gurus in the programme

  • Step 6: Interactive Storytelling

    The sixth session of the Google CSFirst programme at HKU was perhaps the most important one for members as gurus introduced the concept of conditionals. Decision-making underlies this programming concept which can be found in many real-life applications, such as games.

    Using if-else blocks, students created an interactive story, where the main character is faced with a decision--to go or not to go through a door. They then had to ponder two questions: Where would the door lead the sprite to? What would happen if the subject chose not to go through the door? Through writing a story with if-else conditionals, they learnt they had to test different parts, or branches, of the story with different input values to ensure the correctness of the program.

    The Scratch activity touched upon many other important concepts in programming, including variables, comparison operators --all of which were applied in latter part of the class where students wrote an obstacle avoidance program for the Arduino robot.

    Apart from programming the motors of the robot, students also wrote code for the ultrasonic sensor module, which many thought is the “eyes” positioned in the front part of the robot, but is in fact a combination of a sound wave emitter (chirp) and a sound wave receiver (echo). These two sensors work together to calculate the time interval between the sent signal and received signal-- a value that can be interpreted as the distance between the robot and the obstacles in its vicinity. Upon completing the program on mBlock, friendly battles between students’ “bumper” robots broke out on the make-shift battlegrounds at the corner of the classroom.

    And the fun didn’t just end there! Before students’ departed for the rest of their day, gurus showcased a smartphone-app-controlled ball launcher robot. The principle behind this modified robot is simple. The user can control its two motors--one to change the strength it uses to launch the ping pong ball, and the other to tilt the angle of the launcher component.
  • Step 7: Personal Narrative

    As we reach the second last lesson of the Google CS First programme at HKU, students have learnt the basics of computer programming in Scratch, and are able to use them flexibly to construct their own programs and stories.

    In the seventh club session, members told a story about themselves with the following story prompts: “My perfect day”, “My life if I were famous”, and “If I had a superpower”.

    Some students’ stories included complex if-else conditionals, which allow interaction between users and the animation. Some of them revisited the narrator concept from Week 5 and added a storytelling cat at the corner of their story to help drive the plot forward.

    In the second part of the class, students finally had the chance to implement the line-following robot program, which utilizes the line following infra-red module in the front of the mBot. Upon successful completion of the code stack in mBlock, their robots were able to follow a infinity-shaped black line on paper.

    The showcase robot of the week was a huge balance-board contraception which requires three people to operate. With the joystick module, players can control the motors which help bring the balance board in the centre up and down, and together with other players, they will work towards the goal of tilting the board so that the ball gets into the red basket.

  • Comming soon ...