This course is an introduction to scientific computing using the Unix command line. The midterm exam will measure the learning of the first part of the course, mostly definitions. In this post you can see all the concepts that have been defined in the course. They are written as questions, so the students can evaluate their own learning and have a guide on how to improve.
The midterm exam will be held in the Computer Lab. You should have your student account enabled so you can log into the computers. Your answers should be in a text file that you will email to me during the exam. Please verify that you can send emails from the computer lab.
The course has one hour of theory and two hours of practice every week. We teach new concepts in both sessions. Here you find the summary of both parts.
Theory
Historically, what was a “computer”?
Why electronic computers are better than mechanical computers?
why modern computers are different from other machines?
What are the parts of any computer, from your cellphone to the Top 500 fastest computers?
What do computers handle?
How we measure information?
What is a bit?
What is a byte?
What kind of data can be represented in a computer?
How can we represent text in a computer?
How can we represent audio in a computer?
How can we represent images in a computer?
What is a text file?
What is a binary file?
Are Microsoft WORD files a kind of text files?
What is Hardware?
What is Software?
What is a program?
What is source code?
What is binary code?
What are software libraries?
What is an Operating System?
What is a kernel?
What is a shell?
What is Unix?
Why Unix is important to scientific and technological research?
What is a multiuser system?
What is a multitasking system?
Practical
Please define:
- File
- Folder
- Root
- Home
- Current Folder
What is command line?
What is a terminal?
Please define
- Prompt
- Filename
- Wildcards
- Standard Input
- Standard Output
- Redirection
Please explain what do the following UNIX commands do:
pwd
cd
mkdir
rmdir
rm
ls
man
cat
head
tail
sort
uniq
wc
wget
ssh
passwd
nano
chmod
chgrp
date
sleep
ps
top
kill
fg
bg
ln
grep
cut
tr
What are the permissions or modes of files?
If we use the command
ls -l
and we get the following result, what does it mean? Please explain every column-rw-r–r– 1 anaraven staff 50683 26 Oct 21:48 log drwxr-x— 3 anaraven staff 96 9 Feb 2017 memo
Define
- Regular expression
- Environment variables
- PATH
- She bang
- Process
- Background process
- Unix philosophy
- Binary code
- Source code
- Compiled code
- Interpreted code
- Open source code
- GitHub
What is the difference between a Hard Link and a Soft Link?
The following symbols represent folders in a UNIX system. Please describe which are these folders:
/
~
..
.
Regular expressions
Please write the regular expressions that will match the following lines of text:
- lines starting with a upper case letter
- lines containing a Name and Surname: an upper-case letter followed by one or more lower case letters, followed by a “space”, followed by an upper-case letter followed by one or more lower case letters
- lines containing only “space”
- empty lines
- lines containing a date in the format 2017-12-27
Please describe the set of texts that will match each of the following regular expressions
abcd
[abcd]
[ab][cd]
[a-c][^d]
^[ab][cd]
^ab[cd]$
^a[bc][^d]*$
ab*c*d
ab?c?d
a..d
Please draw the finite state machine (a.k.a. deterministic finite automaton) equivalent to the previous regular expressions
Please write the transition matrix for the previous finite state machines
Other resources
- Use Google to look for “Unix command line” or “learning command line”.
- Learn Enough Command Line to Be Dangerous.
- A Command Line Crash Course.
- You can use in Windows most of the Unix commands if you install Git for Windows. You can also install the text editor Nano.
- A better alternative is to use Virtual Box and install an image of Ubuntu Linux. You can find several images at https://virtualboxes.org/. This option usually requires several gigabytes of hard disk, although sometimes you can have something smaller.
- Pointers to Unix history.