HoP101

Summer 2023 with IISc ACM-W Student Chapter

In this series, we will explore some programming ideas with focus on Python. The audience of this series is composed of rising university sophomores, and our model project will be an agent-based disease-spread simulation. I thank Yukta Subramanian from the ACM-W Student Chapter for her help in coming up with the project idea.

Session 1: Computational Thinking and Introduction to Programming

Topics discussed

  • Steps in the problem-solving process
  • Examples in applying computational thinking
  • Homework: Think about Merge Sort
  • Homework: Solving the problem of Tower of Brahma
  • What is a programming language?
  • Notion of completeness of programming languages
  • Completeness of Python and introduction to some basic constructs
  • Introduction to the model project

Until next time: Applying computational thinking to the model problem.

Next time: We will start building the simulation!

Resources

Session Slides Session notes
Tarushri Manappurathu
Session Recording
Session 2: Follow-up and ideas regarding project

Topics discussed

  • The merge sort algorithm
  • Solving the Tower of Brahma
  • Ideas on variables, parameters, constraints and assumptions in our model
  • What we mean by solving through simulation

Until next time: Coming up with a description for the algorithm in our simulation.

Next time: We will start building the model and hopefully begin coding!

Resources

Session Slides Session Recording
Session 3: Getting started with building

Topics discussed

  • Some basic set-up for the simulation
  • Working out algorithm to find infection at an instant from the previous instant
  • How do we make code scalable with lists and loops?

Next time: Working on the recovery part of the simulation, and hopefully getting to the end and observing the results!

Resources

Session Notebook Session Recording
Session 4: More building

Topics discussed

  • Finishing up the code for infection
  • Writing code for recovery
  • Experimenting with intial conditions
  • Visualizing our results


A plot we generated during the session. The blue, orange and grey lines denote the number of susceptible, infected and recovered agents in the population respectively.

Next time: Introducing a more realistic parameter to model contact between individuals, and completing a simple model to answer some real-world questions.

Resources

Session Notebook Session notes
Sanika Borade
Session 5: Completing our simple model

Topics discussed

  • Identifiers and mutability in Python
  • Discussion on rate of recovery
  • Modelling contact
  • Alternative models for contact based on distance or grouping
  • Potential features that can be added to the model
  • Real-world questions that can be answered by our model


A plot we generated during the session. The blue, orange and grey lines denote the number of susceptible, infected and recovered agents in the population respectively.

Next time: Discussion on what modifications everybody is working on, and troubleshooting.

Resources

Session Notebook Session Recording
Session 6: Troubleshooting and Feedback

Topics discussed

  • Troubleshooting code by participants
  • Discussion on what modifications everybody is working on
  • Feedback on the series

Next time: An offline meet-up to showcase what everybody has done!

Resources

Session Recording
Bonus Material
This document below includes some of our discussions on Teams which are relevant to the course and may provide some additional insight.

Resources

Bonus Document