Ciao ferr,
Devi usare Ajax per popolare la seconda select:
codice:
<head>
<!--Libreria jQuery-->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
 $('#esame').change(function(){//quando la select#esame cambia:
  var idEsame=$(this).val();//recuperiamo l'id dell'esame
  $.ajax({//lo passiamo alla pagina "videolezioni.php" che ci restituirà le videolezioni
   type: "GET",
   url: "videolezioni.php",
   data: 'idEsame='+idEsame,
   cache: false,
   success: function(response){//ad operazione completata
    $('#videolezioni').html(response);//popoliamo la select delle videolezioni
   }
  });
 });
});
</script>

</head>
<body>
<select id="esame" name="esame">
      <option value="" selected="selected">---Seleziona un esame---</option>
      <?php
             $q = "SELECT id, fullname, shortname FROM course;";            
             $result = mysql_query($q, $con);        
             while($row=mysql_fetch_array($result))        
             {    ?>
                  <option value=<?php echo $row['id']; ?>><?php echo $row['fullname']; ?></option>    
     <?php        
             }    ?>
</select>

<!--Questa select verrà popolata quando avremo un id-esame, inizialmente sarà vuota-->
<select id="videolezioni" name="videolezioni">
     <option value="">---Seleziona un esame &uarr;---</option> 
</select>
</body>
File videolezioni.php
Codice PHP:
<?php
//connessione al db
   
          
$q "SELECT id, name FROM url WHERE course=".$_GET['idEsame']
          
$result mysql_query($q$con);       
          while(
$row=mysql_fetch_array($result))        
         {        
?>                        
                <option value=<?php echo $row['id']; ?>><?php echo $row['name']; ?></option>     
  <?php        
          
}    
//nota: è importante che questo file stampi a video solo le option per la select#videolezioni, non deve contenere altri tag HTML
?>
Ho commentato il codice, fammi sapere se hai bisogno di chiarimenti