San Francisco, California, United States
11K followers 500+ connections

Join to view profile

About

With a focus and deep expertise in machine learning and all things AI, my journey has…

Articles by Pujun

Experience & Education

  • Kintsugi

View Pujun’s full experience

See their title, tenure and more.

or

By clicking Continue to join or sign in, you agree to LinkedIn’s User Agreement, Privacy Policy, and Cookie Policy.

Volunteer Experience

  • IEEE-Eta Kappa Nu Graphic

    Walker Park project volunteer

    IEEE-Eta Kappa Nu

    - 1 year 8 months

    Environment

    helped people in the metro Atlanta area that couldn't afford housing

Courses

  • Advanced Algorithms

    CS 4540

  • Algorithms

    CS 3510

  • Artificial Intelligence

    CS 3600

  • Cognitive Science

    CS 3790

  • Computer Vision

    ECE 4580

  • Data Structures and Algorithms

    CS 1332

  • Datapath, Concurrency and Processor Design

    ECE 3056

  • Differential Equations

    MATH 2403

  • Digital Design Lab

    ECE 2031

  • Engineering Programming using MATLAB

    CS 1371

  • Fundamentals of Object Oriented Programming

    CS 1331

  • Hardware/Software Interaction

    ECE 2035

  • Intro to Computer Engineering

    ECE 2030

  • Linear Algebra

    MATH 1502

  • Machine Learning

    CS 4641

  • Mathematical Foundations of Computer Science and Engineering

    ECE 3020

  • Multi variable Calculus

    MATH 2401

  • Physical Foundations of Computers

    ECE 3030

  • Programming Embedded Systems

    ECE 4180

  • Programming with C

    CS 1372

  • Robot Intelligent Planning

    CS 7641

  • Story generation using Aritificial Intelligence

    CS 7634

