LinkLog – AI in Education

Links – May 16, 2020

Yesterday I tweeted about “learning to learn” and mentioned that AI would help us learn better. One of my students asked me to share some useful links. Here are a few starting points. I am going to use Education as a proxy for Learning even though they are not exactly the same.

Discovered an International Journal of Artificial Intelligence in Education. Lots of useful resources and they have conferences.

A search for “Artificial Intelligence in Education” got me a bunch of tweets. Here is a link. This is snapshot as of 16th May. If you are interested in these tweet streams, let me know. Will maintain a separate page for these tweets.

The Twitter account of IAIED Society (@IAIEDsociety), if you are interested in tracking AI in Education.

I like it when one of my students (current or past) asks me questions. It helps me learn too. Thanks, Hemamalini. This is the first post to answer a small part of your question. There will be more!

Letters to a Young Programmer – Start Small

If you are just starting out programming, you may want to learn a language, and start exploring by building small applications.

Don’t worry that you don’t know object-oriented analysis/modeling and design. You can learn them when you need them. This is true of algorithms, data structures, object-orientation, software engineering as well.

You can build simple apps with procedural programming and learn to reuse first using functions. As your apps grow in complexity, you appreciate the need for organizing these functions as classes/methods. (You may not even get there if you start out with a functional programming language).

As you deploy your apps and fix bugs, you will come to appreciate testing. If you need to update your app frequently, you will understand the need for automated testing.

As your apps get used more and more, you will understand the need for improving the app. You will learn the need to simplify the code (helping you fix problems faster), and the need for profiling to identify slow performing subsystems.

Learning to build computer application by step-wise refinement is a path to learning and improving. If you need to rework the code, you will learn to re-factor. Automated tests will improve your confidence in refactoring without breaking existing functionality.

Programming is a creative endeavor. It is enjoyable, because you are solving problems big and small. Puzzling over the parts that do not work, trying out things, learning from others, is all part of the experience.

Programming is a journey of self-discovery. The little bits of happiness during the journey add up.