diff --git a/src/main/java/id/ac/ui/cs/advprog/tutorial0/controller/CourseController.java b/src/main/java/id/ac/ui/cs/advprog/tutorial0/controller/CourseController.java
new file mode 100644
index 0000000000000000000000000000000000000000..8f33114b89c7b24dcb2edc09e7d3d756f3a38d2f
--- /dev/null
+++ b/src/main/java/id/ac/ui/cs/advprog/tutorial0/controller/CourseController.java
@@ -0,0 +1,46 @@
+package id.ac.ui.cs.advprog.tutorial0.controller;
+
+import id.ac.ui.cs.advprog.tutorial0.exception.DuplicateCourseNameException;
+import id.ac.ui.cs.advprog.tutorial0.model.Course;
+import id.ac.ui.cs.advprog.tutorial0.service.CourseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Controller
+@RequestMapping("/course")
+public class CourseController {
+
+    @Autowired
+    private CourseService service;
+
+    @GetMapping("/list")
+    public String CourseListPage(Model model) {
+        List<Course> allCourses = service.findAll();
+        model.addAttribute("courses", allCourses);
+        return "courseList";
+    }
+
+    @GetMapping("/create")
+    public String createCoursePage(Model model) {
+        Course Course = new Course();
+        model.addAttribute("course", Course);
+        return "createCourse";
+    }
+
+    @PostMapping("/create")
+    public String createCoursePost(@ModelAttribute Course course,Model templateVariables){
+        try{
+            service.create(course);
+        }catch (DuplicateCourseNameException e){
+            templateVariables.addAttribute("error", e);
+            templateVariables.addAttribute("course", course);
+            return "createCourse";
+        }
+        return "redirect:list";
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/java/id/ac/ui/cs/advprog/tutorial0/exception/DuplicateCourseNameException.java b/src/main/java/id/ac/ui/cs/advprog/tutorial0/exception/DuplicateCourseNameException.java
new file mode 100644
index 0000000000000000000000000000000000000000..d20abaad7fa12485230f0da503f541e80337ab0f
--- /dev/null
+++ b/src/main/java/id/ac/ui/cs/advprog/tutorial0/exception/DuplicateCourseNameException.java
@@ -0,0 +1,9 @@
+package id.ac.ui.cs.advprog.tutorial0.exception;
+
+public class DuplicateCourseNameException extends RuntimeException {
+    public DuplicateCourseNameException(String course) {
+        super(String.format("Course %s already exists", course));
+    }
+
+}
+
diff --git a/src/main/java/id/ac/ui/cs/advprog/tutorial0/repository/CourseRepository.java b/src/main/java/id/ac/ui/cs/advprog/tutorial0/repository/CourseRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b40f83997bb631f1a4d68d6a0db942a4c5839e1
--- /dev/null
+++ b/src/main/java/id/ac/ui/cs/advprog/tutorial0/repository/CourseRepository.java
@@ -0,0 +1,24 @@
+package id.ac.ui.cs.advprog.tutorial0.repository;
+
+import id.ac.ui.cs.advprog.tutorial0.model.Course;
+import org.springframework.stereotype.Repository;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+@Repository
+public class CourseRepository {
+
+    private final List<Course> courseInMemory = new ArrayList<>();
+
+    public Course create(Course course) {
+        courseInMemory.add(course);
+        return course;
+    }
+
+    public Iterator<Course> findAll(){
+        return courseInMemory.iterator();
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/resources/templates/courseList.html b/src/main/resources/templates/courseList.html
new file mode 100644
index 0000000000000000000000000000000000000000..dc913ab10f30c1d504bc878a9108803f80609bd4
--- /dev/null
+++ b/src/main/resources/templates/courseList.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Course's List</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
+</head>
+<body>
+    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
+        <div class="container-fluid">
+            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+            <div class="collapse navbar-collapse" id="navbarNav">
+                <ul class="navbar-nav">
+                    <li class="nav-item">
+                        <a class="nav-link active" aria-current="page" th:href="@{../}">Home</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" th:href="@{/student/list}">Student</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" th:href="@{/course/list}">Course</a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </nav>
+<h2>Course's List</h2>
+<a th:href="@{/course/create}" class="btn btn-primary btn-sm mb-3" >Create course</a>
+
+<table class="table">
+    <thead>
+    <tr>
+        <th scope="col">Course ID</th>
+        <th scope="col">Course Name</th>
+        <th scope="col">Vacancy Status</th>
+    </tr>
+    </thead>
+    <tbody th:each="course: ${courses}">
+    <tr>
+        <td th:text="${course.courseId}"></td>
+        <td th:text="${course.name}"></td>
+        <td th:text="${course.vacancyStatus}"></td>
+    </tr>
+
+    </tbody>
+</table>
+
+
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/createCourse.html b/src/main/resources/templates/createCourse.html
new file mode 100644
index 0000000000000000000000000000000000000000..b6e8eacd194b099a40d523c53f90e584fd4d681c
--- /dev/null
+++ b/src/main/resources/templates/createCourse.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Create new Course</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
+</head>
+<body>
+    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
+        <div class="container-fluid">
+            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+            <div class="collapse navbar-collapse" id="navbarNav">
+                <ul class="navbar-nav">
+                    <li class="nav-item">
+                        <a class="nav-link active" aria-current="page" th:href="@{../}">Home</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" th:href="@{/student/list}">Student</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" th:href="@{/course/list}">Course</a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </nav>
+<h3>Create new Course</h3>
+<div th:if="${error!=null}" class="alert alert-danger" role="alert">
+    Duplicate course name
+</div>
+<form th:action="@{/course/create}" th:object="${course}" method="post">
+    <div class="form-group">
+        <label for="nameInput">Name</label>
+        <input th:field="*{name}" type="text" class="form-control" id="nameInput" aria-describedby="nameHelp" placeholder="Enter course's name">
+        <small id="nameHelp" class="form-text text-muted">Please enter course name.</small>
+    </div>
+
+    <div class="form-group">
+        <div class="form-group">
+            <label for="vacancyCheck">Vacancy Status</label>
+            <input type="checkbox" th:field="*{vacancyStatus}" id="vacancyCheck"/>
+        </div>
+    </div>
+
+    <button type="submit" class="btn btn-primary">Submit</button>
+</form>
+<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/createStudent.html b/src/main/resources/templates/createStudent.html
index 2f89459b85bcb6154c8afd33db3cd5a410b49038..a3e9fea7f4c6925388781b0a2d1303ba088ecd4e 100644
--- a/src/main/resources/templates/createStudent.html
+++ b/src/main/resources/templates/createStudent.html
@@ -6,6 +6,26 @@
     <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
 </head>
 <body>
+    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
+        <div class="container-fluid">
+            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+            <div class="collapse navbar-collapse" id="navbarNav">
+                <ul class="navbar-nav">
+                    <li class="nav-item">
+                        <a class="nav-link active" aria-current="page" th:href="@{../}">Home</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" th:href="@{/student/list}">Student</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" th:href="@{/course/list}">Course</a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </nav>
 <h3>Create new Student</h3>
 <div th:if="${error!=null}" class="alert alert-danger" role="alert">
     Duplicate student name
diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html
index f4270d833140d4301340e4fa1beeedf7d8a92ad2..e0251720f75eb91c4595b67f5a2f026dd512bf21 100644
--- a/src/main/resources/templates/home.html
+++ b/src/main/resources/templates/home.html
@@ -5,7 +5,26 @@
     <title>Home</title>
 </head>
 <body>
-
+<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
+    <div class="container-fluid">
+        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
+            <span class="navbar-toggler-icon"></span>
+        </button>
+        <div class="collapse navbar-collapse" id="navbarNav">
+            <ul class="navbar-nav">
+                <li class="nav-item">
+                    <a class="nav-link active" aria-current="page" th:href="@{../}">Home</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" th:href="@{/student/list}">Student</a>
+                </li>
+                <li class="nav-item">
+                    <a class="nav-link" th:href="@{/course/list}">Course</a>
+                </li>
+            </ul>
+        </div>
+    </div>
+</nav>
 <h3 th:if="${name!=null}" th:text="${'Welcome home, ' + name}"></h3>
 <h3 th:unless="${name!=null}">Welcome</h3>
 
diff --git a/src/main/resources/templates/studentList.html b/src/main/resources/templates/studentList.html
index 84ab6ad54e0980ae984cb2585ad00f446513b60c..74985c107c336abc32455599b44246accfc1d0c7 100644
--- a/src/main/resources/templates/studentList.html
+++ b/src/main/resources/templates/studentList.html
@@ -6,8 +6,27 @@
     <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
 </head>
 <body>
-
-<h2>Student' List</h2>
+    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
+        <div class="container-fluid">
+            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button>
+            <div class="collapse navbar-collapse" id="navbarNav">
+                <ul class="navbar-nav">
+                    <li class="nav-item">
+                        <a class="nav-link active" aria-current="page" th:href="@{../}">Home</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" th:href="@{/student/list}">Student</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" th:href="@{/course/list}">Course</a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+    </nav>
+<h2>Student's List</h2>
 <a th:href="@{/student/create}" class="btn btn-primary btn-sm mb-3" >Create student</a>
 
 <table class="table">