Available · Vancouver, BC

Building real solutions with Java, C++ & AI-assisted development

M.Eng. in ECE · Full-stack problem solver with hands-on programming experience across object-oriented design, algorithms, and type systems. I use tools like GitHub Copilot and Claude to accelerate delivery — and I love shipping software that matters.

30+
Programs Written
2
Languages
OOP
Design Patterns
5+
Algorithm Types
Technical Skills

Languages & Concepts Demonstrated

Java (OOP)
C++ (STL)
Python
Algorithms
Data Structures
Type Systems
GitHub Copilot
AI-assisted Dev
SCADA / PLCs
Azure / Cloud
Code Portfolio

For less AI driven Projects, please refer to this link.

Java Programs + C++ Equivalents

Hello World Output

The foundation of every language — standard output demonstration.

Java1.-Hello.java
import java.io.*;

class Hello {
  public static void main(String args[]) {
    System.out.println("Hello World");
  }
}
C++Hello.cpp
#include <iostream>
using namespace std;

int main() {
    cout << "Hello World" << endl;
    return 0;
}
Addition Arithmetic

Basic integer arithmetic — adding two values and printing the result.

JavaAdd.java
import java.io.*;

class Add {
  public static void main(String args[]) {
    int a=2, b=7, c;
    c = a + b;
    System.out.println("C=" + c);
  }
}
C++Add.cpp
#include <iostream>
using namespace std;

int main() {
    int a=2, b=7, c;
    c = a + b;
    cout << "C=" << c << endl;
    return 0;
}
Average of Three Command-line Args

Reads three integers from command-line arguments and computes sum and average.

JavaAverage.java
import java.io.*;

class Average {
  public static void main(String args[]) {
    int sum; float avg;
    int x=Integer.parseInt(args[0]);
    int y=Integer.parseInt(args[1]);
    int z=Integer.parseInt(args[2]);
    sum = x+y+z;
    avg = sum/3;
    System.out.println("Sum="+sum);
    System.out.println("Average="+avg);
  }
}
C++Average.cpp
#include <iostream>
#include <cstdlib>
using namespace std;

int main(int argc, char* argv[]) {
    int x=atoi(argv[1]);
    int y=atoi(argv[2]);
    int z=atoi(argv[3]);
    int sum = x+y+z;
    float avg = sum/3;
    cout << "Sum=" << sum << endl;
    cout << "Average=" << avg << endl;
    return 0;
}
Circle Area Math · Scanner Input

Calculates area of a circle given radius using scanner input.

JavaCirArea.java
import java.util.Scanner;

public class CirArea {
  public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    System.out.println("Enter Radius:");
    float r = s.nextFloat();
    double area = 3.14 * r * r;
    System.out.println("Area of "+r+" is:"+area);
  }
}
C++CirArea.cpp
#include <iostream>
using namespace std;

int main() {
    float r;
    cout << "Enter Radius: ";
    cin >> r;
    double area = 3.14 * r * r;
    cout << "Area of " << r
         << " is:" << area << endl;
    return 0;
}
Type Conversion Implicit Casting

Demonstrates widening/implicit type conversion across numeric types.

Java5.-TypCon.java
public class TypCon {
  public static void main(String args[]) {
    int i = 100;
    long l = i;
    float f = i;
    double d = i;
    System.out.println("INT:"+i);
    System.out.println("LONG:"+l);
    System.out.println("FLOAT:"+f);
    System.out.println("DOUBLE:"+d);
  }
}
C++TypCon.cpp
#include <iostream>
using namespace std;

int main() {
    int i = 100;
    long l = i;
    float f = i;
    double d = i;
    cout << "INT:"    << i << endl;
    cout << "LONG:"   << l << endl;
    cout << "FLOAT:"  << f << endl;
    cout << "DOUBLE:" << d << endl;
    return 0;
}
All Type Conversion (Explicit) Narrowing Cast

Reads a double and converts it to all primitive types using explicit (narrowing) casting.

JavaAllTypConLab.java
import java.util.Scanner;

public class AllTypConLab {
  public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    System.out.println("Enter Number:");
    double d = s.nextDouble();
    byte b  = (byte)d;
    short sh= (short)d;
    int i   = (int)d;
    long l  = (long)d;
    float f = (float)d;
    System.out.println("BYTE:"+b);
    System.out.println("SHORT:"+sh);
    System.out.println("INTEGER:"+i);
    System.out.println("LONG:"+l);
    System.out.println("FLOAT"+f);
    System.out.println("DOUBLE"+d);
  }
}
C++AllTypConLab.cpp
#include <iostream>
using namespace std;

