Buenas, veras, yo intentaría poner el Add de esta manera, a mi me funciona:
// Dentro del bucle :
........
// creo dos variables nuevas para que sea mas entendible:
Dim asignatura, valor_asignatura As String
// Ahora le doy el valor
asignatura = todasAsig[i].ToString();
valor_asignatura = todasAsig[i+1].ToString();
//Ahora las meto en el DropDownList
listaAsignaturas.Items.Add(new ListItem(asignatura, valor_asignatura));
......
// Fin del bucle
Asi no necesitas un índice j.
Entonces al seleccionar puedes escoger el valor del item seleccionado
valor_item_seleccionado = listaAsignaturas.SelectedValue
Espero haberte ayudado