Aadit - Computer programming tutor -
Aadit - Computer programming tutor -

Aadit's profile, qualifications and contact details have been verified by our experts

Aadit

  • Rate RM41
  • Response 1h
  • Students

    Number of students accompanied by Aadit since their arrival at Superprof

    10

    Number of students accompanied by Aadit since their arrival at Superprof

Aadit - Computer programming tutor -
  • 5 (6 reviews)

RM41/h

See Computer programming tutors

This tutor is currently unavailable

  • Computer programming
  • Programming languages
  • JavaScript

I teach JavaScript & functional programming. Top 0.26% of Stack Overflow users. Worked at Hotstar for 3 years. Graduated with a master's degree in Computer Science from Indiana University Bloomington.

  • Computer programming
  • Programming languages
  • JavaScript

Lesson location

Super tutor

Aadit is one of our best Computer programming tutors. High-quality profile, verified qualifications, a quick response time, and great reviews from students!

About Aadit

Hello, my name is Aadit M Shah. I'm a programming mentor and an open-source developer. I teach JavaScript and functional programming.

I have a lot of experience explaining difficult programming concepts easily. For example, I have written a lot of answers on Stack Overflow, a Q&A site for programming. I've been answering questions on StackOverflow since 2011, and I'm currently in the top 0.26% of all Stack Overflow users by reputation. I mostly answer questions related to JavaScript, functional programming, and Haskell.

I graduated with a Master of Science in Computer Science degree from Indiana University Bloomington in May 2017. My specialization was programming languages, type systems, and compilers. I was also a teaching assistant at Indiana University. Hence, I have both academic knowledge and teaching experience.

Finally, I worked at Hotstar as a front-end software developer for over 3 years. During my career I worked with TypeScript, React, Next.js, and Protocol Buffers. Hence, in addition to academic and teaching experience I also have a lot of industry experience.

See more

About the lesson

  • Primary
  • Secondary
  • SPM
  • +13
  • levels :

    Primary

    Secondary

    SPM

    Form 6

    STPM

    Adult education

    Bachelor

    Masters

    Diploma

    Doctorate

    Other

    Beginner

    Intermediate

    Advanced

    Professional

    Kids

  • English

All languages in which the lesson is available :

English

Programming is a skill, and to become an expert in any skill you require three things.

1. Lots of deliberate practice.
2. Accurate and timely feedback.
3. Getting out of your comfort zone.

As a programming mentor, I will ensure that you get all the three things required to become an expert programmer. I will give you a lot of programming problems to solve, I will constantly give you feedback on whether your solutions are optimal, suboptimal, or incorrect so that you can improve yourself, and as you get better at programming I will give you more challenging problems.

Besides practice, we will also cover a lot of theory. Here is some of the coursework that we will cover.

1. Developing an intuition for programming.
    - Following the flow of a program.
    - Visualizing the state of a program.
    - Generalizing the flow of a program.
    - Abstracting the state of a program.
    - Decomposing bigger problems into smaller problems.
    - Composing smaller solutions into bigger solutions.
2. Developing an intuition for evaluation.
    - Understanding values and expressions.
    - Evaluating expressions into values.
    - Learning different kinds of evaluation strategies.
3. Developing an intuition for recursion.
    - Understanding the induction hypothesis.
    - Using structural recursion and generative recursion.
    - Proving termination of recursive functions.
4. Types and Data Structures
    - Monotypes and Polytypes
    - Product and Sum Types
    - Function Types
    - Generic Types
    - Dependent Types
5. Algebraic Structures
    - Introduction to Type Classes
    - Semigroups and Monoids
    - Functors
    - Applicative and Monoidal Functors
    - Alternatives and Parsers
    - Monads and Monad Transformers

Whether you are a student or a working professional, there's something for everybody to learn.

See more

Rates

Rate

  • RM41

Pack rates

  • 5h: RM205
  • 10h: RM411

online

  • RM41/h

Travel

  • + RM100

Learn more about Aadit

