Ok, I'm still not sure where do you have problems, but I'm posting this because it's too big for a comment. In your current setup, let's assume that you have an EditText where the user will enter the new subject(like math for example). To make the new table you'll need two operations: to insert the math text in the subject table and then actually create the new math table. You'll need to do this in a transaction to make sure this operations either succeed or fail as one( http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#beginTransaction%28%29 ). First, to insert the math text in the subject table you'll use http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#insert%28java.lang.String,%20java.lang.String,%20android.content.ContentValues%29 . Then to create the new math table you'll do:
// get the text entered by the user, also trim it for extra spaces
String newTableName = editTextInput.getText().trim();
// the entered name should consist only of characters
newTableName = newTableName.replaceAll("[^a-zA-Z]", "");
// create the new table
sqliteDatabase.execSQL("CREATE TABLE " + newTableName);
The way you setup the database is far from ideal. You should avoid creating tables for each of the subject table entries(and for the students as well, I'm assuming a student will be engaged in more than one course), instead you should create a subject table, a students tables(each with a unique id) and one table that joins the two of them(also look at sqlite foreign keys).
EditTextor whatever input method you have in mind), check the input(not all users are nice guys) and then create the table in sqlite with aexecSQL()call.