School of Science and Engineering

illustration for computer science

Graduate Program

Preliminary Examination

Coordinator: Professor Hanh Pham

Next Exam: Before the start of the 2008 Fall Semester
Date: Thursday, August 21, 2008
Time: 3:00 P.M. - 5:00 p.m.
Location: LC 104

You will need: Your student id number, picture identification, pencils, and erasers

How to Sign-up for the Preliminary Exam

To take the preliminary exam, you must either

  • send e-mail to Professor Pham (phamh@newpaltz.edu) indicating that you plan to take the exam, or
  • place your name on the sign-up sheet that will be posted on Professor Pham's office door (Modular Faculty Office Building, Room N7. ).

Note: You may sign up for the exam as late as one hour before the exam.

Who Should Take the Exam

All matriculated computer science graduate students must take the preliminary exam. You will not be allowed to take most of our graduate courses until you have passed this exam.

Format

The exam is written, with no access to a computer during the exam. The questions range from easy introductory-type to more difficult data-structure-type questions.

If You Fail the Preliminary Exam

If you fail the Preliminary Exam consult the Department Chairman to plan a program of study for the next semester. The Department has designated courses for graduate students who have not passed the exam.

Purpose and Scope of the Preliminary Exam

The purpose of the preliminary exam is to insure that students are adequately prepared for graduate study in computer science. The exam is designed to test programming skill on the level of 25310 Computer Science II: Data Structures. The content of the exam is not defined by any particular data structures course but by the description given below.

What the Preliminary Exam Will Cover

The exam may test the following areas:

  • C++ programming. You should be thoroughly familiar with the C++ language.
  • Arrays. You show know how to use one-dimensional and multi-dimensional arrays, and how to pass arrays in a function call.
  • Linked Lists. You should know how to implement singly-linked and doubly-linked lists.
  • Stacks and Queues. You should know how to implement stacks and queues with both arrays and linked lists.
  • Recursion. You should know how to write and trace through recursive functions. You should know how to convert a function written recursively to an equivalent non- recursive function.
  • Trees. You should know how to implement binary trees. You should know the preorder, inorder, postorder traversals, and how to insert and delete nodes in a binary search tree.
  • Hash Tables. You should know how to implement hash tables.
  • Sorting. You should know how to implement the bubble sort and the quick sort.
  • Searching. You should know how to implement a sequential search, and a binary search of a sorted array.
  • Input/Output. You should know how to write code that opens, processes, and closes files, both binary and text. You should also know how to write code that performs I/O to the standard input and output devices.

Recommended Readings

Problem Solving with C++ the Object of Programming, 3rd Edition. Walter Savitch. Addison-Wesley. 2001.

Data Structures and other Objects using C++, 2nd Edition. Michael Main and Walter Savitch. Addison-Wesley. 2001.

Previous Exams

Note: The current format for the exam started in January, 1998. Thus, exams prior to January, 1998 are not representative of the exam as it is now given.