There exists a widespread misconception among the general population about the field of Computer Science, that it is something they won’t understand. People tend to be intimidated even by the mere utterance of words like algorithm or machine learning. But, in reality, the concepts are often very easy to grasp.
So, we came up with the idea to familiarize the young children with various concepts of Computer Science. But the details about any algorithm in such a tender age might seem intimidating. So, our goal is to provide them with basic ideas about the topics, while avoiding the details. In this way, we plan to prepare them such that they can approach the topics confidently in the future. The workshop was facilitated by the Data and Design Lab.
We conducted our first workshop in 2016, at Fulki, a school with added emphasis on extracurricular activities. Our workshop was a part of the Jamal Nazrul Islam Science Festival hosted by the school. We, seven students from the Department of Computer Science and Engineering, teamed up with four students from the Institute of Information Technology, University of Dhaka. Two years later, we conducted the same workshop again at the same school. This time, there were 13 volunteers, all from the Department of Computer Science and Engineering, University of Dhaka.
There were about 200 students present at the workshop. We divided the students into three categories – Junior, Intermediate and Beginner.
This category comprised of kids from class 1-3. Explaining the complicated theories of computer sciences in simple words to these kids would be really challenging. Besides, holding their attention to anything is very difficult unless there’s a way to make things interesting. So we tried to focus on the practical side of things with them. We started day one with the basic concept of networking, and taught them how we can relay information to carry a message from one end to another by playing a simple game. In this game, a sentence was whispered in a student’s ear and they had to pass the sentence on by whispering to the next student. After explaining how the mobile networking system works in a similar manner, we moved on to the pigeonhole principle. We tried to come up with funny examples and do some math with them. The students were very interactive in this session, asking how they can figure out different things in different imaginary scenarios using the pigeonhole principle. Later, we played a modified version of pictionary with them, where one has to draw a picture, explain it to his her partner who is facing away from them, and then from the descriptions they’ve heard, recreate their partner’s picture. The kids had a lot of fun playing this, and all of them recreated the pictures really well.
In the afternoon, we played a little game with them involving graphs and a little mathematics. In this game, the students were initially given a certain amount of money (fake) to spend. On each path they took, they had to pay different amounts of money, and on each node they could earn different amounts of money. After reaching the finishing nodes, they could buy chocolates with their remaining money. We tried to teach them on how to maximize their outcomes by minimizing path cost and maximizing node earnings. The students (and even some of their teachers!) played this game with lots of excitement, and that wrapped up day one.
On day two, we didn’t take any classes. Instead, we played another game with them. This time, the game was about sorting. We drew the nodes required for network sorting. The students started off with a designated integer number, and each time two students were in a same node, they had to decide which path to take based on who has the bigger number. If a constant direction is maintained (ex. always go right for a smaller number), the ultimate numbers each student has would be sorted. The students found this to be amusing, and each student participated with enthusiasm. We wrapped up by giving everyone chocolates.
The students who were included in this group ranged from classes 4 to 6. Through the sessions we shared with them, we wanted to introduce them to some key concepts of Computer Science in a fun, interactive way.
We started off day 1 with a simple two-player game. The rules were pretty straightforward, one player would start off proceedings by saying any number above 20. The players would then alternate turns, and at each turn, a player could say a number that was either 1 or 2 less than the number stated by the opposing player in the preceding move. The player who said0 first would be the winner. We played this game with the students, and well, as expected, we always won!
But that wasn’t really the point of the game here. The subtle message that we wanted to convey under the veil of this game was the concept of winning and losing states in game theory. We wanted to show them how any number can be seen as a state, one which can effectively determine whether the current player will eventually win or lose, no matter how well the opponent plays. We explained to the children about our trick to always winning, and they seemed to catch it up real quick. And soon after, when we played the game with them again, they really did play the game optimally.
Our second activity was to play a guessing game. We asked them to pick a number in their minds and keep it secret. Now we would guess a number, and all they had to do was tell us if the number we guessed was greater, equal or less than the number we’d guessed.
We wanted to show them the technique of binary search, that is, how choosing the middle number of a search space can help us find the number quickly, no matter how random that number might seem.
Our third and final activity of the day, was showing them how parity bits could be used for error detection. Or course, that’s not the exact terminology we used as we described it to 10 year old. Once again, we showed this indirectly using some props. We called two students forward while one of us (a “magician”) was ushered out of the classroom. One student was given many green and blue cards and was asked to take any 16 of them and arrange them in a 4*4 grid. Now, one of us would come in and introduce a new card to each row and each column in the grid, and, by selecting the color of the added cards himself, ensure that the number of blue cards in each column was odd. Then, the second student would pick out any single card in the grid (including the ones added later), and invert its color, i.e., if it was originally a blue card, he would replace it with a green and vice versa.
The “magician”, who had not even seen the initial configuration could then enter the classroom, and could easily pick out the card whose colour was inverted and restore the initial configuration. This could be done using the same concept as using odd parity bit error detection in a 2D grid for single bit errors.
Day 2 consisted of us introducing the children to scratch, an interactive, child-friendly, visual programming language to introduce them to the basic concepts of coding. Scratch is a very simple programming language, and it does not require any prerequisite knowledge of any programming language, while helping to develop logical thinking. The children seemed to have great fun making a cat meow, purr and dance through scratch, and were almost rolling with laughter when a bug in our code made the cat move upside down.
Students from classes 8 to 10 were categorized as senior. Our main idea for this category was to introduce them to various fields of Computer Science and how and where these concepts may help in real life. Then we wanted to familiarize them with basics of Computer Programming. We introduced them to Scratch, a visual programming language and online community targeted primarily at children. Just like the students from the intermediate section, they enjoyed this session, and had a lot of fun taking part in it.
Reaction among the children
One of the main challenges in arranging a workshop with the students is to hold their attention. They tend to be easily bored. So we tried to design the sessions in a way that maximizes the interaction with the children. The children were very cooperative from the very beginning. They were full of questions and never shied away from sharing their own ideas.
For our part, we enjoyed the days to the fullest. Interaction with the children was both challenging and fun. In this way, we have learned a lot too. Firstly, we have learned how the thought processes of the children work, and how to help them build logical skills. Secondly, crowd control was extremely challenging with the kids, since everyone was very eager to participate in the activities. Most importantly, these few days have inspired the growth of a deeper sense of community among us, inspiring us to do more for the society.
As the proverb goes, all work and no play makes Jack a dull boy. This was not the case with us, since the sessions were fun in themselves. Moreover we had the opportunity to explore the beautiful city of Chittagong. For many of us, it was the first time seeing the sea beach. We also went to Kaptai, and took part in Kayaking, which was both adventurous and fun.
We look forward to conducting more workshops like this one.