CS 1301 Final Examination

Review Guide

The final examination will be held in HAS 340, Tuesday, May 1, 2007 at 6:30 p.m. This examination will be comprehensive. You should be prepared to answer questions on any of the 14 topic areas covered in this course. When you prepare for the final, you should try to focus on the relationships between the topic areas.

You should be familiar with the definitions of all terms used in these areas, for example what an algorithm is, J syntax, J evaluation rule, recursion, tail recursion, continuation, memory, processor, Von Neumann bottleneck, cpu machine cycle, complement arithmetic, fixed point, floating point, exact numbers, inexact numbers, radix, number conversions and the circuit elements and, or, not.

You should be familiar with the definitions of an algorithm, order notation, abstract data structure, top-down system design, object oriented programming. You should understand how engineering practices such as prototyping are important in the development of software systems. You should be able to perform simple algorithm analysis of any of the algorithms studied in this course and know the differences between recursive and iterative processes.

You should be familiar with the definitions of inductive specification, Backus Naur form, bound variables, free variables, order notation, polynomial exeuction time, tractable and intractable computation, Von Neumann machines, Harvard machines, caches, pipeline architecture, SIMD and MIMD machines, associative memories.

You might be asked to read a simple J verb which would illustrate some aspect of recursion or iteration. Such reading would include being able to predict the result of using the verb in a sentence with suitable objects.

You should be able to convert numbers from one representation to another and setup small constant values in each representation.

Given a simple circuit diagram, you should be able to figure out the outputs corresponding to each possible input. You should be able to wire two circuit elements together.

You should understand the organization and operation of a Turing machine as a conceptual model of computation.

One good way to review is to look over each problem on each quiz and make sure you understand the answers to each question which were prepared by the instructor.

Finally, look for relationships between the topics we have studied and the role abstraction has played in dealing with complexity. For example, how complement arithmetic determines the design of adder circuits or how von Neumann's idea of storing both data and instructions in the same memory system later caused problems when designing faster computers.