How to create custom placeholders on hook_menu, like "%node"?
In order to use a placeholder like %student, you need to define a student_load() function in your module, or an enabled module should define such function. Drupal automatically uses that function when the placeholder is used; that is the reason why you should avoid any conflict between the used placeholders and the existing functions.

In your case, you should use code similar to the following one.

function student_menu() {
  $items['path/%student'] = array(
    'page callback' =&gt; 'student_page',
    'page arguments' =&gt; array(1),
    'access callback' =&gt; 'user_access',
    'access arguments' =&gt; array('see student page'),
  );

  return $items;
}

function student_load($id) {
  // Load information from the database; return FALSE in case of error, or when the equivalent database row is not found.
}

function student_page($student) {
  // $student is the value returned from student_load().
  // …
}


Reference


Dynamic argument replacement (wildcard)
Wildcard usage and core's wildcards