In April, my fellow Harvard Kennedy School alum Kinga Tshering wrote an article on his blog describing the potential of teaching the computer programming language Python to Bhutanese students. His post spawned a lively debate on the merits of Python versus other programming languages, and the value of teaching students programming languages.  

Computer programming is not about learning complicated code: at its core, it is about information and communication. A programmer must convey instructions to a computer and ensure that these instructions are understood correctly. Therefore, computer science is an intellectual art that requires logic, mathematics, communication, and empathy. Students possessing all of these skills are highly desired by technology firms, financial institutions, academia, and businesses around the world.

Luckily, learning computer science is easier than ever, thanks to Python. Python is a programming language that emerged in 1990, and is heavily based on the older programming language C. But Python is considerably “higher level” than C, which means that the computer automatically handles many tasks for a Python programmer that a C programmer must consider manually.

Consider two cars: one with automatic transmission (Python) and another with manual transmission (C). While all cars are concerned with braking, acceleration, and gear shifting, the automatic transmission car handles many of these tasks automatically, without the driver even being aware of them. Similarly, Python automatically handles details such as pointers and computer memory utilization that a C programmer would have to handle manually.

There are advantages and disadvantages to this. On one hand, the barriers to learning Python are extremely low. A Python student will quickly be able to apply their skills and see tangible results from their education. But this student will have less control over some of the details that may be required for more advanced programming. To bring back our analogy, a manual transmission car could be helpful when driving in particularly challenging terrain, such as in Bhutan’s mountainous countryside. 

While students seeking to work at Google or Facebook may therefore want to learn C – or at least be familiar with it – Python is almost certainly the best for most applications. Aside from being a “high level” language (as previously discussed), Python has several advantages.

First, Python code emphasises beauty and readability. This means that an amateur programmer can generally read a short Python program and understand what it is meant to do. It also means fewer errors being caused by misplaced {curly brackets} and semicolons, as in some other languages.

Second, Python is like “lego”. This means that many different “bricks” exist on the internet to be used by others. For data science, a Python programmer can quickly import the free online packages “Numpy” and “Pandas” to run complicated analysis, instead of building these capabilities from scratch. For web programming, “Flask” and “Django” are packages that quickly help Python programmers build functional websites. These are all free and open source packages that other programmers have written and deployed for the benefit of the community. There is no comparison for the depth of packages and accompanying documentation that Python supports.

Third, there are countless free online courses that help Python students get started. Dasho Kinga previously citedCS50, which is Harvard University’s largest course, offered free online through the portal at edx.com. Other online courses exist on udemy.com, coursera.com, udacity.com, codeacademy.com, datacamp.com, and other portals. Finding a programming course is not difficult – but there are so many to choose from, that selecting one is.

The surfeit of Python courses is reflective of something else: its versatility. Python is used across the spectrum of computer science, from data science to web programming and everything in between. Therefore, it has become an industry standard for several different applications. 

For students interested in data science, the School of Information at the University of California, Berkeley lists a few of its preferred introductory Python courses. Udacity offers a Data Science nanodegree that is generally highly regarded. More mathematically-inclined students can enroll in Stanford University’s Machine Learning course, offered on Coursera.

For anyone interested in web programming or a more holistic understanding of computer programming, I would recommend Harvard’s CS50, offered for free on EdX. CS50 forces its students to begin coding with C so that they understand pointers and memory use before transitioning to Python and web design. Therefore, it is a challenging course that is not for the faint of heart. But it is likely the “gold standard” of well-rounded introductory programming courses, and is taught at high schools and universities around the world to thousands of students every year. Python is only a small (though significant) part of CS50: both because it uses C to lay a foundation of computer programming principles, and because web programming requires knowing parts of many different languages (such as HTML and Javascript). Bhutanese schools that are serious about teaching computer science should consider implementing CS50 into their curricula.

Not every Bhutanese student will be a computer scientist. But as computers continue their inexorable dominance of personal and professional life, learning how to communicate and work with them becomes increasingly important. Computer science simply must be a part of any well-rounded student’s education. If Bhutan is to truly realise its potential of being “Silicon Shangri-La”, it must seriously incorporate computer science into its educational framework. With so many free courses available, including by reputed schools like Harvard University, there is no excuse to wait.

Contributed by   Sasha Ramani 

The author graduated with a Master’s degree in Public Policy from the Harvard Kennedy School in 2018, where he studied technology and innovation policy. He has been programming since age eight, and is a proud CS50 alum. Sasha was part of the 30-member delegation of Harvard students who visited Bhutan in March, and sees potential in Bhutan as a future hub for IT and innovation.

 

Advertisement