diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4d861c7e4ad62f9a39b316785324aadb1f3be408
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,51 @@
+
+# Created by https://www.gitignore.io/api/c++,visualstudiocode
+# Edit at https://www.gitignore.io/?templates=c++,visualstudiocode
+
+### C++ ###
+# Prerequisites
+*.d
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+*.smod
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+
+### VisualStudioCode ###
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+### VisualStudioCode Patch ###
+# Ignore all local history of files
+.history
+
+# End of https://www.gitignore.io/api/c++,visualstudiocode
+
diff --git a/src/cudaUtil/cudaUtil.cu b/src/cudaUtil/cudaUtil.cu
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/src/cudaUtil/cudaUtil.cuh b/src/cudaUtil/cudaUtil.cuh
new file mode 100644
index 0000000000000000000000000000000000000000..e7373deeb09df7c1a792df2f9c5fee33a7ebcfd6
--- /dev/null
+++ b/src/cudaUtil/cudaUtil.cuh
@@ -0,0 +1,6 @@
+#ifndef CUDA_UTIL_CUH
+#define CUDA_UTIL_CUH
+
+
+
+#endif
\ No newline at end of file
diff --git a/src/main.cu b/src/main.cu
new file mode 100644
index 0000000000000000000000000000000000000000..6a0c7b6df7a4f621ba5bd55e97314bccebb5879e
--- /dev/null
+++ b/src/main.cu
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include "util/util.hpp"
+
+__global__ void cuda_hello(){
+    printf("Hello World from GPU!\n");
+}
+
+int main() {
+    int* arr;
+    int* d_arr;
+
+    arr = (int *) malloc(sizeof(int) * 10);
+    cudaMalloc((void**)&d_arr, sizeof(int) * 10);
+
+    cudaMemcpy(d_arr, arr, sizeof(float) * 10, cudaMemcpyHostToDevice);
+    
+    generate_random(arr, 10);
+    print_arr(arr, 10);
+    
+    cuda_hello<<<1,1>>>(); 
+    cudaDeviceSynchronize();
+    return 0;
+}
diff --git a/src/radixSort/radixSort.cu b/src/radixSort/radixSort.cu
new file mode 100644
index 0000000000000000000000000000000000000000..8e8917a09d9174b14354e66184c8d5535c1ce353
--- /dev/null
+++ b/src/radixSort/radixSort.cu
@@ -0,0 +1,5 @@
+#include "radixSort.cuh"
+
+void radixSort(int* out, int* arr, int n){
+  
+}
diff --git a/src/radixSort/radixSort.cuh b/src/radixSort/radixSort.cuh
new file mode 100644
index 0000000000000000000000000000000000000000..8409449db79c33ec092f081c56cde6f5cfdda0b7
--- /dev/null
+++ b/src/radixSort/radixSort.cuh
@@ -0,0 +1,6 @@
+#ifndef RADIX_SORT_CUH
+#define RADIX_SORT_CUH
+
+void radixSort(int* out, int* arr, int n);
+
+#endif
\ No newline at end of file
diff --git a/src/util/util.cpp b/src/util/util.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ac95ea1e111ed5e38d1a08f12141171b0474fd8a
--- /dev/null
+++ b/src/util/util.cpp
@@ -0,0 +1,52 @@
+#include "util.hpp"
+#include <stdlib.h>
+#include <limits.h>
+#include <stdio.h>
+
+void generate_random(int *arr, int n){
+  int seed = 13516016;
+  srand(seed);
+  for (long i = 0; i < n; i++)
+  {
+    arr[i] = (int)rand();
+  }
+}
+
+void print_arr(int *array, int num_elements){
+  {
+    for (int i = 0; i < num_elements; i++)
+    {
+      printf("%d ", array[i]);
+    }
+    printf("\n");
+  }
+}
+
+int get_max(int arr[], int n){
+  int max=INT_MIN;
+  for (int i=0; i<n; i++){
+      if (max<arr[i]){
+          max = arr[i];
+      }
+  }
+  return max;
+}
+
+void assert_sorted(int arr[], int n, double time_elapsed){
+  int err_index = 0;
+  for (int i=0; i<n-1; i++){
+    if (arr[i] > arr[i+1]){
+      err_index = i+1;
+    }
+  }
+
+  if (!err_index){
+    printf("Sorted!\n");
+  } else {
+    printf("Not sorted after index %d\n", err_index);
+  }
+
+  printf("Time elapsed : %f microseconds\n", time_elapsed*1000000);
+
+}
+
diff --git a/src/util/util.hpp b/src/util/util.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..5e23e74c43412edabe21692d1f5e871ef8967d1b
--- /dev/null
+++ b/src/util/util.hpp
@@ -0,0 +1,9 @@
+#ifndef UTIL_HPP
+#define UTIL_HPP
+
+void generate_random(int* arr, int n);
+void print_arr(int * array, int num_elements);
+int get_max(int arr[], int n);
+void assert_sorted(int arr[], int n, double time_elapsed);
+
+#endif
\ No newline at end of file