diff --git a/.dockerignore b/.dockerignore
deleted file mode 100644
index 298e61c5817591f903b2936e9a477c4e75329a2b..0000000000000000000000000000000000000000
--- a/.dockerignore
+++ /dev/null
@@ -1,10 +0,0 @@
-# Files & folders to ignore when building the container image
-.vscode/
-.venv/
-site/
-.editorconfig
-.gitignore
-.gitlab-ci.yml
-Dockerfile
-LICENSE
-README.md
diff --git a/docs/2021/exercise1.md b/docs/2021/exercise1.md
index 766f2c4ff99f71811c47dc263f90ed7a5aff704d..aa1453e4707c890a553c78deb03c4441f410bf5e 100644
--- a/docs/2021/exercise1.md
+++ b/docs/2021/exercise1.md
@@ -52,6 +52,25 @@ with a teaching assistant to demonstrate your work.
       in performing static analysis on code quality and possible security-related
       issues.
 
+## Deliverables
+
+At the end of this exercise, you are required to prepare the following
+artifacts:
+
+- [ ] A fork repository of the group project in your own namespace on GitLab
+  CSUI.
+- [ ] An updated GitLab CI/CD configuration, i.e. `.gitlab-ci.yml`, in the fork
+  repository.
+- [ ] An example of working pipeline in the fork repository that shows the CI/CD
+  pipeline successfully build, test, and deploy the application.
+- [ ] An URL to the application that is built and deployed from your fork. It
+  is OK to simply use the public IP address of the VM that running your
+  application. Make sure the URL is accessible when conducting demo with the TA.
+
+The due date of this exercise is: **17 November 2021, 21:00 UTC+7**. Please
+ensure any updates to the fork repository related to this exercise were made
+and pushed before the due date.
+
 ## References
 
 - [GitLab CI/CD Reference on GitLab CSUI](https://gitlab.cs.ui.ac.id/help/ci/yaml/README.md)
diff --git a/docs/2021/exercise2.md b/docs/2021/exercise2.md
new file mode 100644
index 0000000000000000000000000000000000000000..b423aa896e7166d4c651d08f1061320c32476b92
--- /dev/null
+++ b/docs/2021/exercise2.md
@@ -0,0 +1,110 @@
+# Exercise 2: Input Domain Modeling
+
+You are asked to design an input domain model for one feature of your group
+project **individually**. Implement this exercise using a **new branch** of
+your **previously forked group project codebase**.
+
+We provide a template for creating the IDM in [Markdown](#appendix-1-markdown-template)
+and [Microsoft Word](./resources/exercise2-template.docx). Feel free to use it.
+We also provide an [IDM example from last year's exercise](./resources/exercise2-idm_example.pdf).
+
+At the end of the exercise, do not forget to schedule an one-on-one meeting
+with a teaching assistant to demonstrate your work.
+
+## Tasks
+
+1. [ ] Choose one **complex function** from your group project.
+   The complexity of your chosen function will affect the final grade of this exercise.
+   You can choose a function that is implemented by your workmate, but do note that
+   **plagiarism rule still applies**.
+2. [ ] Create input domain model for that function. Feel free to choose whether
+   to use interface-based or functionality-based approach to identify the characteristics
+   and their partition.
+3. [ ] Identify the constraints between characteristics if exist.
+4. [ ] Choose the test values based on your input domain modeling. Feel free to use
+   any criteria that you think is the most effective.
+5. [ ] After choosing the test values, do you think that all of them are already covered
+   in the existing test?
+6. [ ] Improve the existing test using your identified test values.
+7. [ ] Arrange an one-on-one meeting with a teaching assistant to demonstrate
+   your work. You are expected to be able to:
+    - Explain the input domain modeling process of your work.
+    - Explain the test values selection process of your work.
+    - Explain the testing improvement after conducting this work.
+    - Provide arguments from your choices on this work. E.g: choosing criteria, characteristics,
+      IDM approach, etc.
+
+## Deliverables
+
+At the end of this exercise, you are required to prepare the following
+artifacts:
+
+- [ ] A written document that describes the process of your work in completing
+  this exercise. You can write the document as a Markdown-formatted text file
+  or a PDF file. Give the document a descriptive name, e.g. `exercise2.md`, and
+  put it into a folder called `docs` in your fork.
+- [ ] One or more changed test suites, if any, that had been updated from the
+  result of this exercise.
+  > If there are no changes in the test suites, explain the reasons in the
+  > documentation.
+
+The due date of this exercise is: **24 November 2021, 21:00 UTC+7**. Please
+ensure any updates to the fork repository related to this exercise were made
+and pushed before the due date.
+
+## References
+
+- [Ch 6. Input Space Partitioning slide at Paul Amman's Introduction to Software Testing book website](https://cs.gmu.edu/~offutt/softwaretest/powerpoint/Ch06-ISP.pptx)
+- [6.005 — Software Construction on MIT OpenCourseWare | Reading 3: Testing](https://ocw.mit.edu/ans7870/6/6.005/s16/classes/03-testing/index.html)
+
+## Appendix 1: Markdown Template
+
+You can use the following Markdown template to document the IDM in your
+`exercise2.md` file.
+
+```markdown
+# ISP Documentation for [Insert Function Name Here]
+
+## Input Domain Model
+
+| Characteristics  | b1            | b2            | ... |
+|------------------|---------------|---------------|-----|
+| Characteristic A | Partition A 1 | Partition B 2 |     |
+| Characteristic B | Partition B 1 | ...           |     |
+| ...              | ...           | ...           |     |
+
+Note: You can write some explanation about how you design your IDM to help you
+during demonstration.
+
+## IDM Relabeling Table
+
+| Characteristics | b1  | b2  | ... |
+|-----------------|-----|-----|-----|
+| A               | A1  | A2  |     |
+| B               | B1  | ... |     |
+| ...             | ... |     |     |
+
+## Constraints
+
+- Constraint 1
+- Constraint 2
+- ...
+
+## Test Values and Example I/O
+
+Criteria Used: [Define your chosen criteria here]
+
+Note: You can write some explanation about how you choose your criteria to help
+you during demonstration.
+
+| Test Value | Example Input | Expected Output |
+|------------|---------------|-----------------|
+| A1B1...    | Input 1       | Output 1        |
+| A1B2...    | Input 2       | ...             |
+| ...        | ...           | ...             |
+
+```
+
+> Tips: If you write using Markdown and want to export the document as PDF file,
+> you can use [`pandoc`](https://pandoc.org/) to export text file written in
+> Markdown into a PDF.
diff --git a/docs/2021/resources/exercise2-idm_example.pdf b/docs/2021/resources/exercise2-idm_example.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3472a384ee8a2e03a02a373a9d6e5952504bed90
Binary files /dev/null and b/docs/2021/resources/exercise2-idm_example.pdf differ
diff --git a/docs/2021/resources/exercise2-template.docx b/docs/2021/resources/exercise2-template.docx
new file mode 100644
index 0000000000000000000000000000000000000000..7a3833ac7a26128a56c5eee49971f450151351bc
Binary files /dev/null and b/docs/2021/resources/exercise2-template.docx differ
diff --git a/mkdocs.yml b/mkdocs.yml
index 47e6be703a81fd8207dcd62ee98abf72fef646e4..d183d53513933afb8bf3d3a28a55e7b51d786318 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -53,6 +53,7 @@ nav:
   - Year 2021:
     - 2021/index.md
     - Exercise 1: 2021/exercise1.md
+    - Exercise 2: 2021/exercise2.md
   - Year 2020:
     - 2020/index.md
     - Midterm Exam 1: 2020/midexam1.md