int main() {
    double d;
    cout << "Enter Number: ";
    cin >> d;
    char b  = (char)(int)d;   // byte
    short sh= (short)d;
    int i   = (int)d;
    long l  = (long)d;
    float f = (float)d;
    cout<<"BYTE:"   <<(int)b <<endl;
    cout<<"SHORT:"  <<sh     <<endl;
    cout<<"INTEGER:"<<i      <<endl;
    cout<<"LONG:"   <<l      <<endl;
    cout<<"FLOAT:"  <<f      <<endl;
    cout<<"DOUBLE:" <<d      <<endl;
    return 0;
}
Prime Number Check Loop · Conditionals

Determines whether a given number is prime using a divisibility loop up to n/2.

Java2.-Prime.java
class Prime {
  public static void main(String args[]) {
    int i, flag=0;
    int x = Integer.parseInt(args[0]);
    for(i=2; i<=x/2; i++) {
      if(x%i==0) { flag=1; break; }
    }
    if(flag==0)
      System.out.println("Prime");
    else
      System.out.println("Not Prime");
  }
}
C++Prime.cpp
#include <iostream>
#include <cstdlib>
using namespace std;

int main(int argc, char* argv[]) {
    int x = atoi(argv[1]);
    int flag = 0;
    for(int i=2; i<=x/2; i++) {
        if(x%i==0) { flag=1; break; }
    }
    cout << (flag==0 ? "Prime" : "Not Prime")
         << endl;
    return 0;
}
Sum of Odd Numbers Arrays · Filtering

Reads numbers from command-line args, filters odds, and sums them.

Java4.-Oddsum.java
class Oddsum {
  public static void main(String args[]) {
    int x[]=new int[100], ctr=0, i, sum=0;
    int n = args.length;
    for(i=0; i<n; i++) {
      x[i] = Integer.parseInt(args[i]);
    }
    for(i=0; i<n; i++) {
      if(x[i]%2 != 0) sum += x[i];
    }
    System.out.println("Sum of odds="+sum);
  }
}
C++Oddsum.cpp
#include <iostream>
#include <cstdlib>
using namespace std;

int main(int argc, char* argv[]) {
    int n = argc - 1;
    int x[100], sum = 0;
    for(int i=0; i<n; i++)
        x[i] = atoi(argv[i+1]);
    for(int i=0; i<n; i++)
        if(x[i]%2 != 0) sum += x[i];
    cout << "Sum of odds=" << sum << endl;
    return 0;
}
Descending Sort Bubble Sort

Sorts an array in descending order using bubble sort algorithm.

Java3.-Desc.java
class Desc {
  public static void main(String args[]) {
    int x[]=new int[100], t, i, j;
    int n = args.length;
    for(i=0; i<n; i++)
      x[i] = Integer.parseInt(args[i]);
    for(i=0; i<n-1; i++)
      for(j=0; j<n-1-i; j++)
        if(x[j] < x[j+1]) {
          t=x[j]; x[j]=x[j+1]; x[j+1]=t;
        }
    for(i=0; i<n; i++)
      System.out.print(x[i]+" ");
  }
}
C++Desc.cpp
#include <iostream>
#include <cstdlib>
using namespace std;

int main(int argc, char* argv[]) {
    int n = argc-1, x[100], t;
    for(int i=0;i<n;i++)
        x[i]=atoi(argv[i+1]);
    for(int i=0;i<n-1;i++)
      for(int j=0;j<n-1-i;j++)
        if(x[j]<x[j+1]){
          t=x[j];x[j]=x[j+1];x[j+1]=t;
        }
    for(int i=0;i<n;i++)
        cout << x[i] << " ";
    cout << endl;
    return 0;
}
Armstrong Number Math.pow · Digit Extraction

Checks if a number is Armstrong (narcissistic): sum of each digit raised to power of digit count equals the number itself.

JavaArmst.java
import java.util.*;
import java.math.*;

