Ian Krishanu Hajra

This page contains a list and basic desicription of some of the more noteworthy coding projects I have completed for school. A description of who I am can be found on my homepage. If you would like to see any of the code for these projects, please contact me and I will work with my course instructors on appropriate permissions. I am always looking to collaborate on new projects - please reach out!

School Projects

CSCI 1515

Applied Cryptography

  • DASSH: A Disguised Approach to Secure Shell

    The full report on DASSH can be found here!

  • Private Information Retrieval (PIR):

    This assignment created a PIR system that used the Microsoft SEAL Library to implement somewhat homomorphic encryption, a form of post-quantum cryptography. For more information about the specifics, please contact me!

  • Auth:

    The Auth project created a secure login system that employed usage of a two-factor-authentication scheme. For more information about the specifics, please contact me!

CSCI 0330

Introduction to Computer systems

  • Database:

    This project was a thread-safe database hosted on a server that different clients will connect to. Each client is given its own pthread and the database is accessed and modified via fine-grained locking. The server implements basic signal handling and will cleanly open and close client connections.

  • Malloc:

    I recreated the functionality of C library functions malloc, realloc, and free. This was done by creating a doubly-linked list of free blocks and allocating them appropriately. Memory usage was optimized via coalescing blocks on the free list and by only allocating additional memory when required.

  • Shell:

    Shell was a project that used C to create a basic shell. This shell had several builtin functions (including cd, rm, and exit) and would run all other commands via execv within a child process. It also handled basic file redirection. Additionally, it allowed for execution of foreground and background processes, which were tracked by a job list that could be accessed by the user. Basic signal handling was also implemented.

CSCI 0200

Program Design with Data Structures and Algorithms

  • Search:

    Search was a project that allowed a user to search through wiki pages and recieve relevant results. This program indexes the wiki pages and then when queried uses a pagerank algorithm to produce relevant results.

  • Travel Planner:

    This was a partner project completed with Ethan Cooperman. Our work used implementations of DFS and Dijkstra's algorithm to find the optimal pathing between different nodes in a graph. This implementation would work on any graph of nodes that were created via inputted csv files of locations and travel options between them. It supported finding the quickest, cheapest, and fastest path between these locations.

  • Decision Tree:

    This was a partner project completed with Elizabeth Gresalfi. Our work created custom decision trees from supported csv inputs. Additional testing inputs yield accurately predicted results using our traditionally constructed decision tree from prior input.

CSCI 0150

Introduction to Object-Oriented Programming and Computer Science

  • Indy:

    My final project for this course was a mini arcade machine that supported a basic implementation of traditional games of whack-a-mole, simon, blackjack, and connect four. You could play a computer or friend in blackjack and connect four, and the program included a minimax algorithm to provide more competetive computer play.

  • Tetris:

    I recreated the original tetris gameplay using Java and javaFX.

  • Cartoon:

    I created a simplified recreation of the original 1-1 level from Super Mario Bros. Graphics for the level were created using javaFX.