The '[]' mean it's sending in an array. So, string[] means that parameter is an array of strings, and string (without the '[]') is just a single string object.
You ignore everything @dhs2 said. Just a troll account.
It might seem confusing. So let's take it one parameter at a time.
Firstly, a function can have any number of parameters, and they can be of any type, so you could send in three strings, or three integers, or whatever you want really.
First argument: string[]. This is an array of strings being passed to the function.
Second argument: int[]. This is an array of integers being passed to the function.
Third argument: double[]. This is an array of doubles being passed to the function.
Fourth argument: int. No '[]' here. This is just a single integer being passed to the function.
Fifth argument: string. No '[]' here. This is just a single string object being passed to the function.
Your professor did that because they wanted to send an array of strings "for whatever reason" and then also send a single string in a different parameters. There are a few reasons why you might want to do that. The array could be an array of student names. The single string could be the professor's name. You wouldn't really want them mixed up.