class Armstrong {
  public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    int x = s.nextInt();
    int x1=x, x2=x, n, len=0, mod;
    double power, sum=0;
    while(x2!=0){ x2=x2/10; len++; }
    for(n=len; n>0; n--) {
      mod = x%10;
      power = Math.pow(mod, len);
      sum += power;
      x = x/10;
    }
    if(sum==x1)
      System.out.println("ARMSTRONG");
    else
      System.out.println("Not ARMSTRONG");
  }
}
C++Armstrong.cpp
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int x; cin >> x;
    int x1=x, x2=x, len=0, mod;
    double sum=0;
    while(x2!=0){ x2/=10; len++; }
    for(int n=len; n>0; n--) {
        mod = x%10;
        sum += pow(mod, len);
        x /= 10;
    }
    cout << (sum==x1
        ? "ARMSTRONG"
        : "Not ARMSTRONG") << endl;
    return 0;
}
Fibonacci Series Sequences · Loop

Generates the Fibonacci sequence up to n terms using iterative approach.

JavaFib.java
import java.util.Scanner;

class Fib {
  public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    int n = s.nextInt();
    int a=0, b=1, c;
    System.out.print(a+" "+b+" ");
    for(int i=2; i<n; i++) {
      c = a+b;
      System.out.print(c+" ");
      a=b; b=c;
    }
    System.out.println();
  }
}
C++Fib.cpp
#include <iostream>
using namespace std;

int main() {
    int n; cin >> n;
    int a=0, b=1, c;
    cout << a << " " << b << " ";
    for(int i=2; i<n; i++) {
        c = a+b;
        cout << c << " ";
        a=b; b=c;
    }
    cout << endl;
    return 0;
}
Linear Search Search Algorithm

Searches for a target value in an array using sequential linear search.

JavaLsearch.java
import java.util.Scanner;

public class Lsearch {
  public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    int n = s.nextInt();
    int[] arr = new int[n];
    for(int i=0;i<n;i++) arr[i]=s.nextInt();
    int key = s.nextInt();
    boolean found = false;
    for(int i=0;i<n;i++) {
      if(arr[i]==key){
        System.out.println("Found at index "+i);
        found=true; break;
      }
    }
    if(!found) System.out.println("Not found");
  }
}
C++Lsearch.cpp
#include <iostream>
using namespace std;

int main() {
    int n; cin >> n;
    int arr[100];
    for(int i=0;i<n;i++) cin>>arr[i];
    int key; cin >> key;
    bool found = false;
    for(int i=0;i<n;i++) {
        if(arr[i]==key) {
            cout << "Found at index " << i;
            found=true; break;
        }
    }
    if(!found) cout << "Not found";
    cout << endl;
    return 0;
}
Delete Even Digits Digit Manipulation

Removes even digits from a number, keeping only odd digits in order.

JavaDelOdd.java
import java.util.Scanner;

public class DelOdd {
  public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    int n = s.nextInt();
    int sum=0, num=0;
    while(n>0) {
      int no = n%10;
      if(no%2!=0) sum=(sum*10)+no;
      n=n/10;
    }
    while(sum>0) {
      int t=sum%10;
      num=(num*10)+t; sum=sum/10;
    }
    System.out.println(num);
  }
}
C++DelOdd.cpp
#include <iostream>
using namespace std;

int main() {
    int n; cin >> n;
    int sum=0, num=0;
    while(n>0) {
        int no = n%10;
        if(no%2!=0) sum=(sum*10)+no;
        n/=10;
    }
    while(sum>0) {
        int t=sum%10;
        num=(num*10)+t; sum/=10;
    }
    cout << num << endl;
    return 0;
}
Class & Object OOP Basics

Introduces class and object instantiation with a method call.

Java6.-ClassObj.java
public class ClassObj {
  public static void main(String args[]) {
    Demo d1 = new Demo();
    d1.display();
  }
}
class Demo {
  void display() {
    System.out.println(
      "Welcome to Class and Object"
    );
  }
}
C++ClassObj.cpp
#include <iostream>
using namespace std;

class Demo {
public:
    void display() {
        cout << "Welcome to Class and Object"
             << endl;
    }
};

int main() {
    Demo d1;
    d1.display();
    return 0;
}
Float Sum (OOP Style) Encapsulation · Methods

Uses a class with getdata() and display() methods to encapsulate float addition.

Java7.-FloatSum.java
import java.util.Scanner;