Projects

  • 3D Snakes game with accelerometer

    For my embedded system mini design project, I created a 3-D snake game that controlled the fireball (an added feature in my game for earning more points) using the accelerometer and the snake using a analog joystick. Check out the website for more information and videos.

    See project
  • Neural Nets : Cars and writing recognition

    The purpose of this project was to write a neural net that could be used to learn patterns and identify writing styles. For this, I wrote a completely connected neural net implementation with feed forward. There was also the ability to back propagation learning and a learning loop.
    The whole project was done in native python but I switched to PyPy while testing for faster results.

  • Real time operating system for Embed

    The purpose of this project was to learn how to write a RTOS. For this, I started out with 4 threads, where each thread puts something on the uLCD display. In the beginning, in order to accomplish multi-threading, I first used a mutex lock but later on, I shifted to semaphore for the mutual exclusion.

  • 9 queens problem : Chess

    Once my constraint satisfaction problem solver was complete, I wrote a python script to recreate the classic '9 queens problem', where one would have to place 9 queens in different positions in such a way that no queen could attack and kill any other queen.
    After writing the script and running my solver on the problem, I got the correct solution.
    All of the code was done in Python.

  • Ghostbuster pacman

    In this project, I designed pacman agents that could use sensors to locate and eat invisible ghosts.
    I started with coding the 'exact inference' observe method which helped in updating the agent's belief distribution over ghost positions given an observation from Pacman sensors.
    Once this was done, I incorporated the element of time in the belief distribution by arguing that if at time step t, the probabiltiy of a ghost being at position p was high, then at time t+1, this probablity for…

    In this project, I designed pacman agents that could use sensors to locate and eat invisible ghosts.
    I started with coding the 'exact inference' observe method which helped in updating the agent's belief distribution over ghost positions given an observation from Pacman sensors.
    Once this was done, I incorporated the element of time in the belief distribution by arguing that if at time step t, the probabiltiy of a ghost being at position p was high, then at time t+1, this probablity for the position p and its neighbors could not possible decrease dramatically.
    After these methods were tested and working, I tried using them together by writing a simple greedy hunting strategy and running the designed game.
    As the next step for optimization, I added particle filtering to my inferences and added the ability to approximately infer and observe and update my belief distribution accordingly. Later on, to this, I also added the element of time (as described earlier)
    Towards the end, I implemented the joint particle filter and also added time functionality to the same.
    All the coding was done in python.

  • MP3 player using NXT 1768

    This was one of my personal projects that I wanted to do for a long time.
    Using the application board and the mbed NXT 1768, I made an MP3 player which could play songs off any microSD card. It also had a graphic screen display and could change songs by just shaking the player. :D

  • Phidgets and I/O development using C# and C

    During this, I learnt how to work with phidgets like LCD timers, sensors, Mbed I/O using USB serial ports. Also wrote a I/O application in C# to compliment this.

  • Color Mapping : a constraint satisfaction problem

    Here, I implemented a constraint satisfaction problem solver and tried to optimize it by writing heuristic and inference algorithms.
    I started by writing a generic recursive back tracking, which, while keeping track whether a value would be possible to assign to a variable without violating any of its constraints. Once this was working, I noticed that this implementation could find a solution but it was really time intensive.
    Therefore, I wrote a method that helped in suggesting what…

    Here, I implemented a constraint satisfaction problem solver and tried to optimize it by writing heuristic and inference algorithms.
    I started by writing a generic recursive back tracking, which, while keeping track whether a value would be possible to assign to a variable without violating any of its constraints. Once this was working, I noticed that this implementation could find a solution but it was really time intensive.
    Therefore, I wrote a method that helped in suggesting what variable o consider next. This was a classic minimum-remaining-value heuristic, which selected the variable with the fewest options remaining and used the degree heuristic to break ties.
    Once the variable was selected, I wrote another method called value ordering, that given a variable (output of the previous function), this method would tell what value to choose (this was done by choosing the value that would least constrict the neighbors)
    Even after all these optimizations, there were cases where my implementation was taking a long time to check, eliminate and find the correct solution. One of the ways that I used to improve it was 'forward checking' technique. I used inferences as a way to identify impossible assignments earlier on by looking at how a new value assignment would affect other variables.
    I took this optimization even further by improving the 'forward checking' functionality by adding the ability to maintain arc consistency between the various variables.
    Towards the end, I added another feature to make the constraint satisfaction problem more efficient by Preprocessing. With this, I was able to eliminate impossible values even before the recursive backtracking started. This was done by using the AC3 algorithm.
    All the coding was done in Python.

  • Embedded Systems I/O

    In order to try some more exciting stuff with the embed, I played around with analog inputs and output capability, the I2C bus and the RS232 serial bus. When I got these working, I looked into the Ethernet networking and also figured out how to use a PWM servo/DC motor to work with an embed.

    After playing with all this, I wanted to create an MP3 player with the embed and so in order to have that, i looked into the MicroSD file I/O and the speaker audio output and using a small LCD…

    In order to try some more exciting stuff with the embed, I played around with analog inputs and output capability, the I2C bus and the RS232 serial bus. When I got these working, I looked into the Ethernet networking and also figured out how to use a PWM servo/DC motor to work with an embed.

    After playing with all this, I wanted to create an MP3 player with the embed and so in order to have that, i looked into the MicroSD file I/O and the speaker audio output and using a small LCD graphics display, I was able to do that.

    Towards the end, I did some experiments with the USB and how to make it talk using the serial and also looked into the relay or the power switch tail.

  • HCI Helmet

    Originally meant to create a helmet that a user would use as a sort of augmented reality, projecting an image in front of them and allowing them to control information with their hand, but was scaled down to instead showcase individual components.

    Other creators
  • Intelligent Single Pacman Game

    In this project, I made the pacman find paths through his maze world, both to reach a particular food location and collect food efficiently.

    I started with implementing some basic search algorithms, like Depth first search (DFS) and breath first search (BFS) and then moved on to implement something more interesting, with the uniform cost search with a varying cost function. When everything was working, I wanted to solve this problem more efficiently, which led me to implement A*…

    In this project, I made the pacman find paths through his maze world, both to reach a particular food location and collect food efficiently.

    I started with implementing some basic search algorithms, like Depth first search (DFS) and breath first search (BFS) and then moved on to implement something more interesting, with the uniform cost search with a varying cost function. When everything was working, I wanted to solve this problem more efficiently, which led me to implement A* (A-star) algorithm.

    For testing the working of these, I implemented problems like finding all the corners of the puzzle and also came up with an admissible heuristic, which was able to solve the problem in under 1200 node expansions.
    After this, I added the functionality that the pacman should be able to eat all the food using Astar. Also, I wrote a method to do sub-optimal search, where, in order to find a reasonably a good path quickly, the pacman agent ate all the closest dots.
    All the coding was done in Python.

  • Standard I/O - Embedded systems

    For refreshing my knowledge of embedded systems, I did some digital I/O using standard connections, PWMs (Pulse width modulation), port expanders etc.
    For this exercise, I used the NXT1768 and also tried my hands on the watchdog timer, power management and the ShiftBrite device.
    Since all of the above was done in the online C compiler of mbed.org, I also used Assembly to accomplish the same I/O connections.

  • Minesweeper Game Solver in C and Assembly

    I designed and implemented an algorithm to automatically solve the famous Microsoft minesweeper game.

    My first implementation was in C for a M*N matrix of mines (170 lines of code) but then I implemented my logic in MIPS assembly programming with various mathematical and logic optimizations.
    I was able to bring my MIPS implementation to 105 lines of assembly instructions.

  • ConnecTied : A Spatial Augmented Reality Device : Gesture Recognition

    -

    This was a class project for computer vision and I handled the gesture recognition part of it.
    For testing our computer vision skills, we made a portable spatial augmented reality device that took the user computer interaction to the next level. It was capable of projecting information onto any medium and the user could interact with it using a variety of hand gestures.
    This was done using a portable projector, a processor and a webcam.
    Check out the website for videos and more…

    This was a class project for computer vision and I handled the gesture recognition part of it.
    For testing our computer vision skills, we made a portable spatial augmented reality device that took the user computer interaction to the next level. It was capable of projecting information onto any medium and the user could interact with it using a variety of hand gestures.
    This was done using a portable projector, a processor and a webcam.
    Check out the website for videos and more information.

    Other creators
    See project
  • ALTERA Robot Self Test

    -

    We designed a self testing algorithm that could run on any ALTERA AmigoBot and check for any hardware faults. The program required almost no user interaction (except rotating of the wheels during the encoder test) and it tested the following hardware:

    1. LCD and LEDs
    2. Battery
    3. Encoder
    4. Motor
    5. SONAR
    6. 13 Push Buttons
    7. All Switches

    and it displayed all the results to the user using the LCD and the LED lights. The following project is been currently used…

    We designed a self testing algorithm that could run on any ALTERA AmigoBot and check for any hardware faults. The program required almost no user interaction (except rotating of the wheels during the encoder test) and it tested the following hardware:

    1. LCD and LEDs
    2. Battery
    3. Encoder
    4. Motor
    5. SONAR
    6. 13 Push Buttons
    7. All Switches

    and it displayed all the results to the user using the LCD and the LED lights. The following project is been currently used at the Digital Design Lab (ECE 2031) at Georgia Institute of Technology for testing, maintaining and repair of more than 25 AmigoBots.

  • Oscilloscope Train Simulation

    -

    I created and simulated two trains sharing common tracks on the Oscilloscope and then designed a state machine, creating all 18 states, which enabled to make sure that the trains never collided with each other and co-ordinated and timed their time accordingly.
    Due to the nature of the model, there was no speed constraint on the train.

  • Simple Computer SCOMP

    -

    I designed a Simple Computer, using Quartus and Assembly, that could perform all basic arithmetic operations, logical operations and even memory operations and could read and write from files.
    The simple computer could be programmed using an assembly file written in .mif format.

  • Ninja Puzzle & Fight game

    -

    In order to further improve my Java programming skills, I undertook a personal project to code a Java game that involved ninja fights and solving a puzzle and had 3 levels and a final boss level.

  • Paint Application with animation

    -

    As the final project for my Introduction to Java course, I chose to design a Java paint application that supported all the basic paint functions with 256 RGB colors and also supported animation.

    This project was undertaken to further improve my Object oriented programming and Java skills.

  • Physical celestial bodies modelling & simulation

    -

    In order to improve my Vpython and Physics knowledge, I modelled 3 dimensional N - celestial bodies that interacted with each other, The purpose of this project was to model and finally analyse how these bodies influence their force and movement on each other.
    Afterwards, I extended the project to study springs and Hooke's law (without any assumptions) to see how differential equations, defining the system, could be modelled using VPython.

  • Pattern Recognition using ARM MBED Processor

    -

    In order to utilize and test my C and C++ coding skills for ARM, I used a NXP processor and made it intelligently predict the various famous mathematical and custom series.

    The NXP processor, hooked on to a proto-board, took input from the user using UNIX terminal and based on the last three alpha numeric characters entered by the user, it could search for a possible match with famous series and guess the next characters.

  • Game Boy Games

    -

    To understand how objective C was used, I developed 6 simple custom games that could run a GBA emulator.
    The games were designed using Mode III and Mode IV programming algorithms to accomplish all the desired capabilities (eg. multiple colliding balls) within all the hardware and memory constrains.

