ThoughtWorks
  • 联系我们
  • Español
  • Português
  • Deutsch
  • English
概况
  • 工匠精神和科技思维

    采用现代的软件开发方法,更快地交付价值

    智能驱动的决策机制

    利用数据资产解锁新价值来源

  • 低摩擦的运营模式

    提升组织的变革响应力

    企业级平台战略

    创建与经营战略发展同步的灵活的技术平台

  • 客户洞察和数字化产品能力

    快速设计、交付及演进优质产品和卓越体验

    合作伙伴

    利用我们可靠的合作商网络来扩大我们为客户提供的成果

概况
  • 汽车企业
  • 清洁技术,能源与公用事业
  • 金融和保险企业
  • 医疗企业
  • 媒体和出版业
  • 非盈利性组织
  • 公共服务机构
  • 零售业和电商
  • 旅游业和运输业
概况

特色

  • 技术

    深入探索企业技术与卓越工程管理

  • 商业

    及时了解数字领导者的最新业务和行业见解

  • 文化

    分享职业发展心得,以及我们对社会公正和包容性的见解

数字出版物和工具

  • 技术雷达

    对前沿技术提供意见和指引

  • 视野

    服务数字读者的出版物

  • 数字化流畅度模型

    可以将应对不确定性所需的数字能力进行优先级划分的模型

  • 解码器

    业务主管的A-Z技术指南

所有洞见

  • 文章

    助力商业的专业洞见

  • 博客

    ThoughtWorks 全球员工的洞见及观点

  • 书籍

    浏览更多我们的书籍

  • 播客

    分析商业和技术最新趋势的精彩对话

概况
  • 申请流程

    面试准备

  • 毕业生和变换职业者

    正确开启技术生涯

  • 搜索工作

    在您所在的区域寻找正在招聘的岗位

  • 保持联系

    订阅我们的月度新闻简报

概况
  • 会议与活动
  • 多元与包容
  • 新闻
  • 开源
  • 领导层
  • 社会影响力
  • Español
  • Português
  • Deutsch
  • English
ThoughtWorks菜单
  • 关闭   ✕
  • 产品及服务
  • 合作伙伴
  • 洞见
  • 加入我们
  • 关于我们
  • 联系我们
  • 返回
  • 关闭   ✕
  • 概况
  • 工匠精神和科技思维

    采用现代的软件开发方法,更快地交付价值

  • 客户洞察和数字化产品能力

    快速设计、交付及演进优质产品和卓越体验

  • 低摩擦的运营模式

    提升组织的变革响应力

  • 智能驱动的决策机制

    利用数据资产解锁新价值来源

  • 合作伙伴

    利用我们可靠的合作商网络来扩大我们为客户提供的成果

  • 企业级平台战略

    创建与经营战略发展同步的灵活的技术平台

  • 返回
  • 关闭   ✕
  • 概况
  • 汽车企业
  • 清洁技术,能源与公用事业
  • 金融和保险企业
  • 医疗企业
  • 媒体和出版业
  • 非盈利性组织
  • 公共服务机构
  • 零售业和电商
  • 旅游业和运输业
  • 返回
  • 关闭   ✕
  • 概况
  • 特色

  • 技术

    深入探索企业技术与卓越工程管理

  • 商业

    及时了解数字领导者的最新业务和行业见解

  • 文化

    分享职业发展心得,以及我们对社会公正和包容性的见解

  • 数字出版物和工具

  • 技术雷达

    对前沿技术提供意见和指引

  • 视野

    服务数字读者的出版物

  • 数字化流畅度模型

    可以将应对不确定性所需的数字能力进行优先级划分的模型

  • 解码器

    业务主管的A-Z技术指南

  • 所有洞见

  • 文章

    助力商业的专业洞见

  • 博客

    ThoughtWorks 全球员工的洞见及观点

  • 书籍

    浏览更多我们的书籍

  • 播客

    分析商业和技术最新趋势的精彩对话

  • 返回
  • 关闭   ✕
  • 概况
  • 申请流程

    面试准备

  • 毕业生和变换职业者

    正确开启技术生涯

  • 搜索工作

    在您所在的区域寻找正在招聘的岗位

  • 保持联系

    订阅我们的月度新闻简报

  • 返回
  • 关闭   ✕
  • 概况
  • 会议与活动
  • 多元与包容
  • 新闻
  • 开源
  • 领导层
  • 社会影响力