Learn more about Aadit

  • Tell us more about your subject. How did you develop an interest in this field?

    When I was a child of four years, I developed a fascination for building things with Lego bricks. I would sit for hours quietly building castles and racecars in the corner of my parent's bedroom. I was particularly good at visualizing how to construct individual components and how separate components would fit together. In a sense, I could see things that my parents, cousins, and friends could not. They would be impressed by the things I built using Lego bricks.

    Later, when my father brought a desktop computer, I would spend hours playing video games. I was again particularly good at city building and strategy games. I loved brainstorming strategies, developing a plan, and executing it. Sometimes everything would go as planned, and I would win the game. Other times things would go differently than I predicted, and I would lose the game, forcing me to re-evaluate and improve my strategy to complete the level. Gradually, I would develop an intuition for thinking and clearing every level of the game.

    In the 8th grade, I took extra-curricular classes on web development. I learned how to build static web pages using HTML and make them look beautiful using CSS. However, it was programming in JavaScript that captured my imagination. JavaScript empowered me to be both a software consumer and a software producer, both a gamer and a game developer. Suddenly, a whole new world of possibilities opened up to me. And I was good at programming because of my experience building things with Lego bricks and playing strategy games.

    In my first year of diploma college, I was already ahead of my classmates regarding programming. While my classmates struggled with programming, I was developing my first 3D sandbox game in JavaScript using WebGL. I was answering programming questions on Stack Overflow and learning about functional programming and compilers. My passion for and proficiency in programming eventually helped me enroll at Indiana University Bloomington, one of the most prestigious educational institutes in the United States of America. I graduated with a master's degree in computer science with a specialization in programming languages. During my academic career, I also worked as a teaching assistant for undergraduate students.

    After years of teaching undergraduates computer science, I firmly believe we should teach it to children in school just like we teach them mathematics and science. Not all children become mathematicians or scientists. But we still teach them these subjects so they don't grow up thinking that mathematics and science are magic, i.e., something they can't understand or control. Similarly, by teaching children computer science, we can empower them not to be afraid of technology and to understand and command technology instead of having technology control them. Besides, computer science is not really about computers. It's about computing, i.e., a way of critical thinking and problem solving, which is a helpful skill for everybody to learn.
  • What or who is the motivation behind you choosing to teach & why?

    I am a passionate and highly opinionated programmer. My passion for programming comes from my childhood experiences. However, my opinions on the best programming practices come from years of studying, teaching, and practicing software development. So, it pains me to see young adults learning to program incorrectly. Most of my undergraduate classmates hated programming as they thought they weren't smart enough to be good programmers. So they switched to MBA and got management jobs instead of programming jobs. As somebody who loves programming, this struck a chord with me. I always knew that how we teach computer science in India was wrong.

    Luckily, I had the privilege of learning computer science from both Indian and American universities. Thus, I had the opportunity to witness what Indian universities are doing wrong and what American universities are doing right. First, most Indian universities only teach imperative and object-oriented programming languages like C, C++, and Java. Hence, most Indian programmers only have experience with these programming paradigms. On the other hand, American universities are more likely to expose students to functional programming languages like Lisp, OCaml, and Haskell. Functional programming has proven to be better for managing complexity in large-scale software systems. It also broadens the minds of developers. If all you have is a hammer, everything looks like a nail.

    Second, most Indian universities don't train students to think logically. Here, I use the word “train” deliberately because logic is not something you can teach. If you want to play football, you don't go to the library and read a book on how to play football. Instead, you go to the field and practice. Similarly, if you want to learn how to think logically, you don't read a book on data structures and algorithms. You read and write many programs and push yourself to follow the program's flow and visualize the program's state. If you can't motivate yourself, then you need somebody to coach you and give you timely feedback on what you're doing right and what you're doing wrong. Most Indian universities don't coach students.

    A lack of foundational skills such as logical thinking makes students quit because they think they aren't smart enough to be good programmers. Imagine how many Dijkstra's and Knuth's we have missed because we needed to train students to think logically. As bad as that opportunity cost is, it's still not as bad as what happens when these students don't quit and go on to become professional software developers. These students enter the industry and only write imperative and object-oriented code because that's all they know. The programs that they write need to be maintained. Hence, software companies only hire developers who have experience writing such code. Thus, educational institutes only teach these paradigms. It's a vicious cycle that deprives students of learning the advancements made in other areas of computer science, such as those made in functional programming languages. Depriving students of learning these advancements also deprives academia of getting researchers working on pushing the envelope of computer science. And it denies the industry of taking advantage of the state-of-the-art in computer science to build better products. My primary motivation for teaching computer science is to break this vicious cycle that's holding India back.
  • How does your work help society?

    To quote George Bernard Shaw, Nobel laureate in literature, “Progress is impossible without change, and those who cannot change their minds cannot change anything.” We Indians are notoriously conservative and immensely proud of our history, culture, traditions, values, and religious faith. And while taking pride in one's ethnicity is essential for the unity of the community, we are often dogmatic in our beliefs. Hence, progress in India is slow. Since the older generation won't change, we must focus on the younger generation to improve society. It takes ages to make progress as a society because we need to change the ideology of an entire generation to make progress.

    Since the nation's progress depends upon the younger generation, we must teach them the right ideas and train them to think logically and question dogmas. We need to do more than teach our children subjects that will help them get a job. We must also teach them subjects like logic and philosophy, which will give them the skills to analyze and improve society. After all, we want our children to flourish, not just survive. Computer science not only helps students secure a well-paying job but also allows them to analyze the systems that govern our society and improve upon them.

    By teaching computer science, I hope to change the ideology of the younger generation. Computer science is all about developing systemic solutions to complex problems. For example, operating systems manage the resources of a computer; network systems oversee interactions between computers, etc. The skills acquired while learning computer science can be used to analyze and improve our economy, urban transit system, and other systems which shape our society. Even if students don't become programmers, learning computer science enables them to better understand and participate in the public discourse on systemic issues. Thus, computer science has the potential to advance society through both technological innovation and the creation of an intelligent citizenry. After all, only an educated democracy can drive positive change to help the nation progress.
  • If you had to think of a role model for your work, who do you think of & why?

    There are several distinguished computer science educators who have inspired me. Unfortunately, for the sake of brevity, I can't write about them all. However, my quintessential role model would have to be Professor Seymour Papert, a computer science educator, and researcher at MIT. He's considered one of the pioneers of artificial intelligence. Along with Professor Marvin Minsky, he co-authored the book on Perceptrons. However, he is most renowned for revolutionizing education by developing the learning theory of constructionism and using technology to facilitate learning.

    Professor Seymour Papert defined constructionism as “a view of learning as a reconstruction rather than a transmission of knowledge.” The tenet of constructionism is that students learn by constructing a mental model of the subject. Hence, the goal of a teacher should be to facilitate the construction of this mental model. To this end, the role of the teacher should be that of a coach rather than a lecturer. For example, constructionism advocates for problem-based learning wherein students must solve problems alone or in groups, and the teacher only assists them in understanding the problem. The students go through a discovery process as they leverage their past knowledge and experiences to solve the problem. This discovery process assists the student in constructing a mental model of the problem and its solution. Constructionism also holds that learning is most effective when students believe they are building a meaningful product.

    Besides developing the learning theory of constructionism, Professor Seymour Papert also spent a lot of time researching how to use technology to facilitate learning. In 1967, he co-invented the Logo programming language with his colleagues Wally Feurzeig and Cynthia Solomon. Logo is an educational programming language designed to make learning mathematics easy for children. Papert stated that it's easy for children to learn mathematics when living in “Mathland,” just as it's easy for children to learn French when living in France. Logo was designed to be a Mathland where children could play with mathematical concepts. The Logo turtle exemplifies this design principle. The Logo turtle is a robot that children can control by writing a program in Logo. Children can give it commands such as “move 10 centimeters forward”, “turn 90 degrees to the right”, etc. The turtle has a pen in its center, and as it moves, it draws a line on a sheet of paper. Children can control the robot to draw various shapes, such as squares, triangles, and circles. In doing so, children learn about mathematical concepts like angles and differential equations without formal instruction. Moreover, they use their body geometry to understand these concepts by imagining how they would move if they were the turtle.

    During his lifetime, Professor Seymour Papert won several awards for his contributions to education and artificial intelligence. Professor Marvin Minsky described him as “the greatest living mathematics educator” of his time. In addition to his crucial contributions to the field of education, Papert was also one of the key people behind the One Laptop per Child non-profit initiative. The initiative's goal was to transform education for children worldwide, especially in the developing world. They achieved this by manufacturing and distributing a low-cost laptop called The Children's Machine. And last but not least, his most influential work was a book titled Mindstorms, which argues for the benefits of teaching computer literacy in primary and secondary education. The Lego Mindstorms robotics kits, which can be programmed using Logo, are named after this book. It was this book that inspired me to become a computer science educator.
  • Tell us about your hobbies outside teaching.

    Besides programming and teaching computer science, I have several hobbies which I would put into three broad categories — gaming, media, and intellectual pursuits. Let's start with gaming. I love playing video games, board games, card games, and sports. In my childhood, I played many video games, including car-racing games, city-building games, strategy games, and role-playing games. I still play OldSchool RuneScape, one of the most popular MMORPGs, i.e., massively multiplayer online role-playing games. I enjoy playing board games like chess and Othello. I'm an avid chess player with an Elo rating of approximately 1800. Hence, I'm better than most players who don't play chess professionally. I also like playing card games like Texas hold 'em poker and rummy in social settings. Finally, I love football. I play football thrice weekly with local friends and enjoy watching professional football matches.

    I watch football matches with my wife, who loves watching football more than I do. We enjoy watching movies, TV shows, anime, and YouTube videos together. I'm a Star Wars fan, and I got her to see both the original and the prequel trilogy. She loves science fiction movies like Avatar, Interstellar, Inception, Tenet, and Dune. We both like movies with good stories like The Shawshank Redemption, The Boy in the Striped Pyjamas, The Godfather, and Schindler's List. Speaking of good stories, we enjoy watching TV shows like Breaking Bad, Narcos, Cobra Kai, and Wednesday. We are also anime fans, and we enjoy watching anime shows like Initial D, Demon Slayer, and Inuyasha. We also like watching anime movies like Grave of the Fireflies and Your Name. Finally, I'm trying to get her to watch my favorite cartoon, Avatar: The Last Airbender.

    In addition to watching movies and shows with my wife, I watch educational content creators on YouTube. I follow science educators like Kurzgesagt, socialist content creators like Professor Richard Wolff and Second Thought, and urbanist content creators like Not Just Bikes and City Beautiful. I enjoy watching intellectually stimulating content. I also love reading books. I'm reading The God Delusion by Richard Dawkins and Sapiens by Yuval Noah Harari. My favorite non-fiction books include Mindstorms by Seymour Papert and Gödel, Escher, and Bach by Douglas Hofstadter. I used to read a lot of fiction and high-fantasy novels in my childhood but not so much anymore. My favorite fiction author is J.R.R. Tolkien. I have read most of his books, including The Lord of the Rings, The Hobbit, and The Silmarillion. Finally, I am also interested in writing and want to write a book on learning functional programming.
  • Do you have an anecdote to tell us about your student or professional life?

    As an undergraduate student, I started answering questions on Stack Overflow. On this website, people can get programming assistance from experts. Initially, my answers were unexceptional, and I only got a few upvotes. However, as I learned more about programming and answered more questions, the content and the quality of my writing improved. I started getting more upvotes because I could explain complex ideas lucidly. There was no monetary incentive for me to answer questions on Stack Overflow. I responded to questions simply because I loved learning and sharing my knowledge about programming.

    I didn't know it then, but employers scout for users who write high-quality questions and answers on Stack Overflow and have many upvotes. Hence, I was surprised when the CEO of CouponDunia, Sameer Parwani, contacted me in 2013 for a summer internship opportunity. And the following year, I was again offered a summer internship opportunity by the co-founder of BrowserStack, Nakul Aggarwal. So, by the time I completed my undergraduate education, I had already had two summer internship experiences without even having to apply. I was offered these summer internships based on merit because of my passion for writing answers on Stack Overflow. The moral of the story is that if you seek excellence, success will follow.
