A Few Things We Learned from Doing a Workshop at #PyDelhiConf

Here are a few lessons I learned, doing a workshop at #PyDelhiConf
  1. Chatbots are interesting to people (we had good attendance)
  2. Jump into the code after showing a couple of overview diagrams (I talked too much)
  3. Send the code and tools to the participants a few days earlier
  4. Make it interactive (one of the organizers came by and told me during our session)
  5. Just because you are going to a Python conference, don’t assume that everyone knows Python. Lots of students and beginners were in attendance.
  6. Do code walkthroughs – very clear and very concise
  7. Don’t underestimate the time needed to do a good workshop. Use time wisely.
  8. Take the help of the community during the workshop, a couple of kindred spirits helped others.
  9. Always go with a few copies of all the software needed in pen drives.
  10. Ask yourself one question and let it guide the flow – what nanoskill will a participant get from their investment of time in your workshop

A Good Teacher …

A good teacher worries about a lot of things, IMO. Here are a few, I can think of:

  1. Do I understand the subject really well to teach? Do I have both the conceptual and the detailed understanding of the topic?
  2. How can I keep the students engaged, curious and continuously learning during my session?
  3. How can I make my students understand enough to ask a lot of questions? What do I do if I don’t know the answer to some of them?
  4. What pace should I cover the subject?
  5. How do I handle a mix of knowledge levels of students?

Once you start teaching, you will figure out the answers to most of these questions. You will also learn how to be a good guide.  Be comfortable with who you are. Prepare, prepare, prepare and prepare some more. If you don’t know something, say so and find the answer and get back to the students.

The toughest part of teaching is to keep the students fully engaged and curious and maybe even a bit entertained.  The greatest joy of teaching is that you will always learn something new and the ‘aha’ moments you create for the students will make you forget everything else.

Meta:

I wrote this for a young friend who is just starting to teach to professionals.

Can You Give Me a Bigger Problem?

I was conducting a Python workshop at KCG College a few years ago.  I was teaching them basics  – variables, strings, control statements, etc. for about half an hour. Then, I gave them a few minutes to try out some examples and started walking around to see how they were doing.

I saw Swathi (one of the students) sitting with a bored look. I walked up to her and asked, how she was doing.

“Sir, I finished all the problems you gave me. Can you give me a Bigger Problem?”.

I was pleasantly surprised. I said, “Do you know Newton-Raphson Method” for finding the square root of a number? She did not know. I explained briefly with an example, the principle of how the method worked. A few minutes later, she called me and showed me her program. I tested it a bit, and it worked great. In those few minutes, she got the formula from Wikipedia, coded in Python and tested it.

She used is one of the most powerful methods of learning – “Learning by Doing”.

Swathi was an unusual student. She is doing her masters now. I normally find one or two such students in each batch, and it is always a pleasure to discover them. I am always looking to work with such students.

Nano Hackathons and Build to Learn

A small group to build stuff together, learn together and learn by doing. This will replace techtalks for our weekly meets.

  1. A nanoapp is something we can build n a day. The core in a couple of hours. The goal is to learn by doing.
  2. We may find open source stuff that to build upon. It will be easy to get started. Every nanoapp we build will be open sourced with a liberal license (like BSD/MIT/Apache)
  3. We can start with a few programming languages  – Python, Lua, Clojure. We can have others too. We need a couple of champions for each language.
  4. We can build web apps, mobile apps and desktop apps to start with.
  5. If there is enough interest and a community forms around it, we can grow them in to mini apps or even commercial products.
  6. We will keep the group small – 10 to 20 regulars
  7. We would love to have students. As long as they are willing to work and learn.

If the experiment is successful, we can create nano hackathon events in schools, colleges.

How Much should You Know About Computing?

How much should you know about computing, if you are not a software developer? In his podcast titled To Code or Not to Code, Grady discusses how much a functioning member of society today should know about computing.

A couple of my favorite snippets from the podcast:

Knowledge and understanding have a funny way of expanding.

Creating to code is a gateway to thinking computationally

Thinking computationally? What does that mean? Why is that important?

Computational Thinking (CT) is a problem solving method that uses computer science techniques. The term computational thinking was first used by Seymour Papert in 1996.

Jeannette Wing, Head of the Department of Computer Science at Carnegie Mellon University (CMU) has been one of the most eloquent Computer Scientists to argue the case. Computational Thinking isthe skill of the 21st century

So what is Computational Thinking? Well it is a collection of diverse skills to do with problem solving that result from studying the nature of computation. It includes some obviously important skills that most subjects help develop, like creativity, ability to explain and team work. It also consists of some very specific problem solving skills such as the ability to think logically, algorithmically and recursively. It is also about understanding people. Computer Science is unique in the way it brings all these diverse skills together.

So back to the original question – how much should you know about computing? It depends.

  • Everyone should have a  high level understanding of what computers are capable of, how they work and where they exist (in desktops, laptops, mobile devices, tablets, cloud and even in cars, smart devices)
  • Engineers/Scientists should know how to use them as tools to improve their work. They may need to learn simple scripting language like Python
  • Students should know “computational thinking” since it will help them build problem solving skills.
  • Not every one needs to be a programmer but learning a simple language will give them a chance to appreciate thinking like a programmer. The essential skill one need to acquire is to take a complex problem, break it into simpler/manageable problems and apply existing knowledge to solve the simple problems.
  • To find patterns (some level of abstract thinking) to apply solutions from one domain to an entirely different domain.

What do you think? Do you think Computational Thinking is an essential basic skill?

 

Promoting Self Organized Learning