public class FloatSum {
  public static void main(String args[]) {
    Addition a1 = new Addition();
    a1.getdata();
    a1.display();
  }
}
class Addition {
  Scanner d = new Scanner(System.in);
  float a, b;
  void getdata() {
    System.out.println("Enter A:"); a=d.nextFloat();
    System.out.println("Enter B:"); b=d.nextFloat();
  }
  void display() {
    System.out.println("Sum: "+(a+b));
  }
}
C++FloatSum.cpp
#include <iostream>
using namespace std;

class Addition {
public:
    float a, b;
    void getdata() {
        cout << "Enter A: "; cin >> a;
        cout << "Enter B: "; cin >> b;
    }
    void display() {
        cout << "Sum: " << a+b << endl;
    }
};

int main() {
    Addition a1;
    a1.getdata();
    a1.display();
    return 0;
}
Class Average Return Value Methods

Uses a class method to compute average of three floats and returns the result.

JavaClassAverage.java
import java.util.Scanner;

public class ClassAverage {
  public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    float a,b,c,avg;
    a=s.nextFloat(); b=s.nextFloat(); c=s.nextFloat();
    Average a1 = new Average();
    avg = a1.computeAverage(a,b,c);
    System.out.println("Average:"+avg);
  }
}
class Average {
  float computeAverage(float x, float y, float z) {
    return (x+y+z)/3;
  }
}
C++ClassAverage.cpp
#include <iostream>
using namespace std;

class Average {
public:
    float computeAverage(float x,float y,float z){
        return (x+y+z)/3;
    }
};

int main() {
    float a,b,c;
    cin >> a >> b >> c;
    Average a1;
    float avg = a1.computeAverage(a,b,c);
    cout << "Average:" << avg << endl;
    return 0;
}
Employee Management Object Arrays · Input

Manages an array of Employee objects with ID, name, and salary fields using a class structure.

JavaClassEmployee.java
import java.util.Scanner;

public class ClassEmployee {
  public static void main(String[] args) {
    Scanner s1 = new Scanner(System.in);
    int n = s1.nextInt();
    Employee e[] = new Employee[100];
    for(int i=0;i<n;i++) {
      e[i] = new Employee();
      e[i].id = s1.nextInt();
      e[i].name = s1.next();
      e[i].salary = s1.nextDouble();
    }
    for(int i=0;i<n;i++)
      System.out.println(e[i].id+" "
        +e[i].name+" "+e[i].salary);
  }
}
class Employee {
  int id; String name; double salary;
}
C++ClassEmployee.cpp
#include <iostream>
#include <string>
using namespace std;

struct Employee {
    int id;
    string name;
    double salary;
};

int main() {
    int n; cin >> n;
    Employee e[100];
    for(int i=0;i<n;i++)
        cin >> e[i].id >> e[i].name
            >> e[i].salary;
    for(int i=0;i<n;i++)
        cout << e[i].id << " "
             << e[i].name << " "
             << e[i].salary << endl;
    return 0;
}
Book Library Class OOP Data Modeling

Models a library of books with title, author, price — demonstrating data encapsulation.

JavaClassBooks.java
import java.util.Scanner;

public class ClassBooks {
  public static void main(String[] args) {
    Scanner s1 = new Scanner(System.in);
    int n = s1.nextInt();
    Books b[] = new Books[20];
    for(int i=0;i<n;i++) {
      b[i] = new Books();
      b[i].title  = s1.next();
      b[i].author = s1.next();
      b[i].price  = s1.nextDouble();
    }
    for(int i=0;i<n;i++)
      System.out.println(b[i].title+" "
        +b[i].author+" "+b[i].price);
  }
}
class Books {
  String title, author; double price;
}
C++ClassBooks.cpp
#include <iostream>
#include <string>
using namespace std;

struct Books {
    string title, author;
    double price;
};

int main() {
    int n; cin >> n;
    Books b[20];
    for(int i=0;i<n;i++)
        cin >> b[i].title >> b[i].author
            >> b[i].price;
    for(int i=0;i<n;i++)
        cout << b[i].title << " "
             << b[i].author << " "
             << b[i].price << endl;
    return 0;
}
Calculator (Switch) Switch · Menu-driven

A menu-driven calculator supporting +, -, *, /, % operations using a switch statement.

JavaCalculator.java
import java.util.*;

class Calculator {
  public static void main(String args[]) {
    Scanner x = new Scanner(System.in);
    int a = x.nextInt(), b = x.nextInt();
    int s = x.nextInt(); // 1=Add 2=Sub..
    switch(s) {
      case 1: System.out.println(a+b); break;
      case 2: System.out.println(a-b); break;
      case 3: System.out.println(a*b); break;
      case 4: System.out.println(a/b); break;
      case 5: System.out.println(a%b); break;
      default: System.out.println("Invalid");
    }
  }
}
C++Calculator.cpp
#include <iostream>
using namespace std;

