This sheet contains everything you need to know about the Final.
Note that I will make most questions worth more than one point so that if you give me a partially correct answer, I can give you partial credit.
Here are some answers to questions you might have regarding the test, presented in FAQ format.
The test will be closed note, closed book, closed Internet. (And yes, closed neighbor.) In other words, you will need to study and pull the answers out of your head.
Students who do not speak English as their first language are allowed to use a translating dictionary (English -> Mandarin, English -> Russian, English -> Czech, etc.) durring the test.
Native English-speakers can't use anything.
No, it will be a written test on sheets of paper. Bring a pen or pencil.
No, there will be no lab questions, nor any questions that require you to write code. I may have some questions that give code snippets and ask "explain what this code is doing" or "this code produces this output, explain why", or possibly "there's a bug in this code, where is it?", but you won't have to write any code.
No you don't. I'm not going to test you on that.
It's not.
Sure. Click here.
Basic components / terms of network infrastructure: packet, router, hop. Recall the class exersize we did passing notes around.
Difference between Connection-oriented or stream protocol (like TCP, which has sequence numbers) and Connectionless or datagram (like UDP).
Relationship between IP addresses and hostnames; what the Domain Name System (DNS) does.
Ports / port numbers: why ports are necessary / significant. Using /etc/services to find what service runs on what port. Using nmap to scan ports. Daemon programs that run on a port.
Difference between Domain Sockets (single-host) and Internet Sockets (multi-host).
Programs: telnet, ping, ifconfig, host, nslookup, netstat, nmap, netcat (nc), traceroute
Sockets on the server side: socket / bind / listen / accept, and sockets on the client side: socket / connect.
The time() syscall retrieves the number of seconds since the Epoch.
Sleeping with sleep() / usleep() / nanosleep() / select().
Difference between one-shot timers and recurring timers. Using either alarm() or setitimer() and receiving a SIGALRM.
Pseudorandom vs. Random.
Linux (and other Unicies) seed an entropy pool (/dev/random and /dev/urandom) with environment noise.
Seeding the random number generator with srand() and using rand() to return random numbers.
Difference between globbing & regular expressions.
Reveiw some of the regex metacharacters. Know what a "metacharacter" is.
Programs: grep / egrep.
Programming stuff: regcomp / regerror / regexec / regfree
We covered readline on this day. Know what readline does.
Know what the S-Lang library is and what it can do for you.
Know what a character set is.
I'm not going to put a lot of SLang functions on the test. Just hit on the high points here.
Know what an Abstract Data Type (or "ADT") is.
Hash: An array is a list indexed by number, a hash is a list indexed by a string.
Keys and values.
Review the database operations: dbopen, db->close, add / edit: db->put, iterating: db->seq, retrieving one rec: db->get, removing: db->del. You should be pretty familiar with these by now.
Know what an "option" (or flag) is.
Differences between: getopt, getopt_long, popt.
Know what an option string is and what it means (i.e. "ab:c:d::")
Review Function Pointers.
Understand what a "function signature" is.
Retrieving functions from shared libraries at run-time with: dlopen, dlsym, dlclose. Also, error-checking with dlerror.
Some important system files to know about:
"GECOS" information is stuff like full name, office, phone number, etc. It is read by the finger program and can be changed with the chfn program.
The who program will show who is logged in, the last program will show a list of the last login attempts.
Re-declaring variables with extern.
Know about getting on-line documentation with man.
Any of the programs we looked at in class might show up in the Matching or FITB section (things like "nmap", "grep", etc.).