Best book and video lecture series to follow for an "object oriented programming" course for advanced undergraduates I am looking for an elegant text book to be followed for self study in an objected oriented programming course at the undergraduate level. Our course is as shown:

I humbly request to suggest me a book which shall help me in self studying the concepts which are given above, a book which shall be like an instructor and make me understand the concepts excellently. I know the basics of Java but I am unaware of the most the technical terms used in the curriculum attached above.
Our course instructor is a bit weird and she is going on just reading the Java reference book by Hebert Schildt in the slide of each class and she does not explain the points given in the curriculum like iterator patterns, Model-view-controller pattern and others. When I asked her what is iterator pattern, she said that it is a loop, that's all.
I do not want to study the subject just for name's sake (superficially), I always attempt to master what I learn. Please could you help me out?
Moreover, if anyone could provide me video lectures to go hand in hand with a text book, then it shall be helpful for me. I do not like the way I am being taught at our place.
Thank you. Hope you can understand my trouble... I beg to help me out.

[I am not worth criticizing the instructor, but it is my utter frustration which has made me put this question here, so that I can get hold of some suitable and good learning resources.]
Two books come to mind. Both build a project and you learn about object-oriented program design and testing. However, both assume at least a good grasp of basic Java. Nether will cover all of the topics you mentioned, nor do they have videos, but will give you a good idea of how to develop larger programs. You will learn a lot by code reading and osmosis. Both books use Java for implementation.
The first book (https://csis.pace.edu/~bergin/polymorphismBook/index.html) builds a simple four-function calculator. It emphasizes test-driven development and assumes at least a simple knowledge of JUnit testing. The book shows how to decompose a problem into small manageable pieces and take advantage of polymorphism (hence the name of the book). I also like the companion book as it takes a further look at the same problem, but with alternative implementations. Both are paperback books available for approx $20. The author's web page (https://csis.pace.edu/~bergin) also has links to a lot of material he has written.
The second book (http://craftinginterpreters.com/) builds an interpreter for an object-oriented language. It is a far larger and much more complex project. The author does an excellent job of explaining concepts and demonstrating incremental development. If you just made it through the chapter on Scanning, you will have learned a tremendous amount. You will have a much better idea of how Java takes your source files and breaks them down into pieces. Best of all, the book is free to read.
Lastly, if you like videos, check out (https://online-learning.harvard.edu/course/cs50-introduction-computer-science?delta=0). It is Harvard's intro to CS course and covers a whole variety of topics and languages. You can enroll for free and actually do the assignments or just watch videos and work on your own. The instructor is wonderful.