Blog of Andrés Aravena

# Intro to Computer Science: Keywords for Midterm Exam

30 October 2017

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

• File
• Folder
• Root
• Home
• Current Folder
• What is command line?

• What is a terminal?

• 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