int main() {
    int a, b, s;
    cin >> a >> b >> s;
    switch(s) {
      case 1: cout << a+b; break;
      case 2: cout << a-b; break;
      case 3: cout << a*b; break;
      case 4: cout << a/b; break;
      case 5: cout << a%b; break;
      default: cout << "Invalid";
    }
    cout << endl;
    return 0;
}
Odd/Even Check Modulus · Branching

Classifies a number as odd or even using modulus operator.

JavaOddEven.java
import java.util.Scanner;

public class OddEven {
  public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    int n = s.nextInt();
    if(n%2 == 0)
      System.out.println("Even");
    else
      System.out.println("Odd");
  }
}
C++OddEven.cpp
#include <iostream>
using namespace std;

int main() {
    int n; cin >> n;
    cout << (n%2==0 ? "Even" : "Odd")
         << endl;
    return 0;
}
Prime Sum Nested Loops · Sieve-lite

Finds and sums all prime numbers up to a given range using nested loop primality test.

JavaPrimeSum.java
import java.util.Scanner;

public class PrimeSum {
  public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    int n = s.nextInt(), sum=0;
    for(int x=2; x<=n; x++) {
      int flag=0;
      for(int i=2; i<=x/2; i++)
        if(x%i==0){ flag=1; break; }
      if(flag==0) sum+=x;
    }
    System.out.println("Prime Sum="+sum);
  }
}
C++PrimeSum.cpp
#include <iostream>
using namespace std;

int main() {
    int n, sum=0; cin >> n;
    for(int x=2; x<=n; x++) {
        int flag=0;
        for(int i=2; i<=x/2; i++)
            if(x%i==0){ flag=1; break; }
        if(flag==0) sum+=x;
    }
    cout << "Prime Sum=" << sum << endl;
    return 0;
}
Factor + Prime Sum Combined Algorithm

Computes both the sum of factors and verifies primality with a combined algorithm.

JavaFactorPrimeSum.java
import java.util.Scanner;

public class FactorPrimeSum {
  public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    int n = s.nextInt();
    int factorSum=0, primeSum=0;
    for(int i=1; i<=n; i++)
      if(n%i==0) factorSum+=i;
    for(int x=2; x<=n; x++) {
      int flag=0;
      for(int i=2;i<=x/2;i++)
        if(x%i==0){flag=1;break;}
      if(flag==0) primeSum+=x;
    }
    System.out.println("Factor Sum="+factorSum);
    System.out.println("Prime Sum="+primeSum);
  }
}
C++FactorPrimeSum.cpp
#include <iostream>
using namespace std;

int main() {
    int n; cin >> n;
    int factorSum=0, primeSum=0;
    for(int i=1;i<=n;i++)
        if(n%i==0) factorSum+=i;
    for(int x=2;x<=n;x++){
        int flag=0;
        for(int i=2;i<=x/2;i++)
            if(x%i==0){flag=1;break;}
        if(flag==0) primeSum+=x;
    }
    cout<<"Factor Sum="<<factorSum<<endl;
    cout<<"Prime Sum=" <<primeSum <<endl;
    return 0;
}
50 Students Class Object Arrays · Grading

Manages up to 50 students with roll numbers and marks, computing grades using OOP.

Java6.-Class50Students.java
import java.util.Scanner;

public class Class50Students {
  public static void main(String[] args) {
    Scanner s1 = new Scanner(System.in);
    int n = s1.nextInt();
    Student st[] = new Student[50];
    for(int i=0;i<n;i++) {
      st[i] = new Student();
      st[i].roll = s1.nextInt();
      st[i].marks = s1.nextInt();
      if(st[i].marks>=75) st[i].grade="A";
      else if(st[i].marks>=50) st[i].grade="B";
      else st[i].grade="C";
    }
    for(int i=0;i<n;i++)
      System.out.println(st[i].roll+" "
        +st[i].marks+" "+st[i].grade);
  }
}
class Student {
  int roll, marks; String grade;
}
C++Class50Students.cpp
#include <iostream>
#include <string>
using namespace std;

struct Student {
    int roll, marks;
    string grade;
};