Honors & Awards

  • Willem's Scholar

    MIT

  • Suma Cum Laude & Faculty Honors

    Georgia Institute of Technology

    I was given the Faculty/highest Honors at Georgia Institute of Technology for getting a 4.0 GPA in my major.

  • top 1% of graduating class

    Eta Kappa Nu and Tau Beta Pi

    I was fortunate that Eta Kappa Nu and Tau Beta Pi, some of the most prestigious Honors societies at Georgia Tech for engineering

  • Batts and Brown scholarship winner

    Georgia Tech and Warren L Batts

    Won $10000 scholarship for conducting excellent research for 3.5 years, in the field of Electrical and Computer Engineering and Computer Science (Artificial Intelligence), as an undergraduate.

  • Winner at Fishackathon

    U.S. Department of State

    Winner of the silicon valley Fishackathon that was organized at the Monterey Bay Aquarium from June 13 - June 15. It was organized by the U.S. Department of State. Won a $1000, a two night stay in 5 star hotel of choice and free tickets valid for 1 year.

Languages

  • English

    Full professional proficiency

  • HIndi

    Native or bilingual proficiency

  • Sanskrit

    Limited working proficiency

  • Punjabi

    Elementary proficiency

Organizations

  • XINO - Extreme Innovation Cluc

    Co Founder & Vice President; Linux Expert & Quiz director

    - Present

    We started the computer club at our high school which aimed to provide a platform to all students that found computers really fascinating. As a co founder, I had to build the whole organization from scratch and get sponsors etc, I organized many inter school and nation level quizzes on behalf of the club.

  • Enterprise to Empower

    Vice President - Technology

    -

    I was the Vice President - Technology of Enterprise to Empower, an emerging student organization at Georgia Institute of Technology. I was responsible for maintaining all the technology of the organization, including the website.

  • Student Alumni Association

    Member

    -
  • Senior Cabinet - Delhi Public School

    Director of Quiz

    -

View Pujun’s full profile

  • See who you know in common
  • Get introduced
  • Contact Pujun directly
Join to view full profile

Other similar profiles

Explore top content on LinkedIn

Find curated posts and insights for relevant topics all in one place.

View top content

Add new skills with these courses