diff --git a/4-GPU/HandsOn/.master/C/CMakeLists.txt b/4-GPU/HandsOn/.master/C/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7bbec144af681b249a4ac2bf50e259eab28c1894
--- /dev/null
+++ b/4-GPU/HandsOn/.master/C/CMakeLists.txt
@@ -0,0 +1,7 @@
+add_subdirectory(./task0/)
+add_subdirectory(./task1/)
+add_subdirectory(./task2/)
+add_subdirectory(./task3/)
+add_subdirectory(./task4/)
+add_subdirectory(./task5/)
+add_subdirectory(./task6/)
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/C/task0/CMakeLists.txt b/4-GPU/HandsOn/.master/C/task0/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..13025616f612cb2b1672dbcd9089982e635715d1
--- /dev/null
+++ b/4-GPU/HandsOn/.master/C/task0/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile common.h poisson2d_serial.c poisson2d.c)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.c poisson2d.solution.pgprof)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/C/task1/CMakeLists.txt b/4-GPU/HandsOn/.master/C/task1/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a620e706fdd33dcbdeaa996867913476837b3827
--- /dev/null
+++ b/4-GPU/HandsOn/.master/C/task1/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile common.h poisson2d_serial.c poisson2d.c)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.c pgprof.poisson2d.Task${TASK}.solution.tar.gz)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/C/task2/CMakeLists.txt b/4-GPU/HandsOn/.master/C/task2/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a620e706fdd33dcbdeaa996867913476837b3827
--- /dev/null
+++ b/4-GPU/HandsOn/.master/C/task2/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile common.h poisson2d_serial.c poisson2d.c)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.c pgprof.poisson2d.Task${TASK}.solution.tar.gz)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/C/task3/CMakeLists.txt b/4-GPU/HandsOn/.master/C/task3/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a620e706fdd33dcbdeaa996867913476837b3827
--- /dev/null
+++ b/4-GPU/HandsOn/.master/C/task3/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile common.h poisson2d_serial.c poisson2d.c)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.c pgprof.poisson2d.Task${TASK}.solution.tar.gz)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/C/task4/CMakeLists.txt b/4-GPU/HandsOn/.master/C/task4/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a620e706fdd33dcbdeaa996867913476837b3827
--- /dev/null
+++ b/4-GPU/HandsOn/.master/C/task4/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile common.h poisson2d_serial.c poisson2d.c)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.c pgprof.poisson2d.Task${TASK}.solution.tar.gz)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/C/task5/CMakeLists.txt b/4-GPU/HandsOn/.master/C/task5/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a620e706fdd33dcbdeaa996867913476837b3827
--- /dev/null
+++ b/4-GPU/HandsOn/.master/C/task5/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile common.h poisson2d_serial.c poisson2d.c)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.c pgprof.poisson2d.Task${TASK}.solution.tar.gz)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/C/task6/CMakeLists.txt b/4-GPU/HandsOn/.master/C/task6/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a620e706fdd33dcbdeaa996867913476837b3827
--- /dev/null
+++ b/4-GPU/HandsOn/.master/C/task6/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile common.h poisson2d_serial.c poisson2d.c)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.c pgprof.poisson2d.Task${TASK}.solution.tar.gz)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/CMakeLists.txt b/4-GPU/HandsOn/.master/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2c7ae54d987348b157d6df97b933a223a8438c64
--- /dev/null
+++ b/4-GPU/HandsOn/.master/CMakeLists.txt
@@ -0,0 +1,7 @@
+cmake_minimum_required(VERSION 3.15)
+project(4-GPU)
+#add_executable(myapp main.c)
+#install(TARGETS myapp DESTINATION bin)
+
+add_subdirectory(./C)
+add_subdirectory(./FORTRAN)
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/FORTRAN/CMakeLists.txt b/4-GPU/HandsOn/.master/FORTRAN/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c7e424a6a675b0f7147cbcdc9b3a029c089244a8
--- /dev/null
+++ b/4-GPU/HandsOn/.master/FORTRAN/CMakeLists.txt
@@ -0,0 +1,4 @@
+add_subdirectory(./task0/)
+add_subdirectory(./task1/)
+add_subdirectory(./task2/)
+add_subdirectory(./task3/)
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/FORTRAN/task0/CMakeLists.txt b/4-GPU/HandsOn/.master/FORTRAN/task0/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..49928a92b69083d781e61c71efae5466867f0d5a
--- /dev/null
+++ b/4-GPU/HandsOn/.master/FORTRAN/task0/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile poisson2d_serial.F03 poisson2d.F03)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.F03 poisson2d.solution.pgprof)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/FORTRAN/task1/CMakeLists.txt b/4-GPU/HandsOn/.master/FORTRAN/task1/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ebc37a160e46b4f2d1454381841e9d9f6841976d
--- /dev/null
+++ b/4-GPU/HandsOn/.master/FORTRAN/task1/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile poisson2d_serial.F03 poisson2d.F03)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.F03 pgprof.poisson2d.Task${TASK}.solution.tar.gz)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/FORTRAN/task2/CMakeLists.txt b/4-GPU/HandsOn/.master/FORTRAN/task2/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ebc37a160e46b4f2d1454381841e9d9f6841976d
--- /dev/null
+++ b/4-GPU/HandsOn/.master/FORTRAN/task2/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile poisson2d_serial.F03 poisson2d.F03)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.F03 pgprof.poisson2d.Task${TASK}.solution.tar.gz)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file
diff --git a/4-GPU/HandsOn/.master/FORTRAN/task3/CMakeLists.txt b/4-GPU/HandsOn/.master/FORTRAN/task3/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ebc37a160e46b4f2d1454381841e9d9f6841976d
--- /dev/null
+++ b/4-GPU/HandsOn/.master/FORTRAN/task3/CMakeLists.txt
@@ -0,0 +1,17 @@
+file(RELATIVE_PATH RELPATH ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+set(SOLUTION_DIR ${CMAKE_SOURCE_DIR}/../Solution/${RELPATH})
+set(TASK_DIR ${CMAKE_SOURCE_DIR}/../${RELPATH})
+string(REGEX MATCH "task[0-9]" TASK ${CMAKE_CURRENT_SOURCE_DIR})
+string(SUBSTRING ${TASK} 4 -1 TASK)
+
+
+
+set(TASK_FILES Makefile poisson2d_serial.F03 poisson2d.F03)
+set(SOLUTION_FILES ${TASK_FILES} poisson2d.solution.F03 pgprof.poisson2d.Task${TASK}.solution.tar.gz)
+
+message(VERBOSE "CURRENT TASK ${TASK}")
+message(VERBOSE "TASK FILES ${TASK_FILES} GO TO ${TASK_DIR}")
+message(VERBOSE "SOLUTION FILES ${SOLUTION_FILES} GO TO ${SOLUTION_DIR}")
+
+install(FILES ${TASK_FILES} DESTINATION ${TASK_DIR})
+install(FILES ${SOLUTION_FILES} DESTINATION ${SOLUTION_DIR})
\ No newline at end of file