--
--

Similar Computer programming tutors in

  • Lim

    Kuala Lumpur & online

    5 (27)
    • RM60/h
  • Reza

    Brooklyn, United States & online

    5 (124)
    • RM157/h
    • 1st lesson belanja
  • Reza

    London, United Kingdom & online

    5 (39)
    • RM184/h
    • 1st lesson belanja
  • Shivam

    Kingston upon Thames, United Kingdom & online

    4.9 (37)
    • RM79/h
    • 1st lesson belanja
  • Alessandro

    Roma, Italy & online

    5 (22)
    • RM229/h
    • 1st lesson belanja
  • ADAM

    Paris 12e, France & online

    4.9 (36)
    • RM229/h
    • 1st lesson belanja
  • Massimiliano

    Ancona, Italy & online

    5 (43)
    • RM138/h
    • 1st lesson belanja
  • Mourad

    Paris 12e, France & online

    5 (76)
    • RM206/h
    • 1st lesson belanja
  • Laurent

    Marseille 1er, France & online

    4.6 (75)
    • RM275/h
    • 1st lesson belanja
  • Robert

    London, United Kingdom & online

    5 (24)
    • RM521/h
    • 1st lesson belanja
  • Esmaeil

    New York, United States & online

    5 (83)
    • RM118/h
    • 1st lesson belanja
  • Reihane

    Guelph, Canada & online

    5 (52)
    • RM143/h
    • 1st lesson belanja
  • Michael

    New York, United States & online

    5 (36)
    • RM197/h
    • 1st lesson belanja
  • Gabriel

    New York, United States & online

    5 (100)
    • RM98/h
  • Marco

    Tortona, Italy & online

    5 (61)
    • RM138/h
  • David

    Toronto, Canada & online

    5 (39)
    • RM258/h
  • Behdad

    New York, United States & online

    4.9 (33)
    • RM98/h
    • 1st lesson belanja
  • João

    London, United Kingdom & online

    5 (50)
    • RM158/h
  • Andrea, PhD, CQF

    London, United Kingdom & online

    5 (50)
    • RM526/h
  • Dr Kritaphat

    London, United Kingdom & online

    5 (50)
    • RM363/h
    • 1st lesson belanja
  • See Computer programming tutors