Algorithm – the soul of programming
Aruna Malapati and Tathagata Ray
According to a recently published article[1] in HackerRank, a free coding practice website, India stands at the 31st position among countries that were rated for being the best software developers. China clinches the top spot with Russia being the runner up. In today’s cyber world, even wars are not fought on the ground but in cyberspace. Computers have become crucial in every aspect as we are going digital every day in every way. With India having the second largest population, it seems that significant steps are required to fill the gap between India and the top most developers. If you look at these rankings, you will find that a majority of the challenges are in the area of algorithms. Algorithms are the soul of programming. It is a way of thinking that requires years of training in order to achieve some kind of mastery in it. In other words, and algorithm is a sequence of operations (also called instructions) executed to solve a problem or perform a task. When you write any algorithm for a machine or a computer, you cannot be imprecise or ambiguous in your instructions. This poses the biggest challenge to a new programmer. How can he/she provide the correct instruction in the right sequence? This requires critical thinking. This kind of critical thinking takes time to evolve. The good news is that with proper training and effort such thinking skills can be inculcated. Once a person starts thinking critically, he/she can solve practical life problems as well. For example, one can apply the techniques used to organize memory in a computer to organize their closets[2]. It takes years of practice to master this skill, one which is becoming mandatory for everybody just like basic math skills and language skills.
In our country, CBSE has already taken proactive steps in this direction. The current CBSE curriculum introduces grade XI and XII students to computer science. According to the HackerRank blog[3] it is science students who mostly opt to study computer science. Among the students opting for physics, chemistry and mathematics, a few choose to pursue computer and communication technology. However, with computing now being an integral part of most subjects it must be introduced at the primary level itself. It must be taught to all and not just to a selective group of students. Some schools have taken proactive measures to introduce young students to skills in computer science, such as getting acquainted with basic hardware components and software applications, typing skills, and logic building for problem solving using computers[4]. In fact, the syllabus[4] talks briefly about the algorithm aspects through programming for third grade students. It is a simple and effective way to introduce computer science to a third grade student.
Tools and resources
On surveying different tools and resources used for teaching algorithms and programming, we found that most of the resources that can be used for school teaching are via gaming or kits with hardware and software.
The following are some of the popularly used software based solutions[5].
Scratch: Scratch is a free open source tool that is available on the Web and has a downloadable version . This is a project designed and developed at the Massachusetts Institute of Technology (MIT) media labs. It allows students to program their own innovative storyboard with customizable characters and animations. The most interesting thing is that this tool allows its users to share their projects with other users. It has around 15 million user registered and 19 million shared projects. For students, a project could mean making an e-card for their mother or teacher. In middle school, a project could mean to work on algorithmic skills and verify if the instructions designed to achieve a task are reasoned systematically or not.
Small Basic: Small Basic is a free, beginner-friendly programming language created by Microsoft. It is a very simple language with a friendly Integrated Development Environment (IDE) and lots of built-in classes for graphics and visualizations. The book titled Learn to Program with Small Basic is an excellent resource to have. It puts the fun back into computer programming and has an easy style; the clear explanations make no assumptions, there are plenty of graphics, and the important thing is that some basic foundations of game programming are covered. The author’s idea of creating art with code is approachable, easy, and fun!
Kodu: Kodu is a new visual programming language made specifically for creating games. Its user interface is completely icon based and hence easy to get started. This programming language allows users to create their own games by developing a story, characters, etc. This language makes programming a visual and interactive activity rather than writing a code.
Alice: Alice is an innovative 3D programming environment that makes it easy to create animation for telling a story, playing an interactive game, or a video to share on the Web. Alice is a freely available teaching tool designed to be a student’s first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games. In Alice, 3-D objects (e.g., people, animals, and vehicles) populate a virtual world and students create a program to animate the objects. The best part of Alice is that it allows students to visualize the flow of the program through the behaviours of the objects in animation. This helps students understand thoroughly all the programming language constructs traditionally taught in an introductory course.
Since the program is an intangible and abstract concept, students may not find it exciting. To address this issue there are ample solutions where hardware is provided to experience the outcome of the work. The following are a few kits with hardware and software solutions listed below:
Lego Mindstorms: This kit contains all the parts required to assemble and make a robot or any programmable devices. As per the company’s toolkit, it comes with building instructions for four main models ranging in building complexity, going from the Quick Start model that you can assemble and program in 30 minutes to the ultimate Humanoid. Six building and programming challenges are included in the software CD, which is complete with step-by-step building instructions and programming guide for all models.
Arduino Kits: This is a kit where you get all the other interfaces that can be used as plug and play devices. It is also worthwhile to subscribe for the MAKE magazine as they do a lot with Arduino kits and also have other inspiring projects.
Raspberry Pi: Raspberry Pi is a computer you build yourself by plugging in a set of USB peripherals and installing a software called Linux distribution (which includes Raspian and Pidora). It’s a completely assembled PC, extraordinary for children to explore different avenues regarding equipment and programming.
SAM Labs Kit: A UK based company has assembled kits with a bunch of tiny wireless blocks: a button, an LED, a motor, etc. The user needs to drag and drop the blocks on to a workspace and connect the blocks to work on the task. Javascript code can be added to extend its capability.
The tools described above will require computing resources and other investments from the school. In India not every school can afford to do that. Therefore, let us look at other ways to teach algorithms and programming to young students using pen and paper. The curriculum can be designed to inculcate algorithmic thinking from early childhood. For example, Code.org[6] gives a descriptive methodology and technique to teach computer science to school students. Some of these techniques such as graph paper programming are innovative ways of introducing students to algorithm and programming.
Apart from introducing algorithm and programming skills to school students as a subject they must be made aware of competitions conducted for young programmers annually and inspired to participate in them. Many students haven’t heard of the Indian Computing Olympiad (ICO) which is a national competition conducted annually by the Indian Association for Research in Computing Science (IARCS). The goal of the competition is to identify school students with outstanding skills in algorithms and computer programming.
The ICO is an open competition for all school students across school boards. Students up to class 12 during the current academic year are eligible. However, there is no restriction on the lower age. The primary goal of ICO is to identify a team of four students to participate at the International Olympiad for Informatics (IOI).
The ICO is conducted in two rounds. Students qualify for the first round by entering a Zonal Informatics Olympiad (ZIO) which is a written exam held at centres across the country or alternatively, in the Zonal Computing Olympiad (ZCO), a programming contest. This is followed by the Indian National Olympiad in Informatics (INOI) which involves programming and is the second round[7].
Many students are unaware of the advantages of participating in the ICO. Some of the well-known Indian institutions offer special admission procedures for these students. IIIT Hyderabad calls these students for a direct interview (without an entrance examination) for admission into one of the Dual Degree programmes. IIIT Delhi offers bonus marks to students selected for INOI and IOITC. There are a few international academic institutions which have special admission procedures for IOI students. The Faculty of Mathematics, University of Waterloo, Canada, offers Michael and Ophelia Lazaridis Olympiad Scholarships to IOI medalists[7]. Massachusetts Institute of Technology (MIT), has a provision for accepting students who are medal winners at various Olympiads (Maths, Physics or Computer). Malvika Raj Joshi, 17, from Mumbai received an admission at MIT for being a three-time medal winner (two silver and a bronze) at the International Olympiad of Informatics or commonly known as Programming Olympiad[8].
From the perspective of the demand of good developers in today’s Information Technology industry, India being in the forefront of this industry, and for the sake of national security, it is imperative to develop these skill sets among the young. Not only that, having computer skills, and in particular programming skills, is helpful in every subject area directly or indirectly.
- https://blog.hackerrank.com/which-country-would-win-in-the-programming-olympics/
- https://www.wired.com/2016/04/computer-science-reveals-exactly-organize-closet/
- https://blog.hackerrank.com/computer-science-india-restricted-student-pool/
- http://www.it.iitb.ac.in/~sri/ssrvm/CS-3rd-Std.pdf
- http://www.teachkidstoprogram.com/
- https://code.org/educate
- http://www.iarcs.org.in/inoi/#incentives
- http://indianexpress.com/article/education/mumbai-teen-makes-it-to-mit-without-attending-high-school/
Dr. Aruna Malapati is an Assistant Professor at the Department of Computer Science & Engineering at BITS Pilani, Hyderabad Campus. She received her Masters from BITS pilani and Ph.D from NIT, Karnataka. Her research interests are Information Retrieval, Data Mining, Big Data and Machine Learning. She can be reached at arunam@hyderabad.bits-pilani.ac.in
Prof. Tathagata Ray is an Associate Professor at the Department of Computer Science & Engineering at BITS Pilani, Hyderabad Campus. He received his M.Sc from IIT Bombay and Ph.D from The Ohio State University in Computer Science. His research interests are in Algorithms, Computational Geometry and Computer Graphics. He can be reached at rayt@hyderabad.bits-pilani.ac.in.