int main() {
    int n; cin >> n;
    Student st[50];
    for(int i=0;i<n;i++){
        cin >> st[i].roll >> st[i].marks;
        if(st[i].marks>=75) st[i].grade="A";
        else if(st[i].marks>=50) st[i].grade="B";
        else st[i].grade="C";
    }
    for(int i=0;i<n;i++)
        cout << st[i].roll << " "
             << st[i].marks << " "
             << st[i].grade << endl;
    return 0;
}
Resume

Simba Zuva

Vancouver, BC simbazuva@gmail.com (778) 700-5362 linkedin.com/in/simba-zuva-12b138133 Canadian PR · No sponsorship required

AI-enabled developer and ECE engineer with a Master's degree and demonstrated experience building software in Java, C++, and Python using AI-assisted tools including GitHub Copilot, Claude, and Perplexity in conjuction with the Comet browser. Proven ability to translate structured requirements into working solutions quickly, iterate based on feedback, and move prototypes to production. Background spans IT systems, SCADA/PLCs, technical support, and hands-on academic research — with a practical, curious problem-solving mindset that thrives in collaborative, fast-moving teams.

Technical Specialist / IT Support Analyst
Schneider Electric · Vancouver, BC
2022 – 2023
  • Supported SCADA, PLC, and industrial automation systems — translating technical requirements into operational configurations and documentation
  • Used scripting (Python, PowerShell) to automate routine support workflows, reducing manual processing time
  • Coordinated with cross-functional teams to prototype and deliver internal tooling aligned with business architecture and service models
  • Maintained systems documentation and assisted in moving proof-of-concept solutions to stable, production-ready deployments
  • Leveraged AI-assisted tools to accelerate code review, documentation generation, and requirements analysis
Teaching Assistant — Computer Engineering
University of Victoria · Victoria, BC
2021 – 2022
  • Delivered lab instruction and code reviews in Java, C++, and Python for undergraduate engineering courses
  • Mentored students on algorithm design, OOP patterns, and debugging — reinforcing practical, working-software principles
  • Collaborated with course instructors to rapidly iterate on lab material based on student feedback
Graduate Research Project — IoT Safety Systems
University of Victoria (M.Eng. Research) · Victoria, BC
2020 – 2022
  • Designed and built an IoT-based driver safety monitoring system: from requirements to prototype to a published paper on ResearchGate
  • Implemented embedded software components in C++ and Python; applied signal processing and sensor fusion logic
  • Managed a homelab environment to test system architecture and iterate rapidly on design decisions
  • Demonstrated ability to move independently from ambiguous spec to working, documented solution
IT Helpdesk / Technical Support
BC Ministry of Local Government · Victoria, BC
2019 – 2020
  • Provided Tier 1–2 IT support across Windows, M365, Active Directory, and networking environments
  • Documented processes and escalation paths; contributed to internal knowledge base articles used by the team
  • Worked within structured service models and ticketing systems (ITSM), adapting quickly to changing priorities
Languages
JavaC++PythonPowerShellBashHTML/CSS
AI / Dev Tools
GitHub CopilotClaude (Anthropic)Comet Browser (Perplexity)OpenAI APIPrompt Engineering
Infrastructure / Cloud
Microsoft AzureActive DirectoryMicrosoft 365Windows ServerHomelab / VMs
Engineering / OT
SCADAPLCsModbus RTUIoT SystemsEmbedded C++
Concepts & Methods
OOP & Design PatternsAlgorithms & Data StructuresRapid PrototypingRequirements AnalysisAgile / Iterative Dev
Certifications (In Progress)
PMPCISSP
Master of Engineering — Electrical & Computer Engineering
University of Victoria · Victoria, BC
GPA 6.00
  • Computer science focus — algorithms, software systems, embedded design
  • Research: IoT-based driver safety monitoring system (published on ResearchGate)
Bachelor of Engineering — Electrical & Computer Engineering
Parul University · India
GPA 7.27 (First Class, Distinction)
AI Tools in My Daily Workflow

I use GitHub Copilot to generate boilerplate, suggest completions, and speed up repetitive patterns. I use Claude to translate business requirements into code scaffolding, debug logic, and write documentation. I use Comet Browser for AI-pair programming in real time. This portfolio itself was prototyped and refined using AI-assisted development — the Java programs above were translated to C++ with AI assistance, then reviewed and corrected by hand. I treat AI as a force multiplier, not a replacement for judgment.