----------------------------------------------------------------------------
COP3610 -- Final Exam  Review Notes			M. Schmalz   010429
----------------------------------------------------------------------------

The final exam will cover the following topics:

  A) Operating system basics (including some history)

  B) UNIX shells

  C) UNIX file, directory, and system commands

  D) Compilation and makefiles

  E) Overview of computer languages C, C++, Java

  F) Regular expressions

  G) Summary information about Perl, communications, and sockets

To study effectively, use the following outline, which is expressed
in terms of practice questions that can be answered from the book,
Web notes, and class notes.  Additionally, I have posted a practice
test on the Web page.  

A. OPERATING SYSTEM BASICS:

 1 - What is an operating system, and what services does a modern 
     operating system provide to the user?  To applications programs?

 2 - How does an operating system support editing, compilation,
     linking, and loading of a program?  [3-4 sentences or paragraph]

 3 - What is batch processing?  

     When and how was batch processing used?  [A sketch would be helpful]

     What technology did batch processing improve upon, and how?

     What are three advantages and three disadvantages of batch processing?

 4 - What is multiprogramming, and where is it used?  

     What hardware and software requirements
     are needed to implement multiprogramming?

 5 - What is time sharing, and why was it developed?

     Under what conditions does time sharing work or fail?

     How is time sharing different from multiprogramming?

 6 - What was the benefit of introducing UNIX as an operating system?

 7 - What developments helped UNIX to become more accepted as an
     operating system for general use?  (Hint: its use in academia...)

B. UNIX SHELLS:

 8 - What are the primary features of the Korn shell? 

 9 - What kind of control structures are available in the Korn and C shells?

10 - What are the primary features of the C shell?  Why is it called
     the C shell?

11 - Compare and contrast the Korn and C shells, especially pertaining
     to ease of use.

C. UNIX FILE, DIRECTORY, AND SYSTEM COMMANDS

* Know the syntax and functionality of each UNIX command given in the
  Web page.  No question will be asked about commands or command options
  that were not discussed on the Web page.

12 - What are the "more" and "less" commands used for, and what are the
     *specific* differences between them?

13 - How do "more" and "less" differ from "cat"?

14 - What is the difference between "cp" and "mv"?

15 - What is the function of an i-node in UNIX?  
     [You do not have to know its structure]

16 - Suppose you were building a UNIX operating system on top of DOS :(
     What DOS file or data structures would you have to manipulate to
     implement the "cp" command?

17 - Compare and contrast "df" and "du".  [Easy]

18 - Why can't you use the "cd" command with a file, or the "cat" command
     with a directory?

19 - What is the purpose of the "man" command?  Which command is "man"
     most similar to: "du", "df", "cat", "head", "more", or "less"?  Why?
     Hint: Explain your answer in terms of what the user sees on screen.

20 - What commands in UNIX are identical to their counterparts in DOS,
     with the exception of the way the filename/pathname is specified?
     Give an example of how to use each of these commands.

21 - Know how file permissions work, and what they can and cannot do.
     For example, know who is excluded from file access when user,
     group, and other r,w,x settings are made using "chmod".

D. COMPILATION AND MAKEFILES:

22 - Know what a compiler does, basically how it transforms source 
     code into object code.

23 - How does a linker connect the object code to libraries, and
     what UNIX command can be used for this?  Be prepared to give
     an example of the "ld" command on the test.

24 - What is a makefile and what does it do?

     Give an example of a compiler command that is implemented in a
     makefile.  For example, you can put the command directly into
     a makefile, or you can use colon notation to link the
     object files into an executable after each object file is
     compiled.

     What are variables in UNIX, and how are they used in makefiles?
     Give an example of such usage in the C-shell.

     What are two advantages of makefiles?

E. COMPUTER LANGUAGES:

25 - What are advantages and disadvantages of C, C++, and Java
     programming languages?

26 - What is object-oriented programming (OOP), and why was it developed?

     What are the differences between implementations of OOP in C++ 
     versus Java?  (Limited polymorphism and no multiple inheritance in Java)
     Be prepared to draw a simple diagram that illustrates each of these
     differences.

     How is Java different from C?  (limited or no access to bare machine,
     friendlier syntax, object oriented, more communication and graphics
     routines, Java is interpreted to bytecode level then compiled whereas
     C is totally compiled).

27 - What were the innovative features introduced by the C language?

     What changes were made to C to produce C++?


F. REGULAR EXPRESSIONS:

28 - What is a regular expression?

29 - What are the primary features of a regular expression?
	(operands = strings or variables, and primitive operators)

30 - Of what use is the range specifier in regular expressions?  Give
     an example of the use of the range specifier with the "ls" command.

31 - Given a directory listing or a simulated file containing text
     (this would be shown on the exam, if it is in a question), predict
     what will appear in the output of an ls or fgrep command given a
     regular expression that constrains the functionality of that
     command.

G. COMMUNICATIONS, SOCKETS, AND PERL

32 - What is a socket in UNIX, what is it used for, and how is it used?

33 - What is the difference between simplex and full duplex communication?
     How are sockets used to implement each of these modes?

34 - What do the programs "mail" and "talk" do, and how do they
     differ from each other?

35 - What is the Perl language, and what does it do?

NOTE:  The exam questions will be adapted some from the questions
       listed above, and from the practice test.  There will also be
       some simple matching questions, to help you gain extra points.  

-EOF-