Open Source projects is all good, but have you listened to open source songs? For no reason at all, here's Code Monkey, a song by Jonathan Coulton that is:
- Licensed under the Creative Commons Attribution Noncommercial 3.0 licence
- Potentially gonna relate to your present or future :3
Now that our eternal thirst for the useless is satiated, let's look at what BITSians have been doing with their time over the month. Here's a showcase of the best four of the BITSian CS/tech projects that reached us:
1-Shot Image Segmentation
Modern deep learning models (especially CNNs) have revolutionized the field of computer vision. But a significant drawback of most of 'em is that they require a large number of labelled examples to generalize. Research in the field of few-shot learning aims to alleviate this problem. This field is all about creating DL models that can generalize using very little labelled data.
This project deals with the problem of image segmentation. Image segmentation consists of classifying every individual pixel in an image. Training a segmentation model requires images with pixel level annotations which can be expensive/time-consuming to obtain in large quantities. So, a CNN architecture is designed that is capable of segmenting images given only 1 training image, aka 1-shot learning.
The network architecture is designed to be lightweight, because few-shot learning is most likely to be used in a budget-constrained environment. It has a 70% reduction in parameter count compared to the dataset benchmark while maintaining equivalent accuracy. This is accomplished by using what is known as dilated convolutions (read this), in place of downsampling operations like max-pooling or strided convolutions.
And here's the amazing part: this research has been done independently by Atmadeep Banerjee, a fourth year from BITS Pilani. Check out the research paper on arXiv. If you want to begin your journey into AI, here you go: An Undergrad's Guide to AI.
RIOT is an operating system (OS) for Internet of Things (IoT) devices. It belongs to a category of OS's known as Real-Time Operating System (RTOS), which means it has strict requirements in terms of response time. RIOT often runs on embedded devices which have low power and memory. These unique constraints and strict performance requirements force RIOT to innovate in terms of design, code structure and efficient binaries.
One such feature of RIOT is that it links the user application with the OS code and compiles it into a single binary. To change the user application, the OS needs to be recompiled, in a process also known as flashing. While this sounds tedious and complex, in reality it makes the OS much simpler. The OS does not need complex process scheduling for dynamic loading user applications.
Nishchay Agrawal is a graduate of the BITS Pilani 2016 batch. As part of his research thesis at TU Braunschweig, he contributed device drivers to the RIOT OS code base. He feels that RIOT is an excellent starting point for beginners at OS development because of its friendly and active community, excellent documentation and good developer tooling. In his own words,
The build system took my breath away. Those Makefiles we write in DSA, RIOT uses that for its modular build system only 1000x more complex and powerful!!
Git in Rust
Git is the quintessential tool in the modern developers toolkit. Rumor has it that Linus Torvalds developed its core functionality in a weekend of binge coding. While it is a powerful version control tool that every beginner struggles with, it only has a few core concepts that build on top of each other. Namely these are:
.git- The config directory where git stores meta data for objects, commits, remote repository url among other things.
- blobs - This how git stores information. They are compressed objects that with contents of files, directories and commits.
clone- The clone command which copies a remote repository to your local file system actually actually performs a number of operations. It is specially complex because of the way git packs data to reduce network traffic.
Tirth, when he's not busy with third year academics and extra-curricular sysadmin activities, hacks away on his toy git implementation in Rust. He is implementing 7 core functionalities of git, which culminates with the supremely undocumented
git clone call. Rust with its strong type checking and low level functions for bit manipulation fits the problem statement very well. Check out Tirth's implementation in his repo, it's also a good reference for Rust best practices.
Implementing Git in Rust is one of the codecrafters.io challenges. It includes tests for each stage and helpful documentation links. These challenges are about implementing complex software we regularly use like Docker, Git and others. It's a unique experience because there's no fixed solution and finding a correct implementation often involves understanding design decisions behind these software.
Checkmate is a semesterly puzzle-game event conducted by BITS-ACM. Those who have participated before are likely to remember the bustling IPC labs and the intense competition as hundreds of students go against their peers and compete for the first place. Unfortunately, because of the pandemic, the event could not be held in IPC this semester but the team at BITS-ACM has risen up to the challenge — with 14 members working a little over 6 months to build this game from scratch!
Made using Unity, Checkmate'20 takes place in a 3D maze modelled in Blender. At the start of the game, the player spawns into the maze filled with various logical mini-games, puzzles, and even an enemy AI. A player can earn points by solving the puzzles and riddles found in the maze and the goal is to have the maximum number of points by the end. While the player roams around trying to find these puzzles, a random frontend game will occasionally pop-up for the player to compete against other players or race against time to win extra points.
Some of the minigames include: Ultimate Tic-Tac-Toe, Mastermind, Chain Reaction, Mask-Room and Mirror Game. Check out the repo for more details.
Puzzle of the Month
In order to get a burger to eat at the “BuggerKing”, you need to find out how much it costs. With every guess you make, the manager will tell you whether you got it right, or if not, whether you guessed higher or lower. You are allowed a maximum of two “Higher” and two “Lower” answers. On your third you won’t be getting anything to eat. The kind manager will tell you a number N, such that the price of the burger doesn’t exceed $N. Find the largest N which he might tell for which you can assure yourself a burger. Burgers always cost some integer dollars.
Really really want the answer? It's the atomic number of Potassium. If you liked this, you'll love #puzzles on Silica, BITS Pilani's cool CS community.
Hope you enjoyed your read so far. If you want your recent project(s) featured in the next edition, we'd love to contact you; just fill out this form. Ciao.