diff --git a/README.md b/README.md
index db5d0854234e1c1cf6a3f050525110a9fc72f4c7..8a7587435ab9b135e3859e3d317f7a99d9cd2aae 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,22 @@
 # Tutorial APAP
 ---
+## Tutorial 3
+### Pertanyaan 1
+anotasi yang disebutkan merupakan implementasi dari projek lombok(plugin) untuk membantu menulis kode
+@AllArgsConstructor untuk membuat konstruktor dengan argumen, sedangkan @NoArgsConstructor kebalikannya, yaitu tanpa argumen. 
+@setter dan @getter untuk membuat method  set dan get secara otomatis
+@entity menyatakan class ini akan dimap ke database
+@table memberikan nama table pada database
+### Pertanyaan 2
+perbedaannya, apabila menggunakan @QUERY itu menggunakan query ke database dahulu. 
+### Pertanyaan 3
+@jointable berguna menggabungkan dua tabel menjadi satu dengan FK di dua tabel tsb. @joincolumn menggabungkan suatu kolom dari suatu tabel ke tabel lain sehingga tabel tsb ada relasi dengan tabel yang dijoinkolomkan
+### Pertanyaan 4
+pada @joincolumn, name mengacu pada nama kolom di tabel pengajar, referencedcolumnname sebagai acuan kolom di tabel lain. nullable berguna menyatakan apakah boleh kolom tersebut null atau tidak. sama dengan @notnull 
+### Pertanyaan 5
+fetchtype.lazy = pemanggilan data bersifat sesuai permintaan. 
+fetchtype.eager = sebaliknya dari lazy. data dipanggil langsung tanpa ada permintaan. 
+CascadeType.ALL = set operasi cascadable untuk entitas yang saling berhubungan dimana set operasi ini akan perform beberapa operasi seperti PERSIST, MERGE, REMOVE, DETACH, REFRESH untuk entitas parent.
 ## Tutorial 2
 ### Pertanyaan 1
 Jawab: Error resolving template [add-course], template might not exist or might not be accessible by any of the configured Template Resolvers
