Welcome to the August edition of Tech on Campus, a monthly newsletter that shines the spotlight on recent projects and experiments being done by students of BITS Pilani.

Each entry presents a short summary of an interesting project that is informative, thought-provoking or one that is looking for contributors. Some entries have linked blog posts that talk about them in greater detail for others their GitHub repos or websites are linked. You are encouraged to contact the authors directly or use your GitHub account to comment below.


Roboneet/Snake

Battle Snake is an online, competitive variant of the popular Snakes game. The rules are simple, a snake eats eggs to grow in size (and points) and dies if it bites itself. Battle Snake has a twist, you don't control the snake, you write an algorithm that controls the snake. The game is easy to learn, difficult to master.

Grenade algorithm snakes at work
Roboneet's Grenade algorithm snakes at work

This is a perfect information, turn-based strategy game. It's similar to games like Chess, Go, Tic-tac-toe or other online, competitive games like Battlecode. The general approach to playing such games is using solutions space search algorithms, for example the Minimax algorithm. That's the simple part.

It becomes difficult because Battle Snake allows a very small amount of time between turns. This means the algorithm can only discover a limited portion of the solution space. It needs to rely on clever heuristics to decide which portion of the solution space to explore.

And without a doubt, Roboneet has mastered the game. Her snake was Ranked No. 1 globally in the Battle Snake Summer League (pause.. let that sink in). Have a look at a winning game below.

Inspector Clouseau winning the game
Inspector Clouseau winning the game

She has implemented 5 strategies ranging from simple to complex. More importantly, she has created a complete test bed for developing and testing snakes locally. It makes switching strategies as easy as changing one line.

As an aside, Julia is an almost perfect language of choice for this problem. It has a sufficiently functional interface to be elegant and also provides mutability to allow the blazing fast performance needed for Battle Snake (and scientific computing in general). If this project gets you started on your Julia journey, all the better.

Keep your eye out for more detailed blog posts on this.

Roboneet/Snake
GOFAI snakes. Contribute to Roboneet/Snake development by creating an account on GitHub.
GitHub repo

Playing Quantum with QLogic

Quantum computing is becoming increasingly approachable through various toolkits and programming libraries. The innovative Paltan Games team have taken this further and made a puzzle game based on the fundamentals of quantum computing. They aim to introduce people to quantum in a unique and fun way.

The goal of the game is to go from a certain quantum state, determined by the value of qubits (quantum bits), to a different quantum state, while trying to minimize the number of qops (quantum operations) applied. The game itself is layered in stages as it introduces new qops one by one while also increasing in complexity exponentially.

The not equivalent qop
The not equivalent qop

The complexity arises because qubits, unlike regular bits, can exist in some super position of both 0 and 1 value. Moreover when there are multiple qubits the qops operate on the whole entangled mess at once. The development was challenging, in one of the team member's own words:

One of the toughest parts was to write logic for different gates in a way that it works for any number of qubits and any entangled state that the user obtains.

Read all about the team's design process, quantum journey and how they implemented the logic for working on entangled states in their blog post.

An interesting point to note is the general nature of puzzle games. The basic goal of moving from a starting state to an ending state, where individual operations determine the change in state. Sometimes, for added complexity, the scoring system considers the path taken (the order of operations) as well. The trick to a puzzle game is to map the states and operations onto familiar concepts and when done well we get games like QLogic.

QLogic - Apps on Google Play
Want to enter the world of quantum computing without making things too complicated? Solve these exciting puzzles to get to know about this new field, and development of algorithms in quantum computing. QLogic offers a series of puzzles with quantum-bits, the building blocks of quantum computers. Us…
Playstore app

Optical-Flow-GANs

This project aims to detect when a human falls in a video using Generative Adversarial Networks (GANs) trained on the Optical Flows between adjacent frames.

GANs are a technique where the computer trains against itself. The generator function creates data and tries to fool the discriminator which tries to classify data as fake or real. The feedback loop between these two components keeps making them better at their respective jobs. The architecture for this project is covered in greater detail in the README.

optical flow of the tennis player that highlights her movement
Optical flow of the tennis player that highlights her movement

According to the authors there are a few shortcomings, where the discriminator fails to distinguish the fall frames from the non-fall frames accurately because of high dimensionality of data and the architecture's inability to capture the distribution of the sequential information of the frames. They intend to make the following two improvements.

  1. Use convulutions to reduce the dimensionality of the data and then feed them to LSTM/Transformer in generator as well as discriminator.
  2. Capture sequential information in the frames. Use the generator as a Reinforcement Learning (RL) agent which would predict the optimal next state from the previous few states whereas the discriminator returns the reward for the sequence of states by estimating the action value function.

This is an open project and interested readers should contact the authors - Alex Mathai and Vidit Jain.

Alex-Mathai-98/Optical-Flow-GANs
Optical Flow Prediction using GANs. Contribute to Alex-Mathai-98/Optical-Flow-GANs development by creating an account on GitHub.
GitHub repo

The Time Table Generator (TTG)

The age old necessity of a good timetable helper/creator/generator finally gets solved when BITS is moving to fully virtual semester. I pity those who came and went before this.

If you do not know of the BITS registration day, it is a full day affair with preparations starting a 2, 3 days or even a week back. On this day, a randomly assigned PR number or a randomly fluctuating network connection can decide your fate for the rest of your semester. Between the DTC forms and the AUGSD visits, it's a cheerful time.

An filled timetable from the TTG
An filled timetable from the TTG

There have been a number of attempts to make an effective solution. But they have often failed to make a difference at mass scale. The TTG has succeeded in gaining mass adoption across the 3 campuses. Read about the how the creators designed and implemented the wildly successful TTG in their blog post or visit the website.

Editor notes: Through sheer dumb luck I've avoided getting a DTC. But the TTG has my money with the "want a leisure day" feature.


BITSandPSes

The name is a pun on bits and pieces which is an accurate representation of what a badly alloted PS will do to your general well being. The project tries to help the user in making an informed decision about their PS station and electives. Check out the website to see what it's about.

Promotional image

Again this is a problem many have tried to solve since time memorial. From excel macros and wordpress blogs to web scrapers and chrome extensions, mass adoption has been elusive. BITSandPSes is among the first solutions that has a dedicated website for tackling the PS problem. With the PS Division pushing for increased feedback and transparency, it might just succeed.

The project is in its nascent stage, under heavy development and looking for contributors. If you're looking to participate checkout the issues section or contact pratham1002 who is one of the maintainers.

BITSandPSes/website
Contribute to BITSandPSes/website development by creating an account on GitHub.
GitHub repo

If you've reached here, you probably enjoy discussing computers, tinkering with technology and building cool stuff. Most likely you're just bored of online classes, you can join us at BITS Silica, a fun Slack workspace that will surely appeal to you. (Note: you need a valid BITS email id to join).

The contents of this post have been curated by humans and humans are  fallible. If you find any errata or interesting projects we have missed out, please leave a comment below