XPrize is offering $15 million to build tablet apps that help kids teach themselves.

The goal is to help the 250 million school-age children in the world who can’t read or write. Contestants will build apps that kids can use on their own — because many of these kids don’t have access to the “unscalable” resources of teachers and schools.

The prize all ties into a philosophy known as self-organized learning — where kids learn autonomously by figuring out technology for themselves — that’s popular with the TED crowd. And of course, the other big idea is that contests are a peculiarly effective way of motivating people.

Keller said he anticipated that the winning app would use an artificial intelligence approach to figure out what an individual kid knows and does not know.

A few thoughts:

  1. The kids (targeted by this effort) cannot read or write. So you need to starting points may be different (speech, images).
  2. Kids should use these apps on their own. This means the apps need to be engaging and evoke curiosity constantly (the game community can contribute a lot).
  3. Since there will be no teachers involved, this would encourage peer based learning (and students playing the role as teachers)
  4. You cannot make any assumptions about what they know or what language they speak.
  5. The app is supposed to use AI approach. So you need to use AI to mimic a teacher or a self learner or a combination of both.
  6. To come up with a reasonable solution, you need to understand how kids learn.  That, in itself, is a fascinating area of exploration.
  7. Kids don’t have access to “unscalable” resources (like teachers and schools). That points to tablets with long battery life, solar chargeable or something that requires hand cranked power. This is not actually the app quality but the need of the underlying platform. This also means, schools cannot the platform for distribution of apps or devices. Hopefully that will be a different challenge.

Rural India and countries in Asia and Africa will certainly benefit from the outcomes. No matter which app wins, we will get a lot of great ideas for self-organized learning. That is bound to change education as we know it.

Five Ways We Can Help Students

I keep talking to lots of students and have some ideas on how we (at educational institutions and community) can help them. Here are some thoughts.

  1. Encourage curiosity. Curious kids learn a lot more.
  2. Help them explore. Give them broad exposure and have them explore on their own. Exploration helps satisfy their curiosity.
  3. Help them become  self-learners.Teaching them how to learn is more challenging since you need to customize it for different learning styles.
  4. Encourage them to be creative. When they come up with ideas, help them work through ideas .
  5. Help them increase their confidence. I have seen lots of students very capable, but do not venture into trying out new things because they do not have the confidence.

There may be lots of ways we can help. I just picked a few.  Let me know your thoughts.

Edit 1st Aug 2014

Will start collecting articles on the “Purpose of Education” and list them here.

What Is The Purpose Of Education? http://onforb.es/1oWBAoB

 

 

Educational Technology for Schools

Technology in Education is one of my interests. With the advent of low cost tablets and ubiquitous cloud computing, the way we teach and learn is bound to change. But it is not enough to simply provide technology. We need innovative ways to harness technology.

A small team from KCG Social Causes Club tried a few experiment at a couple of public schools in Chennai. We observed a few things.

  • Kids are excited by tablets and smart phones. They seem to have an intuitive understanding of touch computing and require almost no training to discover their capabilities.
  • While there are lots of free games and content available in English, there is not much  for people in other languages. In Chennai at the middle school level students speak a mixture of Tamil and English.
  • There are huge gaps (and opportunities) in using tablets, smart phones and cloud connectivity in innovative ways to engage students. Our college students who were guiding the school kids found it a big challenge. So some of them started building apps for education.
  • We cannot simply leave the task of innovating to schools and teachers. Technology companies need to play an active role in translating teachers’ ideas into simple apps for kids.
  • Knowledge is required in areas of user centric design, app building, gamification and we need to experiment with lots of different ideas to engage students and learn how they learn.

It is nice to see NMC and CoSN Release the NMC Horizon Report  on the trends, challenges and emerging technologies for schools. Reports like these provide us a broader view and helps us understand the trends and challenges of using technology in education.

The report covers:

Six key trends, six significant challenges, and six emerging technologies are identified across three adoption horizons over the next one to five years

… identifies BYOD and cloud computing as technologies expected to enter mainstream use in the first horizon of one year or less. Games and gamification and learning analytics are seen in the second horizon of two to three years; The Internet of Things and wearable technology are seen emerging in the third horizon of four to five years.

More after I digest the report. I do need to work on an action plan for the next batch of the Social Causes team at KCG Tech.

Knowledge Required to be an Entrepreneur

My answer to the question on “What knowledge is required to be an entrepreneur or to start a new company?” Do you need to study books on management for that? on Quora:

The knowledge that you need:

  1. Some good ideas to improve or create products/services in your chosen field.
  2. The ability to build/make/serve people in a specific marketplace (solve problems people face)
  3. Some skills in doing basic research to understand the needs of your potential customers
  4. Ability to clearly articulate benefits of your product/service and interact with people and listen to their problems.
  5. To learn from interactions/research and continuously improve your product/service
  6. Understand that being a good entrepreneur is hard work and may take a while to get right.
  7. An open mind to change some of your ideas and persevere

Some of these skills can be learned. Some through books and others through experience.

If can find an active entrepreneur community and find some advisers who have done that before can benefit you immensely.

I also suggest that taking this free Udacity course on Building a Startup can get you thinking in the right direction – How To Build A Startup: The Lean Launchpad

Meta:

Even though I answered it on Quora, I was hoping that this would reach some of my audience members who are entrepreneurs and others who are thinking about entrepreneurship. I also hope that it will generate some good questions/answers and reactions or encourage you to go to Quora and participate.

If you Google Things that an entrepreneur needs to know (you will get a lots of answers). There are some that are really good. But I think the most basic one is that you need to know what entrepreneurs do and what kind of problems they face.