diff --git a/belajarbelajar/build.gradle b/belajarbelajar/build.gradle
index 605ad9476d5415141ec1ff36e8a1ec93788f240e..ae74c874310b82917b2cfe6f630e9c43ec2534a5 100644
--- a/belajarbelajar/build.gradle
+++ b/belajarbelajar/build.gradle
@@ -17,6 +17,11 @@ dependencies {
 	implementation 'org.springframework.boot:spring-boot-starter-web'
 	developmentOnly 'org.springframework.boot:spring-boot-devtools'
 	testImplementation 'org.springframework.boot:spring-boot-starter-test'
+	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
+	implementation 'mysql:mysql-connector-java:5.1.6'
+	compileOnly("org.projectlombok:lombok:1.18.24")
+	annotationProcessor('org.projectlombok:lombok:1.18.24')
+	implementation 'org.springframework.boot:spring-boot-starter-validation:2.7.3'
 }
 
 tasks.named('test') {
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/BaseController.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/BaseController.java
new file mode 100644
index 0000000000000000000000000000000000000000..196b9678193c2d7f343a9f9266cf8e50e1f6c909
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/BaseController.java
@@ -0,0 +1,12 @@
+package apap.tutorial.belajarbelajar.controller;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+
+@Controller
+public class BaseController {
+    @GetMapping("/")
+    private String Home(){
+        return "home";
+    }
+}
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java
index f4e2b529affe33dee11e6dc0de8bba455b2a7c39..8eac90fed269fd5329e7053035a265a4bc326339 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java
@@ -1,50 +1,38 @@
 package apap.tutorial.belajarbelajar.controller;
+import apap.tutorial.belajarbelajar.model.PengajarModel;
+import apap.tutorial.belajarbelajar.repository.CourseDb;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import apap.tutorial.belajarbelajar.model.CourseModel;
 import apap.tutorial.belajarbelajar.service.CourseService;
 
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
 @Controller
 public class CourseController {
+    @Qualifier("courseServiceImpl")
     @Autowired
     private CourseService courseService;
-    //routing URL
-    @RequestMapping("course/add")
-    public String addCourse(
-            @RequestParam(value = "code", required = true) String code,
-            @RequestParam(value = "nameCourse", required = true) String nameCourse,
-            @RequestParam(value = "description", required = true) String description,
-            @RequestParam(value = "jumlahSks", required = true) String jumlahSks,
-            Model model) {
-            List<CourseModel> listCourse = courseService.getListCourse();
-            for(CourseModel course_ntr : listCourse){
-                if (course_ntr.getCode().equals(code)){
-                    model.addAttribute("errormsg","kode course sama");
-                    return "error";
-                }
-            }
-            //membuat objek courseModel
-            CourseModel course = new CourseModel(code,nameCourse, description, Integer.parseInt(jumlahSks));
-            //memanggil service addcourse
-            courseService.addCourse(course);
-            //add variabel code course ke 'code' untuk dirender di thymeleaf
-            model.addAttribute("code",code);
-            //add variabel name course ke 'nameCourse' untuk dirender di thymeleaf
-            model.addAttribute("nameCourse",nameCourse);
-
-            return "add-course";
+
+    @RequestMapping("/course/add")
+    public String addCourseFormPage(Model model) {
+        model.addAttribute("course",new CourseModel());
+        return "form-add-course";
+    }
+    @PostMapping("/course/add")
+    public String addCourseSubmitPage(@ModelAttribute CourseModel course, Model model) {
+        courseService.addCourse(course);
+        model.addAttribute("code",course.getCode());
+        return "add-course";
     }
 
-    @RequestMapping("course/viewAll")
+    @RequestMapping("/course/viewall")
     public String listCourse(Model model){
         //mendapatkan semua course
         List<CourseModel> listCourse = courseService.getListCourse();
@@ -54,96 +42,76 @@ public class CourseController {
 
     }
 
-    @RequestMapping("course/view")
-    public String detailCourse(@RequestParam(value = "code") String code, Model model){
+    @RequestMapping("/course/view")
+    public String viewDetailCoursePage(@RequestParam(value = "code") String code, Model model){
         //mendapatkan course sesuai code
         CourseModel course = courseService.getCourseByCodeCourse(code);
-
+        List<PengajarModel> listPengajar = course.getListPengajar();
+        model.addAttribute("listPengajar",listPengajar);
         //add variabel semua course model ke "listCourse" untuk dirender ke thymeleaf
         model.addAttribute("course",course);
         return "view-course";
 
     }
-    @GetMapping(value = "course/view/code-course/{code}")
-    public String detailCoursePath(@PathVariable String code, Model model){
-
+    @GetMapping("/course/view-query")
+    public String viewDetailCoursePageQuery(@RequestParam(value = "code") String code, Model model){
+        CourseModel course =courseService.getCourseByCodeCourse(code);
+        List<PengajarModel> listPengajar = course.getListPengajar();
+        model.addAttribute("listPengajar",listPengajar);
+        model.addAttribute("course",course);
+        return "view-course";
+    }
+    @GetMapping( "/course/update/{code}")
+    public String updateCourseFormPage(@PathVariable String code, Model model){
         CourseModel course = courseService.getCourseByCodeCourse(code);
-        if (course == null) {
-            model.addAttribute("errormsg","course tidak ada");
-            return "error";
-
-        } else {
-            model.addAttribute("course",course);
-            return "view-course";
-        }
-
-
-
-
+        model.addAttribute("course", course);
+        return "form-update-course";
     }
 
-    @GetMapping(value = "course/update/code-course/{code}/jumlah-sks/{jumlah}")
-    public String updateCoursePath(@PathVariable String code,@PathVariable String jumlah, Model model){
-
-
-            CourseModel course = courseService.getCourseByCodeCourse(code);
-            if (course==null){
-                model.addAttribute("errormsg","course tidak ada");
-                return "error";
-            } else{
-                course.setJumlahSks(Integer.parseInt(jumlah));
-                model.addAttribute("course",course);
-                return "update-course";
-            }
-
+    @PostMapping("/course/update")
+    public String updateCourseSubmitPage(@ModelAttribute CourseModel course, Model model){
+        CourseModel updatedCourse = courseService.updateCourse(course);
+        model.addAttribute("code", updatedCourse.getCode());
+        return "update-course";
     }
 
-    @GetMapping(value = "course/delete/code-course/{code}")
-        public String deleteCourse(@PathVariable String code, Model model){
+    @RequestMapping("/course/viewAllSort")
+    public String listCourseSort(Model model){
+        //mendapatkan semua course
+        List<CourseModel> listCourse = courseService.getListSortName();
+        //add variabel semua course model ke "listCourse" untuk dirender ke thymeleaf
+        model.addAttribute("listCourse",listCourse);
+        return "viewall-course";
 
+    }
+    @GetMapping("/course/delete/{code}")
+    public String deleteCourse(@PathVariable String code, Model model){
+//        PengajarModel pengajar = pengajarService.getPengajarById(noPengajar);
         CourseModel course = courseService.getCourseByCodeCourse(code);
-        List<CourseModel> listCourse = courseService.getListCourse();
-        if (course==null){
-            model.addAttribute("errormsg","course tidak ada");
+        LocalDateTime today = LocalDateTime.now();
+        LocalDateTime berak = course.getTanggalBerakhir();
+        if (today.isAfter(berak)){
+            if (course.getListPengajar().isEmpty()){
+                courseService.deleteCourse(course);
+                model.addAttribute(code);
+                return "delete-course";
+            } else {
+                model.addAttribute("errormsg","ada pengajar di dalam course");
+                return "error";
+            }
+        }
+        else{
+            model.addAttribute("errormsg","course belum tutup");
             return "error";
-        } else{
-            model.addAttribute("code",code);
-            listCourse.remove(course);
-            return "delete-course";
         }
 
-    }
-
-    @GetMapping(value = "course/delete/code-course/sks/{sks}")
-    public String deleteCourseSks(@PathVariable String sks, Model model){
-
 
-        List<CourseModel> listCourse = courseService.getListCourse();
-        ArrayList<CourseModel> cars = new ArrayList<CourseModel>();
-        for(CourseModel course_ntr : listCourse){
-            if (course_ntr.getJumlahSks()==Integer.parseInt(sks)){
-                cars.add(course_ntr);
-//                model.addAttribute("errormsg","kode course sama");
+    }
 
-            }
 
-        }
-//        List<CourseModel> listCourse = courseService.getListCourse();
-        if (cars.isEmpty()){
-            model.addAttribute("errormsg","course tidak ada");
-            return "error";
-        } else {
-            //add variabel semua course model ke "listCourse" untuk dirender ke thymeleaf
-            model.addAttribute("listCourse",listCourse);
-            for (CourseModel course_ntr : cars){
-                listCourse.remove(course_ntr);
-            }
-            return "delete-course-sks";
 
-        }
 
 
-    }
 
 
 
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/PengajarController.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/PengajarController.java
new file mode 100644
index 0000000000000000000000000000000000000000..83791db28e4b0e98cb1fa00133564d06323c329e
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/PengajarController.java
@@ -0,0 +1,99 @@
+package apap.tutorial.belajarbelajar.controller;
+import apap.tutorial.belajarbelajar.model.PengajarModel;
+import apap.tutorial.belajarbelajar.repository.CourseDb;
+import apap.tutorial.belajarbelajar.repository.PengajarDb;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import apap.tutorial.belajarbelajar.model.CourseModel;
+import apap.tutorial.belajarbelajar.service.CourseService;
+import apap.tutorial.belajarbelajar.service.PengajarService;
+
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.List;
+
+@Controller
+public class PengajarController {
+    @Qualifier("pengajarServiceImpl")
+    @Autowired
+    private PengajarService pengajarService;
+
+    @Qualifier("courseServiceImpl")
+    @Autowired
+    private CourseService courseService;
+
+    @GetMapping("/pengajar/add/{code}")
+    public String addPengajarFormPage(@PathVariable String code, Model model){
+        PengajarModel pengajar = new PengajarModel();
+        CourseModel course = courseService.getCourseByCodeCourse(code);
+        pengajar.setCourse(course);
+        model.addAttribute("pengajar",pengajar);
+        return "form-add-pengajar";
+    }
+    @PostMapping("/pengajar/add")
+    public String addPengajarSubmitPage(@ModelAttribute PengajarModel pengajar, Model model){
+        pengajarService.addPengajar(pengajar);
+        model.addAttribute("noPengajar",pengajar.getNoPengajar());
+        return "add-pengajar";
+    }
+
+    @GetMapping( "/pengajar/update/{noPengajar}")
+    public String updatePengajarFormPage(@PathVariable Long noPengajar, Model model){
+//        Long no = Long.parseLong(noPengajar);
+        PengajarModel pengajar = pengajarService.getPengajarById(noPengajar);
+        if (pengajar == null){
+            model.addAttribute("errormsg", "pengajar tidak ada");
+            return "error";
+        }
+//        model.addAttribute("pengajar", pengajar);
+        model.addAttribute("pengajar", pengajar);
+        model.addAttribute("noPengajar", noPengajar);
+        model.addAttribute("course", pengajar.getCourse());
+        return "form-update-pengajar";
+    }
+
+    @PostMapping("/pengajar/update/")
+    public String updatePengajarSubmitPage(@ModelAttribute PengajarModel pengajar, Model model){
+//        PengajarModel pengajarModel = pengajarService.updatePengajar(pengajar);
+
+        LocalDateTime today = LocalDateTime.now();
+        CourseModel course= pengajar.getCourse();
+        System.out.println(course);
+        LocalDateTime berak = course.getTanggalBerakhir();
+//        System.out.println(berak);
+        if (today.isAfter(berak)){
+            pengajarService.updatePengajar(pengajar);
+            model.addAttribute("namaPengajar", pengajar.getNamaPengajar());
+            model.addAttribute("code", course.getCode());
+            return "update-pengajar";
+        } else{
+            model.addAttribute("errormsg","course belum tutup");
+            return "error";
+        }
+    }
+    @GetMapping("/pengajar/delete/{noPengajar}")
+    public String deletePengajar(@PathVariable Long noPengajar, Model model){
+        PengajarModel pengajar = pengajarService.getPengajarById(noPengajar);
+        CourseModel course = pengajar.getCourse();
+        LocalDateTime today = LocalDateTime.now();
+        LocalDateTime berak = course.getTanggalBerakhir();
+        if (today.isAfter(berak)){
+            pengajarService.deletePengajar(pengajar);
+            model.addAttribute("noPengajar", pengajar.getNoPengajar());
+            model.addAttribute("tanggalBerakhir", course.getTanggalBerakhir());
+            model.addAttribute("code", course.getCode());
+            return "delete-pengajar";
+        }
+        else{
+            model.addAttribute("errormsg","course belum tutup");
+            return "error";
+        }
+
+
+    }
+}
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/CourseModel.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/CourseModel.java
index 1dfe3fa7469e7a140561ce4099d0859fedc54a2a..e96e1300e4deba5b0e82ab0c4dcc4f33e2316530 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/CourseModel.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/CourseModel.java
@@ -1,47 +1,57 @@
 package apap.tutorial.belajarbelajar.model;
-
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+
+@AllArgsConstructor
+
+@NoArgsConstructor
+@Setter
+@Getter
+@Entity
+@Table(name = "course")
 public class CourseModel {
+    @Id
+    @Size(max = 30)
     private String code;
+    @NotNull
+    @Size(max = 30)
+    @Column(name = "name_course",nullable = false)
     private String nameCourse;
+    @NotNull
+    @Size(max = 200)
+    @Column(name = "description",nullable = false)
     private String description;
+    @NotNull
+    @Column(name = "jumlah_sks",nullable = false)
     private int jumlahSks;
 
-    public CourseModel(String code, String nameCourse, String description, int jumlahSks) {
-        this.code = code;
-        this.nameCourse = nameCourse;
-        this.description = description;
-        this.jumlahSks = jumlahSks;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getNameCourse() {
-        return nameCourse;
-    }
+    @NotNull
+    @Column(nullable = false)
+    @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm")
+    private LocalDateTime tanggalDimulai;
 
-    public void setNameCourse(String nameCourse) {
-        this.nameCourse = nameCourse;
-    }
+    @NotNull
+    @Column(nullable = false)
+    @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm")
+    private LocalDateTime tanggalBerakhir;
 
-    public String getDescription() {
-        return description;
-    }
+    @OneToMany(mappedBy = "course",fetch = FetchType.LAZY,cascade = CascadeType.ALL)
+    private  List<PengajarModel> listPengajar;
 
-    public void setDescription(String description) {
-        this.description = description;
-    }
+    @ManyToMany
+    @JoinTable(name = "penyelenggara_course", joinColumns = @JoinColumn(name = "code"), inverseJoinColumns = @JoinColumn(name = "no_penyelenggara"))
+    List<PenyelenggaraModel> listPenyelenggara;
 
-    public int getJumlahSks() {
-        return jumlahSks;
-    }
 
-    public void setJumlahSks(int jumlahSks) {
-        this.jumlahSks = jumlahSks;
-    }
 }
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PengajarModel.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PengajarModel.java
new file mode 100644
index 0000000000000000000000000000000000000000..920c65127ab74ccc0b5df6835ae30d001bb343b4
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PengajarModel.java
@@ -0,0 +1,44 @@
+package apap.tutorial.belajarbelajar.model;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.hibernate.annotations.OnDelete;
+import org.hibernate.annotations.OnDeleteAction;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+@AllArgsConstructor
+@NoArgsConstructor
+@Setter
+@Getter
+@Entity
+@Table(name = "pengajar")
+public class PengajarModel implements Serializable{
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long noPengajar;
+
+    @NotNull
+    @Size(max = 30)
+    @Column(name = "nama_pengajar",nullable = false)
+    private String namaPengajar;
+
+    @NotNull
+    @Column(name = "is_pengajar_universitas",nullable = false)
+    private Boolean isPengajarUniversitas;
+    @ManyToOne(fetch = FetchType.EAGER, optional = false)
+    @JoinColumn(name = "code",referencedColumnName = "code",nullable = false)
+    @OnDelete(action = OnDeleteAction.CASCADE)
+    private CourseModel course;
+
+
+
+
+}
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PenyelenggaraModel.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PenyelenggaraModel.java
new file mode 100644
index 0000000000000000000000000000000000000000..4705681a7d5e99cb4b6e0ff03f8b26b0d81d525d
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PenyelenggaraModel.java
@@ -0,0 +1,40 @@
+package apap.tutorial.belajarbelajar.model;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.hibernate.annotations.OnDelete;
+import org.hibernate.annotations.OnDeleteAction;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+@AllArgsConstructor
+@NoArgsConstructor
+@Setter
+@Getter
+@Entity
+@Table(name = "penyelenggara")
+public class PenyelenggaraModel implements Serializable {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long noPenyelenggara;
+
+    @NotNull
+    @Size(max = 30)
+    @Column(name = "nama_penyelenggara",nullable = false)
+    private String namaPenyelenggara;
+
+    @NotNull
+    @Column(name = "jenis_lembaga",nullable = false)
+    private Integer jenisLembaga;
+
+    @ManyToMany(mappedBy = "listPenyelenggara")
+    List<CourseModel> listCourse;
+
+}
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/CourseDb.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/CourseDb.java
new file mode 100644
index 0000000000000000000000000000000000000000..e80eb2cd16d2212a3f97e6463ff731aa8dac2d15
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/CourseDb.java
@@ -0,0 +1,23 @@
+package apap.tutorial.belajarbelajar.repository;
+import apap.tutorial.belajarbelajar.model.CourseModel;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Optional;
+
+@Repository
+public interface CourseDb extends JpaRepository<CourseModel, String> {
+    //JPA
+    Optional<CourseModel> findByCode(String code);
+
+    @Query("SELECT c FROM CourseModel c WHERE c.code = :code")
+    Optional<CourseModel> findByCodeUsingQuery(@Param("code") String code);
+
+    List<CourseModel> findAllByOrderByNameCourse();
+
+
+
+}
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PengajarDb.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PengajarDb.java
new file mode 100644
index 0000000000000000000000000000000000000000..99eaf338fc2ae1daebec97f5eb5f6de813f4c041
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PengajarDb.java
@@ -0,0 +1,13 @@
+package apap.tutorial.belajarbelajar.repository;
+
+import apap.tutorial.belajarbelajar.model.PengajarModel;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface PengajarDb extends JpaRepository<PengajarModel, Long>{
+
+    Optional<PengajarModel> findByNoPengajar(Long noPengajar);
+}
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PenyelenggaraDb.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PenyelenggaraDb.java
new file mode 100644
index 0000000000000000000000000000000000000000..d94a0ed04434f9437ea7f28289c9f8e39f7d5170
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PenyelenggaraDb.java
@@ -0,0 +1,9 @@
+package apap.tutorial.belajarbelajar.repository;
+import apap.tutorial.belajarbelajar.model.PengajarModel;
+import apap.tutorial.belajarbelajar.model.PenyelenggaraModel;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+@Repository
+public interface PenyelenggaraDb extends JpaRepository<PenyelenggaraModel, Long>{
+
+}
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseService.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseService.java
index 9fb6349dbdd9d002b7ff21994efe216b268e2db0..2965f5c8dd1bb2d73a8e38c85954962e6670cec1 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseService.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseService.java
@@ -1,5 +1,7 @@
 package apap.tutorial.belajarbelajar.service;
 import apap.tutorial.belajarbelajar.model.CourseModel;
+import apap.tutorial.belajarbelajar.model.PengajarModel;
+
 import java.util.List;
 
 public interface CourseService {
@@ -9,6 +11,12 @@ public interface CourseService {
     List<CourseModel> getListCourse();
     //mendapatkan data course berdasarkan code course
     CourseModel getCourseByCodeCourse(String code);
+    CourseModel getCourseByCodeCourseQuery(String code);
+    CourseModel updateCourse(CourseModel course);
+    List<CourseModel> getListSortName();
+
+    void deleteCourse(CourseModel course);
+
 
 
 
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseServiceImpl.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseServiceImpl.java
index 8080b25b0ce9cd0d2f1bb0a884e5e42c17fd9fed..b4a23ae6669c07f4aa40c9ca2d42bdd0a1a0c2c7 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseServiceImpl.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseServiceImpl.java
@@ -1,39 +1,58 @@
 package apap.tutorial.belajarbelajar.service;
+
+import apap.tutorial.belajarbelajar.repository.CourseDb;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
+
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import apap.tutorial.belajarbelajar.model.CourseModel;
 
+import javax.transaction.Transactional;
+
 @Service
+@Transactional
 public class CourseServiceImpl implements CourseService{
-    private List<CourseModel> listCourse;
-
-    public CourseServiceImpl(){
-        listCourse = new ArrayList<>();
-    }
-
+    @Autowired
+    CourseDb courseDb;
     @Override
     public void addCourse(CourseModel course) {
-        listCourse.add(course);
-
+        courseDb.save(course);
     }
-
     @Override
     public List<CourseModel> getListCourse() {
-        return listCourse;
-    }
 
+        return courseDb.findAll();
+    }
     @Override
     public CourseModel getCourseByCodeCourse(String code) {
-        for(CourseModel course : listCourse){
-            if (course.getCode().equals(code)){
-                return course;
-            }
-        }
-        return null;
-    }
-
+        Optional<CourseModel> course = courseDb.findByCode(code);
+        if (course.isPresent()){
+            return course.get();
+        } else return null;
 
+    }
+    @Override
+    public CourseModel getCourseByCodeCourseQuery(String code) {
+        Optional<CourseModel> course = courseDb.findByCodeUsingQuery(code);
+        if (course.isPresent()){
+            return course.get();
+        } else return null;
+    }
+    @Override
+    public CourseModel updateCourse(CourseModel course) {
+        courseDb.save(course);
+        return course;
+    }
 
+    @Override
+    public List<CourseModel> getListSortName() {
+        return courseDb.findAllByOrderByNameCourse();
+    }
 
+    @Override
+    public void deleteCourse(CourseModel course) {
+        courseDb.delete(course);
+    }
 }
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarService.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarService.java
new file mode 100644
index 0000000000000000000000000000000000000000..898af630014b59eb515da3b7620b2500382424c3
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarService.java
@@ -0,0 +1,11 @@
+package apap.tutorial.belajarbelajar.service;
+import apap.tutorial.belajarbelajar.model.CourseModel;
+import apap.tutorial.belajarbelajar.model.PengajarModel;
+import java.util.List;
+
+public interface PengajarService {
+    void addPengajar(PengajarModel pengajar);
+    void updatePengajar(PengajarModel pengajar);
+    PengajarModel getPengajarById(Long noPengajar);
+    void deletePengajar(PengajarModel pengajar);
+}
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarServiceImpl.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..0b669272826c954bee009a5fd6bdf226c209adf8
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarServiceImpl.java
@@ -0,0 +1,41 @@
+package apap.tutorial.belajarbelajar.service;
+import apap.tutorial.belajarbelajar.model.CourseModel;
+import apap.tutorial.belajarbelajar.repository.PengajarDb;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import apap.tutorial.belajarbelajar.model.PengajarModel;
+
+import javax.transaction.Transactional;
+@Service
+@Transactional
+public class PengajarServiceImpl implements PengajarService{
+    @Autowired
+    PengajarDb pengajarDb;
+
+    @Override
+    public void addPengajar(PengajarModel pengajar) {
+        pengajarDb.save(pengajar);
+    }
+
+    @Override
+    public void updatePengajar(PengajarModel pengajar) {
+        pengajarDb.save(pengajar);
+    }
+
+    @Override
+    public PengajarModel getPengajarById(Long noPengajar) {
+        Optional<PengajarModel> pengajar = pengajarDb.findByNoPengajar(noPengajar);
+        if (pengajar.isPresent()){
+            return pengajar.get();
+        } else return null;
+    }
+
+    @Override
+    public void deletePengajar(PengajarModel pengajar) {
+        pengajarDb.delete(pengajar);
+    }
+}
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraService.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraService.java
new file mode 100644
index 0000000000000000000000000000000000000000..df1d86659f090b77305a6a2d3cbfffde0ab8cbcd
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraService.java
@@ -0,0 +1,8 @@
+package apap.tutorial.belajarbelajar.service;
+
+import apap.tutorial.belajarbelajar.model.PenyelenggaraModel;
+import java.util.List;
+
+public interface PenyelenggaraService {
+    void addPenyelenggara(PenyelenggaraModel penyelenggara);
+}
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraServiceImpl.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..2e24d03fe6fb6e942c8fee5c309092f1c579d0e1
--- /dev/null
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraServiceImpl.java
@@ -0,0 +1,25 @@
+package apap.tutorial.belajarbelajar.service;
+import apap.tutorial.belajarbelajar.model.PengajarModel;
+import apap.tutorial.belajarbelajar.model.PenyelenggaraModel;
+import apap.tutorial.belajarbelajar.repository.CourseDb;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+import apap.tutorial.belajarbelajar.repository.PenyelenggaraDb;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import apap.tutorial.belajarbelajar.model.CourseModel;
+
+import javax.transaction.Transactional;
+@Service
+@Transactional
+public class PenyelenggaraServiceImpl implements PenyelenggaraService {
+    @Autowired
+    PenyelenggaraDb penyelenggaraDb;
+
+    @Override
+    public void addPenyelenggara(PenyelenggaraModel penyelenggara) {
+        penyelenggaraDb.save(penyelenggara);
+    }
+}
diff --git a/belajarbelajar/src/main/resources/application.properties b/belajarbelajar/src/main/resources/application.properties
index 8b137891791fe96927ad78e64b0aad7bded08bdc..9be6051e081b0d6bde7187c1cb54fe1470398e90 100644
--- a/belajarbelajar/src/main/resources/application.properties
+++ b/belajarbelajar/src/main/resources/application.properties
@@ -1 +1,16 @@
+#konfigurasi untuk koneksi MySQL
+spring.sql.init.platform=mysql
+spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 
+#sesuaikan NAMA_DATABASE dengan nama database anda
+spring.datasource.url=jdbc:mysql://localhost:3306/belajarbelajar?useSSL=false&serverTimezone=Asia/Jakarta
+
+#sesuaikan dengan NAMA dan PASSWORD mysql anda
+spring.datasource.username=root
+spring.datasource.password=
+
+#optimize query untuk db MySQL
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
+
+#pembuatan database (create || create drop || validate || update)
+spring.jpa.hibernate.ddl-auto=update
diff --git a/belajarbelajar/src/main/resources/templates/add-course.html b/belajarbelajar/src/main/resources/templates/add-course.html
index 3de1254ad975faefd7d634f508b94fb586988133..a890d8030feb145e4b71ce226c926a73ac56e2e7 100644
--- a/belajarbelajar/src/main/resources/templates/add-course.html
+++ b/belajarbelajar/src/main/resources/templates/add-course.html
@@ -1,13 +1,20 @@
 <!DOCTYPE html>
 <html lang="en" xmlns:th="http://thymeleaf.org">
 <head>
-    <meta charset="UTF-8"/>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-    <title>Add Course</title>
-</head>
+    <title>BelajarBelajar</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
 <body>
-  <h2 th:text="'Course dengan code '+${code}+' berhasil ditambahkan'"> </h2>
-  <a href="/course/viewAll">Kembali</a>
+<div class="container">
+    <div class="card m-4 p-4">
+        <div class="card-body">
+            <div class="justify-content-center">
+                <h2 th:text="'Course dengan code ' + ${code} + ' berhasil ditambahkan.'"></h2>
+                <br>
+                <a class="btn btn-primary" href="/">Home</a>
+            </div>
+        </div>
+    </div>
+</div>
+
 </body>
 </html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/add-pengajar.html b/belajarbelajar/src/main/resources/templates/add-pengajar.html
new file mode 100644
index 0000000000000000000000000000000000000000..ffc7fa102833f71c1dac9a270548109c7574055d
--- /dev/null
+++ b/belajarbelajar/src/main/resources/templates/add-pengajar.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://thymeleaf.org">
+<head>
+  <title>BelajarBelajar</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
+<body>
+<div class="container">
+  <div class="card m-4 p-4">
+    <div class="card-body">
+      <div class="justify-content-center">
+        <h2 th:text="'Pengajar dengan no pengajar ' + ${noPengajar} + ' berhasil ditambahkan.'"></h2>
+        <br>
+        <a class="btn btn-primary" href="/">Home</a>
+      </div>
+    </div>
+  </div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/delete-course.html b/belajarbelajar/src/main/resources/templates/delete-course.html
index 0826c0c03f657cb9d5bad20c75908c5ebb312bd4..27858a4b449904196a74d7e30b863abc23b2b304 100644
--- a/belajarbelajar/src/main/resources/templates/delete-course.html
+++ b/belajarbelajar/src/main/resources/templates/delete-course.html
@@ -1,13 +1,14 @@
 <!DOCTYPE html>
 <html lang="en" xmlns:th="http://thymeleaf.org">
+
 <head>
-    <meta charset="UTF-8"/>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-    <title>Delete Course</title>
+    <title>belajarbelajar</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
 </head>
+
 <body>
-<h2 th:text="'Course dengan code '+${code}+' berhasil dihapus'"> </h2>
-<a href="/course/viewAll">Kembali</a>
+<h2 th:text="'Course dengan kode ' + ${code} + ' berhasil dihapus' "></h2>
+<a class="btn btn-primary" href="/">Home</a>
 </body>
+
 </html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/delete-pengajar.html b/belajarbelajar/src/main/resources/templates/delete-pengajar.html
new file mode 100644
index 0000000000000000000000000000000000000000..b7d2ca0094628c561e1939090617e9a15f9df8e6
--- /dev/null
+++ b/belajarbelajar/src/main/resources/templates/delete-pengajar.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://thymeleaf.org">
+
+<head>
+  <title>belajarbelajar</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
+</head>
+
+<body>
+<h2 th:text="'Pengajar dengan nomor pengajar ' + ${noPengajar} + ' berhasil dihapus' "></h2>
+<a class="btn btn-primary" href="/">Home</a>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/error.html b/belajarbelajar/src/main/resources/templates/error.html
index 99592c7e36251a500c951873ddf8a159dffb07d5..18c5e4642335b2d1bf0c7f5ef88e458581ff06a6 100644
--- a/belajarbelajar/src/main/resources/templates/error.html
+++ b/belajarbelajar/src/main/resources/templates/error.html
@@ -1,13 +1,11 @@
 <!DOCTYPE html>
 <html lang="en" xmlns:th="http://thymeleaf.org">
 <head>
-  <meta charset="UTF-8"/>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
-  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-  <title>Error</title>
-</head>
+  <title>BelajarBelajar</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
 <body>
 <h2 th:text="'Error: '+${errormsg}"> </h2>
-<a href="/course/viewAll">Kembali</a>
+<a class="btn btn-primary" href="/">Home</a>
+<a class="btn btn-primary" href="/course/viewall">Kembali</a>
 </body>
 </html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/form-add-course.html b/belajarbelajar/src/main/resources/templates/form-add-course.html
new file mode 100644
index 0000000000000000000000000000000000000000..3c0cebf0798a3679fb161c6213696c1c59ab3d17
--- /dev/null
+++ b/belajarbelajar/src/main/resources/templates/form-add-course.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://thymeleaf.org">
+<head>
+  <title>BelajarBelajar</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
+<body>
+<div class="container">
+  <div class="card m-4 p-4">
+    <div class="card-body">
+      <div class="justify-content-center">
+        <h2>Tambah Course</h2>
+        <br>
+        <form th:action="@{/course/add}" th:object="${course}" method="POST">
+          Code Course: <br>
+          <input class="form-control" type="text" name="code"/>
+          <br><br>
+
+          Nama Course: <br>
+          <input class="form-control" type="text" name="nameCourse"/>
+          <br><br>
+
+          Description: <br>
+          <input class="form-control" type="text" name="description"/>
+          <br><br>
+
+          Jumlah SKS: <br>
+          <input required class="form-control" type="number" name="jumlahSks" />
+          <br><br>
+
+          Tanggal Dibuka: <br>
+          <input required class="form-control" type="datetime-local" name="tanggalDimulai" />
+          <br><br>
+
+          Tanggal Ditutup: <br>
+          <input required class="form-control" type="datetime-local" name="tanggalBerakhir" />
+          <br><br>
+
+          <button class="btn btn-primary" type="submit">Submit</button>
+          <a class="btn btn-primary" href="/">Home</a>
+        </form>
+      </div>
+    </div>
+  </div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/form-add-pengajar.html b/belajarbelajar/src/main/resources/templates/form-add-pengajar.html
new file mode 100644
index 0000000000000000000000000000000000000000..e873e2734388688d336fcae550e2ab1fd06131b8
--- /dev/null
+++ b/belajarbelajar/src/main/resources/templates/form-add-pengajar.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://thymeleaf.org">
+<head>
+  <title>BelajarBelajar</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
+<body>
+<div class="container">
+  <div class="card m-4 p-4">
+    <div class="card-body">
+      <div class="justify-content-center">
+        <h2>Tambah Pengajar</h2>
+        <br>
+        <form th:action="@{/pengajar/add}" th:object="${pengajar}" method="POST">
+          <input type="hidden" th:field="*{course}" />
+
+          Nama Pengajar : <br>
+          <input class="form-control" type="text" name="namaPengajar"/>
+          <br>
+
+          Tipe Pengajar : <br>
+          <select name="isPengajarUniversitas">
+            <option value="0">Bukan Pengajar Universitas</option>
+            <option value="1">Pengajar Universitas</option>
+          </select>
+          <br><br>
+
+          <button class="btn btn-primary" type="submit">Submit</button>
+          <a class="btn btn-primary" href="/">Home</a>
+        </form>
+      </div>
+    </div>
+  </div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/form-update-course.html b/belajarbelajar/src/main/resources/templates/form-update-course.html
new file mode 100644
index 0000000000000000000000000000000000000000..d30486045232251478c8613be1d1ef7c8d7b8caa
--- /dev/null
+++ b/belajarbelajar/src/main/resources/templates/form-update-course.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://thymeleaf.org">
+<head>
+  <title>BelajarBelajar</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
+<body>
+<div class="container">
+  <div class="card m-4 p-4">
+    <div class="card-body">
+      <div class="justify-content-center">
+        <h2>Update Course</h2>
+        <br>
+        <form th:action="@{/course/update}" th:object="${course}" method="POST">
+
+          <input type="hidden" th:field="*{code}" />
+
+
+          Nama Course: <br>
+          <input class="form-control" type="text" name="nameCourse" th:value="*{nameCourse}"/>
+          <br><br>
+
+          Description: <br>
+          <input class="form-control" type="text" name="description" th:value="*{description}"/>
+          <br><br>
+
+          Jumlah SKS: <br>
+          <input required class="form-control" type="number" name="jumlahSks" th:value="*{jumlahSks}" />
+          <br><br>
+
+          Tanggal Dibuka: <br>
+          <input required class="form-control" type="datetime-local" name="tanggalDimulai" th:value="*{tanggalDimulai}"/>
+          <br><br>
+
+          Tanggal Ditutup: <br>
+          <input required class="form-control" type="datetime-local" name="tanggalBerakhir" th:value="*{tanggalBerakhir}"/>
+          <br><br>
+
+
+
+          <button class="btn btn-primary" type="submit">Submit</button>
+          <a class="btn btn-primary" href="/course/viewall">Kembali</a>
+        </form>
+      </div>
+    </div>
+  </div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/form-update-pengajar.html b/belajarbelajar/src/main/resources/templates/form-update-pengajar.html
new file mode 100644
index 0000000000000000000000000000000000000000..b3575e7982de85f708ae35691ab5f4a49ed40524
--- /dev/null
+++ b/belajarbelajar/src/main/resources/templates/form-update-pengajar.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://thymeleaf.org">
+<head>
+    <title>BelajarBelajar</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
+<body>
+<div class="container">
+    <div class="card m-4 p-4">
+        <div class="card-body">
+            <div class="justify-content-center">
+                <h2>Update Pengajar</h2>
+                <br>
+                <form th:action="@{/pengajar/update/}" th:object="${pengajar}" method="POST">
+                    <input type="hidden" th:field="*{course}" />
+                    <input type="hidden"  th:field="*{noPengajar}" />
+
+                    Nama Course: <br>
+                    <input class="form-control" type="text" name="namaPengajar" th:value="*{namaPengajar}"/>
+                    <br><br>
+
+                    Tipe Pengajar : <br>
+                    <select name="isPengajarUniversitas">
+                        <option value="0">Bukan Pengajar Universitas</option>
+                        <option value="1">Pengajar Universitas</option>
+                    </select>
+                    <br><br>
+
+
+
+
+
+                    <button class="btn btn-primary" type="submit">Submit</button>
+                    <a class="btn btn-primary" href="/course/viewall">Kembali</a>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/home.html b/belajarbelajar/src/main/resources/templates/home.html
new file mode 100644
index 0000000000000000000000000000000000000000..bfc22ecbf7ef0593d33d94fe85b21a0c4de5ae5c
--- /dev/null
+++ b/belajarbelajar/src/main/resources/templates/home.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://thymeleaf.org">
+<head>
+  <title>BelajarBelajar</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
+<body>
+<div class="container">
+  <div class="card m-4 p-4">
+    <div class="card-body">
+      <div class="justify-content-center">
+        <h2>Welcome to BelajarBelajar!</h2>
+        <br>
+        <a class="btn btn-primary" href="/course/add">Tambah Course</a>
+        <a class="btn btn-primary" href="/course/viewall">Lihat Semua Course</a>
+        <a class="btn btn-primary" href="/course/viewAllSort">Lihat Semua Course Sorted</a>
+      </div>
+    </div>
+  </div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/update-course.html b/belajarbelajar/src/main/resources/templates/update-course.html
index a7dc0d26a3bbdc5a79a40f34acac6f831f82a8c7..4fb70f5c7e46df92f1b42bb869d9758bc1b4d6b9 100644
--- a/belajarbelajar/src/main/resources/templates/update-course.html
+++ b/belajarbelajar/src/main/resources/templates/update-course.html
@@ -1,18 +1,20 @@
 <!DOCTYPE html>
 <html lang="en" xmlns:th="http://thymeleaf.org">
 <head>
-    <meta charset="UTF-8"/>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-    <title>View Course</title>
-</head>
+    <title>BelajarBelajar</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
 <body>
-<h2 >Update Course </h2>
-<h2 th:text="'Course dengan code '+${course.code}+' berhasil diubah sks-nya menjadi '+${course.jumlahSks}+' sks'"> </h2>
-<h3 th:text="'Code course: '+ ${course.code}"></h3>
-<h3 th:text="'Nama course: '+ ${course.nameCourse}"></h3>
-<h3 th:text="'Deskripsi course: '+ ${course.description}"></h3>
-<h3 th:text="'jumlah sks course: '+ ${course.jumlahSks}"></h3>
-<a href="/course/viewAll">Kembali</a>
+<div class="container">
+    <div class="card m-4 p-4">
+        <div class="card-body">
+            <div class="justify-content-center">
+                <h2 th:text="'Course dengan code ' + ${code} + ' berhasil diupdate.'"></h2>
+                <br>
+                <a class="btn btn-primary" href="/">Home</a>
+            </div>
+        </div>
+    </div>
+</div>
+
 </body>
 </html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/update-pengajar.html b/belajarbelajar/src/main/resources/templates/update-pengajar.html
new file mode 100644
index 0000000000000000000000000000000000000000..5b13df95ef02de440173ef4721150f971dab2b69
--- /dev/null
+++ b/belajarbelajar/src/main/resources/templates/update-pengajar.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://thymeleaf.org">
+<head>
+  <title>BelajarBelajar</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
+<body>
+<div class="container">
+  <div class="card m-4 p-4">
+    <div class="card-body">
+      <div class="justify-content-center">
+        <h2 th:text="'Pengajar bernama '+ ${namaPengajar} +' di Course dengan code ' + ${code} + ' berhasil diupdate.'"></h2>
+        <br>
+        <a class="btn btn-primary" href="/">Home</a>
+      </div>
+    </div>
+  </div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/view-course.html b/belajarbelajar/src/main/resources/templates/view-course.html
index f76c2307f46babe2750a043cd4f21d4b0553aff5..784708c5c37e3d216b4b503c12098c6e21429bcf 100644
--- a/belajarbelajar/src/main/resources/templates/view-course.html
+++ b/belajarbelajar/src/main/resources/templates/view-course.html
@@ -1,17 +1,43 @@
 <!DOCTYPE html>
 <html lang="en" xmlns:th="http://thymeleaf.org">
 <head>
-    <meta charset="UTF-8"/>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-    <title>View Course</title>
-</head>
+    <title>BelajarBelajar</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
 <body>
-    <h2 >Informasi Course </h2>
-    <h3 th:text="'Code course: '+ ${course.code}"></h3>
-    <h3 th:text="'Nama course: '+ ${course.nameCourse}"></h3>
-    <h3 th:text="'Deskripsi course: '+ ${course.description}"></h3>
-    <h3 th:text="'jumlah sks course: '+ ${course.jumlahSks}"></h3>
-    <a href="/course/viewAll">Kembali</a>
+<div class="container">
+    <div class="card m-4 p-4">
+        <div class="card-body">
+            <div class="justify-content-center">
+                <h2>Detail Course</h2>
+                <br>
+                <p th:text="'Code Course: ' + ${course.code}"></p>
+                <p th:text="'Nama Course: ' + ${course.nameCourse}"></p>
+                <p th:text="'Description: ' + ${course.description}"></p>
+                <p th:text="'Jumlah SKS: ' + ${course.jumlahSks}"></p>
+                <p th:text="'Tanggal Dimulai: ' + ${#temporals.format(course.tanggalDimulai, 'dd MMMM yyyy HH:mm')}"></p>
+                <p th:text="'Tanggal Berakhir: ' + ${#temporals.format(course.tanggalBerakhir, 'dd MMMM yyyy HH:mm')}"></p>
+                <a class="btn btn-danger" th:href="@{/course/delete/} + ${course.code}">Delete Course</a>
+
+                <div class="col">
+                    <br>
+                    <h4>Pengajar </h4>
+                    <hr>
+                    <div th:each="pengajar : ${listPengajar}">
+                        <p th:text="'Nama: ' + ${pengajar.namaPengajar}"></p>
+                        <p th:if="${pengajar.isPengajarUniversitas == false}">Pekerjaan: Non-Dosen Universitas</p>
+                        <p th:if="${pengajar.isPengajarUniversitas == true}">Pekerjaan: Dosen Universitas</p>
+                        <a class="btn btn-success" th:href="@{/pengajar/update/} + ${pengajar.noPengajar}">Update Pengajar</a>
+                        <a class="btn btn-danger" th:href="@{/pengajar/delete/} + ${pengajar.noPengajar}">Delete Pengajar</a>
+                        <hr>
+                    </div>
+                </div>
+                <br>
+                <a class="btn btn-primary" href="/course/viewall">Kembali</a>
+                <a class="btn btn-primary" th:href="@{/pengajar/add/} + ${course.code}">Tambah Pengajar</a>
+            </div>
+        </div>
+    </div>
+</div>
+
 </body>
 </html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/viewall-course.html b/belajarbelajar/src/main/resources/templates/viewall-course.html
index 2a9a0e33a009567ad5033634c42f7d4743049691..62ae9d9ddb304cede6a73d5c3accf815a068901e 100644
--- a/belajarbelajar/src/main/resources/templates/viewall-course.html
+++ b/belajarbelajar/src/main/resources/templates/viewall-course.html
@@ -1,20 +1,37 @@
 <!DOCTYPE html>
 <html lang="en" xmlns:th="http://thymeleaf.org">
 <head>
-    <meta charset="UTF-8"/>
-    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-    <title>View All Course</title>
-</head>
+    <title>BelajarBelajar</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"></head>
 <body>
-<h2 >Daftar Seluruh Course </h2>
-<div th:each="course: ${listCourse}">
-    <h3 th:text="'Code course: '+ ${course.code}"></h3>
-    <h3 th:text="'Nama course: '+ ${course.nameCourse}"></h3>
-    <h3 th:text="'Deskripsi course: '+ ${course.description}"></h3>
-    <h3 th:text="'jumlah sks course: '+ ${course.jumlahSks}"></h3>
+<div class="container">
+    <div class="card m-4 p-4">
+        <div class="card-body">
+            <div class="justify-content-center">
+                <h2>List Course</h2>
+                <br>
+                <div th:each="course : ${listCourse}">
+                    <p th:text="'Code Course: ' + ${course.code}"></p>
+                    <p th:text="'Nama Course: ' + ${course.nameCourse}"></p>
+                    <p th:text="'Description: ' + ${course.description}"></p>
+                    <p th:text="'Jumlah SKS: ' + ${course.jumlahSks}"></p>
+                    <p th:text="'Tanggal Dimulai: ' + ${#temporals.format(course.tanggalDimulai, 'dd MMMM yyyy HH:mm')}"></p>
+                    <p th:text="'Tanggal Berakhir: ' + ${#temporals.format(course.tanggalBerakhir, 'dd MMMM yyyy HH:mm')}"></p>
+                    <div class="col">
+                        <a class="btn btn-primary" th:href="@{/course/view(code=${course.code})}">Detail
+                            Course</a>
+                        <a class="btn btn-primary" th:href="@{/course/view-query(code=${course.code})}">Detail
+                            Course By Query</a>
+                        <a class="btn btn-primary" th:href="@{/course/update/} + ${course.code}">Update Course</a>
+                    </div>
+                    <hr>
+                </div>
+                <br>
+                <a class="btn btn-primary" href="/">Home</a>
+            </div>
+        </div>
+    </div>
 </div>
 
-<a href="/course/viewAll">Kembali</a>
 </body>
 </html>
\ No newline at end of file