#### General
###### Was the project written in a compiled programming language?
###### Are the commands mentioned in the subject implemented from scratch, without calling any external binaries and exclusively using low-level system calls directly, without relying on built-in functions or libraries that abstract file operations?
#### Functional
##### Open a terminal and run the project.
###### Can you confirm that the project runs and displays a unix shell?
##### Open a terminal and run the project.
###### Can you confirm that this interpreter displays at least a simple `$` and waits for you to type a command?
##### Try to run a command of your choice.
###### Can you confirm that the interpreter only validates the command if you press enter?
##### Try to run the command `"exit"`.
###### Can you confirm that the interpreter terminates properly and gives back the parent's shell?
##### Try to run the command `"echo "something!""`. Do the same in your computer terminal.
###### Can you confirm that the displayed message of the project is exactly the same as the computer terminal?
##### Try to run the command `"echo something else"` (without double quotes). Do the same in your computer terminal.
###### Can you confirm that the displayed message of the project is exactly the same as the computer terminal?
##### Try to run the command `"pwd"`.
###### Can you confirm that the interpreter displayed the current path?
##### Try to open the project and create a parent folder with two children folders using the command "mkdir". Then enter the parent folder and do "pwd".
###### Can you confirm that the interpreter displayed the current path?
##### Try to enter a directory of your choice by using the command `"cd dir/of/your/choice"`.
###### Can you confirm that the interpreter took you to the correct path? Use `"pwd"` to confirm.
##### Try to run only the command `"cd"`.
###### Can you confirm that the interpreter took you to the users home folder? Use `"pwd"` to confirm.
##### Try to run the command `"ls"` in a directory at your choice. Do the same in your computer terminal.
###### Can you confirm that the output is the same in the project and in your computer terminal?
##### Try to run the command `"ls -l -a -F"` in a directory at your choice. Do the same in your computer terminal.
###### Can you confirm that the output is the same in the project and in your computer terminal?
##### Try to run the commands `"mkdir new_folder1"` and `"mkdir new_folder2"` in a directory of your choice.
###### Can you confirm that the directory `new_folder1` and `new_folder2` were created?
##### Create a document inside the `new_folder1` called `new_doc.txt` with some random text inside. Try to run the command `"cp new_doc.txt ../folder2"` to copy the document to the folder `new_folder2`.
###### Can you confirm that the document `new_doc.txt` is inside the `new_folder2`?
##### Try to run the command `"cat new_folder1/new_doc"`. Do the same in your computer terminal.
###### Can you confirm that the output is the same in the project and in your computer terminal?
##### Try to run the commands `"mv new_folder2 new_folder1"` to move the directory `new_folder2` inside of the directory `new_folder1`.
###### Can you confirm that the directory `new_folder2` is inside of the directory `new_folder1`?
##### Try to run the command `"rm -r new_folder1"` to remove what was created above.
###### Can you confirm that the directory `new_folder1` was removed?
#### Bonus
###### +Did the student added auto complete when you are writting the commands?
###### +Did the student added piping?
###### +Did the student managed the `Ctrl + C`?
###### +Did the student added colors to the errors or directories?
###### +Did the student added redirection?
###### +Did the student added the current path behind the `$`?
###### +Did the student added any other features or commands to the project?