Proxor C Exam

How To Prepare

To prepare for this exam, you should download the following:

  •, which contains mostly code and text files. You must supply your own development environment that can edit, compile, and run C program

The exam will consist of 4 programming tasks. Some of these tasks may be based on the following software:

  • rb_tree is a directory containing an implementation of the red-black tree algorithm. Tasks based on this software will link with the code in rb_tree. You will be provided with the source code in rb_tree.
  • cmcmd is a directory containing an extensible command processor named cmcmd. This code is based on a real command processor library that facilitated debugging embedded systems software written for a microcontroller.
  • sqlite3 is a widely-used light-weight SQL database. Documentation is provided, but source code is not included with the tasks.

You should become familiar with this software, learning the structure; how the programs work; and how to compile, run, and use rb_tree and cmcmd. You should also know some basic SQL and how to use the sqlite3 API.

Twenty-four (24) tasks are included. Each one is contained in a separate directory. The tasks are:

  • carray
  • ccvt
  • cexp
  • cload
  • cmath
  • exclip
  • exdst
  • exidx
  • exvec
  • exzero
  • gbitest
  • gfileio
  • gfsm
  • grev
  • rbcal
  • rbdict
  • rbsort
  • rbspell
  • rbwordcount
  • sqlex
  • sqlload
  • sqlutil
  • sqlvalid
  • sqlverif

Each of these directories contains a file named README.txt. The readme.txt files tell you what to do for each task.

We recommend that you implement these tasks. For example, implement rbcal by modifying rbcal/rbcal.c according to rbcal/README.txt.

Notice that most tasks have some preliminary testing built-in. You may want to write additional test code to exercise your solution, but in the actual exam, you should disable any additional test code before turning in your solution.

The exam tasks will all be of this same form: For each task in the exam itself,

  • Read the README.txt file in the project folder to learn what to implement.
  • Modify the code that is provided in the project folder. You can create new files, but generally this will not be necessary.
  • Test your code.
    • Run the given code according to the README.txt
    • Perform any other testing you wish.
  • Submit your solution.