The wildcard character % has to be part of the command string. i.e.
cmd.CommandText = "update students SET Progress = 'Good' where Student like '" + i + "%' ";
However, you should be using a Parameterised query here
cmd.CommandText = "update students SET Progress = 'Good' where Student like @name";
string searchName = string.Format("{0}%",i);
cmd.Parameters.Add(new SqlParameter("@name", searchName));
cmd.ExecuteNonQuery();
Also note the comment from Richard - using forenames like this is not a good idea