博客
选择主题
查看所有话题关闭
技术 
敏捷项目管理 云 持续交付 数据科学与工程 捍卫网络自由 演进式架构 体验设计 物联网 语言、工具与框架 遗留资产现代化 Machine Learning & Artificial Intelligence 微服务 平台 安全 软件测试 技术策略 
商业 
金融服务 全球医疗 创新 零售行业 转型 
招聘 
职业心得 多元与融合 社会改变 
博客

话题

选择主题
  • 技术
    技术
  • 技术 概观
  • 敏捷项目管理
  • 云
  • 持续交付
  • 数据科学与工程
  • 捍卫网络自由
  • 演进式架构
  • 体验设计
  • 物联网
  • 语言、工具与框架
  • 遗留资产现代化
  • Machine Learning & Artificial Intelligence
  • 微服务
  • 平台
  • 安全
  • 软件测试
  • 技术策略
  • 商业
    商业
  • 商业 概观
  • 金融服务
  • 全球医疗
  • 创新
  • 零售行业
  • 转型
  • 招聘
    招聘
  • 招聘 概观
  • 职业心得
  • 多元与融合
  • 社会改变
语言、工具与框架Pune技术

Going Beyond Technology: Lalit Pant's Journey with Scala

Deepthi Shankar Deepthi Shankar

Published: May 21, 2014

Lalit Pant is a prominent Scala contributor based out of Dehradun. He is the creator of a learning software platform called Kojo. We invited him to give the keynote at the First Annual Pune Scala Symposium where he demoed the power and  simplicity of Kojo. We take this opportunity to talk to him to find out how he is using Kojo to teach school children about programming, science, maths, and more!

Tell us a bit about yourself and what you are doing.

I'm a teacher and programmer based out of Dehradun, India. 

In an earlier life, I was a professional programmer. In that phase of my career, I built many, many systems (over the course of about 16 years) using a range of languages – C, C++, Java, Prolog, Ruby, Python, and most recently, Scala. Some of the companies I worked at during this time were – Tata Consultancy Services, an AI startup, Sterling Commerce (an AT&T and then IBM subsidiary), and Valtech.

These days, I work on developing tools for technology enhanced interactive learning. In specific terms, this means working on Kojo and the learning material around it.

What is Kojo and who is it intended for?

Kojo is a learning environment for children. Within Kojo, children Play, Create, and Learn.

They play with computer programs, shapes, colors, and math. They play with Ideas. They create drawings, animations, and games. And they learn thinking skills, computer programming, math, and more... 

Kojo is meant for 8 to 80-year-old kids!

Who uses Kojo?

Kojo is used in homes, schools, and events around the world. Some of these include:

  • Lund University, Sweden.
  • Himjyoti School, Dehradun, India. 
  • The Kalpana Center, Dehradun, India.
  • Rishi Valley School, Bangalore, India. 
  • Cardinal Forest Elementary School, Springfield (Virginia), USA. 
  • Diablo Valley College, Pleasant Hill (California), USA. 
  • Lady's Catholic High School, Preston, England. 
  • A Swedish 4th grade class consisting of 10 year old children. Kojo has been featured by DN and Computer Sweden as a result of the work done by this class. 
  • Events like Silicon Valley Code Camp, Coderdojo, Hack The Future, and Meetups. 

Also, Kojo is open source software and can be freely downloaded from http://kojo.in. Lots of people use it without telling me about it – there are ~30 downloads and ~50 online launches per day. Over the past year, it has been downloaded in over 150 countries (with the US, Sweden, and India being the top 3).

How do schools use Kojo? 

Different schools are free to use it differently, in whatever way works best for them. The general model is to have activity classes 3-5 times per week, where kids can have one hour long sessions with Kojo, with up to two kids working on a computer. These activity classes happen outside the teaching of the core curriculum, and are cross-curricular in nature, involving learning in the areas of computer programming, math, etc.

An interesting case study is the Science Center LTH at Lund University in Sweden, which uses Kojo in a very different way. The general goal of the science center is to reach out and help to increase interest in engineering education among the youth in southern Sweden. School groups visit the science center during weekdays, while it is open to the public on weekends. A project called ”Programming for Everybody” (PfE) was started at the science center in 2012, with the goal of (1) developing programming experiments for visitors – to introduce them to the joys (and importance) of programming, and  (2) doing teacher training – to enable subsequent follow-up in schools. Kojo is used for this project. Since the start of the project, more than 7,000 kids have tried out the programming experiments in Kojo. 

More than 60 teachers have passed the programming courses comprising two half-days with assignments in between. Kojo has also been used at Lund University by grad students as a prototyping tool for requirements engineering, and for controlling Arduino boards.

How did it start?

