# Assignment 1 (non-credit)

#### 1. Learn the following basics of Unix:

• What is a Unix terminal and how to open one? Reference: Unix Introduction
• What are files and processes? What is a directory and how are files grouped together in a directory structure? Reference: Unix Tutorial 1
• How to list files and directories? How to create files and directories? How to copy and move files? Reference: Unix Tutorial 2
• What are file access permissions and how to change them? Reference: Unix Tutorial 5

It is expected that by the end of this task, you are familiar with the usage of unix commands such as: ls, cp, rm, mv, touch, chmod, groups, passwd, cd, pwd, mkdir, rmdir

#### 4. Learn how to use and navigate a text editor:

• Type the following command on your terminal prompt: gedit &
• Open the gedit tutorial and experiment with at least the following sections (you can experiment with all the subsections on the gedit tutorial page, if you like):
• File basics: Open, close, and save files
• Replace text and Search for text
• Undo a recent action
• Turn on syntax highlighting

#### 5. Learn how to work with SML programs:

• Open a terminal and execute the command: sml
• Follow section 3.1-3.3 of the lecture notes and code up the examples. If you wish to experiment more, then you can refer to the slide deck here from slide 5 onwards.
• Type the following programs in separate files and learn how to load and execute them in the interactive SML environment:
fun factorial(n) =
if (n = 0) then 1
else n*factorial(n-1);

fun gcd(m,n) =
if (n=0) then m
else gcd(n,m mod n);