I must admit that I have been out of touch with programming for many, many years now. However, I did do some intensive work using Visual Basic (is anyone still using this?), Visual C++, MFC, etc., to write programs that iteratively solved very complex civil engineering problems.
(Since this is a magazine for teachers, it is perhaps appropriate to mention here in a parenthesis that, at least in civil engineering and perhaps in other engineering fields, computers have been very useful in solving engineering design problems. This is primarily because engineering design follows an iterative, optimization process that took forever to do manually before computers automated the process and made it efficient. The PROBLEM is that people who grow up using computer software for engineering design lose touch with the real things that they are designing and the design process becomes a computer game for them.)
What I started to say was that I know nothing about PHP or Java or Python (Or GoogleGo, Hack, Gaskell, Clojure, Lua etc., all of which I had never heard of till two minutes ago when I got them by googling ‘latest programming languages’), but I have a story to tell that may interest you. A story that can give you ideas that you can explore with your students. So here goes…
My cousin’s son, Joy, visited me sometime last year and I asked him what he had been up to. He had finished his electronics engineering degree and had been looking for a job for a year or so when I met him. Out of the 80 children in his class only some 10 had jobs. The others, all good students like him, were privately doing one course after another in the hope of standing out in the job market. And Joy was just going to give Rs 30,000 to join yet another three-month course that would, yet again, make him more employable.
In the academic inflation that has happened since I finished my engineering degree in 1988, the number of engineers graduating every year has increased from 20,000 to 15 lakhs (and if the Internet is to be believed, 80% of them unemployable). And one of the fall-outs of this rush is that where a BTech was enough to get a decent job in 1988, you need an MTech or a PhD today. Fresh engineers routinely think of getting better qualifications because it appears like that is the only way they can get decent returns on the investment of time and money that they spent getting a BTech. Of course, this is the classic mechanism that the confidence-tricksters use to fool their victims and it is sad that so many of our bright youngsters fall for such an old trick.
Joy was very matter-of-fact about all this. When I understood what he was saying, I asked him not to be such an idiot and not to siphon any more of his parent’s money into the pockets of the employability-enhancer-racketeers. What should he do instead, he asked and that is where this story finally comes to its point. Here are the suggestions that bubbled up in two minutes as I lounged on my Kerala-model old man’s easy chair:
- Why don’t you go to a company and tell them that you want to work for them for free for three months? (Better than paying somebody to become employable.)
- Why don’t you look at all the open source projects that are happening on the Internet, find one that resonates with you and learn how to contribute to a live project? (Instead of doing endless academic work, that is akin to looking at the black and white photo of a beautiful flowering tree in a textbook in a dingy classroom while the very same tree in full bloom screams its beauty at you outside your window.)
- Why don’t you volunteer your time for the web related work on the SeasonWatch project? (An open source national tree-monitoring project that I used to manage. www.seasonwatch.in)
He decided to work with suggestion number three and I put him in touch with the person who manages the website development for SeasonWatch. I put a rider on the transaction that if he was more trouble to manage than the work that he does for the project, he would be asked to leave. When he started, all the academic learning in his BTech and other courses did not make him ready to contribute to our live project. That is the sad state of our higher educational system. But he is a bright boy and he put a lot of effort from his side to very quickly learn on the job and the lady managing him told me that he had been no trouble. In the three-four months he was with the project, he worked on some non-critical modules that we later used on our live site. His increased confidence in having done a real project let him walk in for an interview and get a job. The point of the story is that there are lots of open source projects out there and any reasonably intelligent student can use the resources available for free on the Internet to learn to contribute to the project of their choice.
Learning programming from the Internet
My educational philosophy looks something like this – Give some ideas and let the learner figure it out. Stand by with the confidence that there is nothing I cannot figure out for the student if they need my help but doing the necessary work towards that only if they come and ask me. I have found this very effective with my three children. (And also with one other child whom I accidentally ‘taught’ chemistry – http://arunelassery.blogspot.in/2012/02/perspectives-on-teaching-learning-and.html).
I could ask you, the reader, to do the same – go figure it out for yourself. But I have only reached 1000 of the 2000 word article that I promised to submit, so am forced to do some research and go into the details of how one can learn to program and create live applications from the Internet. Now, I have no idea how Joy got up to speed on SeasonWatch and I have no idea about the latest tools and technologies that a learner can experiment with. But I know many, many technology people and I spoke to a tech-guru I know well, to ask questions about how things are today. I asked him if my son who will finish his 12th exam this year wanted to do programming on the side, where he could start. And because the science and maths that he is wading through is really complex, I thought that would be enough analytical thinking for most programming jobs. My tech guru friend agreed emphatically.
Here is what he suggested.
App development for the iPhone and iPad
If a student has access to a Mac machine (macOS 10.11.5 or later), he can develop iOS applications. (You can develop Android apps on a Mac but cannot develop iOS applications on a Windows or Linux machine). The development tools and the tutorials that give you a step-by-step guidance in developing the applications are available for free. The Apple developer site in its introduction says:
Start Developing iOS Apps (Swift) is the perfect starting point for learning to create apps that run on iPhone and iPad. View this set of incremental lessons as a guided introduction to building your first app – including the tools, major concepts, and best practices that will ease your path.
Each lesson contains a tutorial and the conceptual information you need to complete it. The lessons build on each other, walking you through a step-by-step process of creating a simple, real-world iOS app.
As you make your way through the lessons and build the app, you’ll learn about concepts in iOS app development, gain a deeper understanding of the Swift programming language, and familiarize yourself with the many valuable features of Xcode, Apple’s integrated development environment (IDE).
If you are not familiar with the Swift programming language that is used to create the applications, why, the tutorials to learn this from scratch are also available at the developer site. The application development environment, Xcode, is available as a free download from the App store. So, to start developing iOS apps you need a Mac with Xcode installed on it and an Internet connection.
App development for Android devices
Everybody doesn’t have a Mac, but everybody does have access to a Windows or Linux/Ubuntu laptop/desktop. Similar to the iOS applications, the Android application development environment and the tutorials to help you learn how to go about developing Android applications are also available for free. And these can be done on any computer.
My tech friend recommended the Android video tutorials on Udacity as a first step to begin creating Android apps. Udacity is an online university and its mission statement nobly says – ‘Education is no longer a one-time event but a lifelong experience. Education should be less passive listening (no long lectures) and more active doing. Education should empower students to succeed not just in school but in life’. Their Android tutorial, in its introduction, states that a person with NO background in programming can learn to write Android apps using their tutorial:
In this course, you’ll learn how to use Android Studio, the tool that professional developers use to create apps. Be sure that your computer meets the system requirements for Android Studio. The course will take about 3-5 hours of dedicated work, but it can widely vary per student, so take your time to learn the concepts.
One last note about pre-requisites. If you have no prior programming experience, then this course is for you. We’ll assume that you already have basic computer skills and know how to use a phone.
After going through some basic tutorials and writing some basic code to create a simple application, you are ready to work on your first live project. The first step is to go to the Android developer site and download and install the Android Studio on your computer. You are now all set to start application development.
The common programming language used in Android app development is Java and it is possible that you do not know Java or you have been programming in some other language. No problem! There are many sites that teach you how to write code. For free! https://www.codecademy.com/ is a good resource for learning to program.
(Younger children may be taught the basics using http://scratch.mit.edu, which is a very nice, easy, interactive tool to learn programming basics)
Web application development
Web applications have been around for a long time before the smart phones appeared. So, there are a bewildering number of choices available on creating them. Without getting into the details, it would be appropriate to talk about the client-server model of application development here. The model can be depicted as below.
Our interactions through a browser like Internet Explorer or Mozilla Firefox happens on what is called the client side. Through the Internet, the client side interacts with the server side where the data and the logic of the application that we are using resides. This architecture of creating loosely bound applications allows a wide variety of tools and technologies to work together to optimize performance of the application and user experience.
I will highlight only one set of tools that is popular for web application development and you can do the research to find out more about this and other sets of tools that people use. The combination of software products and programming languages that are used to create a web application are called a technology stack. The popular stack that I will highlight is called the LAMP Stack.
LAMP is an acronym that consists of four open-source components:
1. Linux operating system
2. Apache HTTP Server
3. MySQL relational database management system
4. Perl, Python or PHP programming language
This combination allows a developer to create a full application with a client-server architecture. I know that this article is getting into more and more technicalities, so it is probably time to stop now. But I hope that you got the sense of how everything that needs to be learned and implemented on your computer to get the senior students in your school to start serious programming is all available easily and for free. If some of your students take up the challenge and become good at programming, this article with its vague directions would have served its purpose.
Disclaimer and Recommendation
What I have done through the information listed above is to inspire one impressionable young man I know to find out and learn more on his own and then connected him to an open source project that I had access to. It seems to have worked for him. I suggest that you as a teacher try out some of the free things available, the free learning material and the free development tools to create a real world application. See how that goes for you. That may be the initial step required before starting work with your students to make them self-learning, self-directed computer programmers who can then go out and create the next Facebook application.
The author is a 51 year-old failed engineer who is thankful that this failure means less ugly bridges and marginally fewer murdered rivers across India. He can be reached at firstname.lastname@example.org.