A little while after arriving back in India in 2009 (after living in the US for about 11 years), I started teaching math at Himjyoti school, Dehradun. While working with the kids there, I found that the standard approach to teaching math was dry, very abstract, removed from reality, and not much fun for kids (or teachers). Key elements were missing – real world relevance, interactivity, feedback, and the ability for each child to learn at his or her own pace. I decided to do something about this, and thus Kojo was born – as an interactive learning environment, where kids could play with concepts in the areas of programming, math, and science.

Why did you use Scala for Kojo?

Scala is a language with a low floor, a high ceiling, and wide walls. That makes it very easy for kids to get started, but they have lots of room to progress to whatever level of programming expertise they care to reach (Scala has great support for object-oriented and functional programming, and comes with a good set of data structures and algorithms). In addition, Scala runs on the Java platform, and anything written in Java can be accessed from Scala. This provides kids the opportunity to leverage a wide range of libraries in different areas for their more advanced projects.

Scala also has the virtue of being a real programming language (as opposed to a toy language for kids) with a solid theoretical foundation. Knowledge that kids gain within Kojo is directly applicable to industry and academia.

All of these were good reasons to use Scala for Kojo. But there was also an element of personal motivation. I wanted to use Scala for my own projects (for its fun, power, and depth), and I wanted a solid Scala prototyping environment for this. I made Kojo this environment – so Kojo is also a nice Scala playground for professional programmers!

Scala is a pretty sophisticated and complex language. How do kids cope with the complexity?

To begin with, the kids don’t see any complexity at all! They just get on with drawing stuff using the turtle commands. The first glimmer of complexity shows up when they have syntax errors in their code. The compiler error messages are sometimes tough to understand. But kids work around this in an ingenious manner – they ignore the text of an error message! Instead, they make use of the hyperlink in the error message to navigate to the line in their program that contains the error. Looking at that line, they are mostly able to determine what the problem is.

As programs get more complex, kids are given a conceptual framework to help them read and understand programs, and think about how programs are structured – they learn that a program is a series of instructions for the computer, where each instruction is either a command, a function, or a keyword instruction; they also learn that programs are built using primitives, composition, and abstraction. These ideas give them a useful framework to understand programs written by others and to build programs of their own. This approach has worked well with most kids.

How powerful and scalable is Kojo?

Kojo is very powerful and scalable. To get an idea of this, look at what it contains:

  • A very powerful and scalable language (Scala).
  • A very powerful and scalable runtime (the JVM).
  • Access to a huge software ecosystem (all the open-source Java projects out there).
  • Good graphics support – a Turtle graphics API inspired by LOGO and a functional Pictures API. These can be used to build drawings, animations, and games.
  • A powerful virtual lab for math (GeoGebra and Arithmetic Aerobics).

All of this is packaged in a friendly environment that supports syntax high-lighting, code completion, code templates, evaluation worksheets, interactive program manipulation (IPM), and program-tracing. 

What has been the kids reaction to Kojo, to the language? How have they adopted it?

Kids have been very enthusiastic about Kojo. They have dived in and enjoyed the act of play and creation inside Kojo. I have seen kids with very little inclination for studies spend hours (one hour per sitting) engrossed in the creation of a drawing. They make good use of features like code completion, IPM, and program tracing.

Kojo has good learning material available for beginners. This covers learning the basics of Scala programming and making interesting shapes and drawings using mathematical ideas. For kids who complete this material, there is need for more advanced material that engages them, helps them learn more powerful ideas in the areas of programming, math, and physics, and lets them make richer drawings, animations, and games.

Where is Kojo headed? 

Some of the upcoming areas of work in Kojo development and usage include:

  • More advanced learning material.
  • Support for physics and better support for gaming.
  • Support for physical computing (via Arduino and the Raspberry Pi).

How could I contribute to Kojo? 

You can contribute to Kojo in many different ways:

  • Code contributions – look at the Kojo dev board to see if there’s anything that you are interested in working on. Then head on over to the Kojo repo to start hacking.
  • Learning material contributions – look at the current ebooks and see if  you want to expand on the material there.
  • Translation into another language – you are welcome to translate Kojo into your native language (if it is not already supported in Kojo).

As you work on any of the above, be sure to share your work with us. You can use the Kojo Forum, or email me.

  • 产品及服务
  • 合作伙伴
  • 洞见
  • 加入我们
  • 关于我们
  • 联系我们

WeChat

×
QR code to ThoughtWorks China WeChat subscription account

媒体与第三方机构垂询 | 政策声明 | Modern Slavery statement ThoughtWorks| 辅助功能 | © 2021 ThoughtWorks, Inc.