The specification says:
the extending UseCase typically defines behavior that may not
necessarily be meaningful by itself.
and
The extension takes place at one or more specific extension points
defined in the extended UseCase.
So, uml@classroom is wrong and your professor is right. Extending use cases are not meaningful by itself and cannot exist without an extension point in the extended case.
However, there are good reasons for avoiding the extend relationship.
First of all, the specification contradicts its own definition:
A UseCase specifies a set of actions performed by its subjects, which
yields an observable result that is of value for one or more Actors or
other stakeholders of each subject.
How can a behavior that "may not necessarily be meaningful" be "of value"?
So, maybe the UML should have introduced «secondary» "use cases" for this purpose. Actually, this is how it is done in my company. That is, if the client insists on using «extend» or «include».
In my opinion secondary "use cases" are only needed, if they are your only means to describe common or extending behavior. However, usually you will use other elements to describe the use case, such as activity diagrams or interaction overview diagrams. They can easily and accurately describe such behavior. Extending use cases will simply duplicate the effort without any benefit.
So, even when uml@classroom is formally incorrect, the advice is sound! A use case that is worth the effort is independent!
PS: Much confusion stems from the sloppy use of language: A use case is not executed. A use case happens, when I use a system by invoking some its functions, which will then get executed. The specification never uses this wording. Rather it talks about initiating a use case.