5
$\begingroup$

I am looking for an elegant textbook to be followed for self-study in an objected oriented programming course at the undergraduate level. Our course is as shown:

course details

I humbly request you to suggest to me a book which shall help me in self-studying the concepts which are given above, a book which shall be as an instructor and make me understand the concepts excellently. I know the basics of Java but I am unaware of most of 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 textbook, 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 you to help me out.


[I am not worth criticizing the instructor, but it is my utter frustration that has made me put this question here so that I can get hold of some suitable and good learning resources.]

$\endgroup$
9
  • 2
    $\begingroup$ What courses have you had? Data structures? Algorithms? More? $\endgroup$
    – Buffy
    Dec 17 '20 at 19:59
  • 2
    $\begingroup$ And where did this list of topics come from? Is your instructor learning this stuff along with her students? $\endgroup$
    – Buffy
    Dec 17 '20 at 20:12
  • 2
    $\begingroup$ I posted a small answer for you, @RanMouri. Questions about the material itself are off-topic on our site, but if you have a specific question, like iterators, you could always try your luck in our chat room. The folks there tend to be very nice. $\endgroup$
    – Ben I.
    Dec 19 '20 at 8:01
  • 2
    $\begingroup$ Given the list of subjects you have already had, I doubt that there is a book other than a highly theoretical one that covers these topics. Big Java (Objects Early) by Cay Horstman covers a lot of it, but it is intended for beginners, so much of it would be boring. $\endgroup$
    – Buffy
    Dec 19 '20 at 16:00
  • 2
    $\begingroup$ I could provide some references that you could use, but it wouldn't be a book for all of it. $\endgroup$
    – Buffy
    Dec 19 '20 at 16:04
4
$\begingroup$

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.

$\endgroup$
2
$\begingroup$

It seems like the course outline is sort-of (mostly?) object oriented programming. If you're feeling lost in that, you might want something like chapter 11 in this book: https://runestone.academy/runestone/books/published/apcsareview/index.html. That might help you to feel a little bit more grounded as you proceed in your course.

$\endgroup$
2
  • $\begingroup$ Thanks for the materials. But I know about concepts of chapter 11 in the material shared. I had a basic Java in our high school and as such I know the concepts which are said in chapter 11 about polymorphism, much more related to oops concept. But the place where I am having problem is that I want to know what are "design patterns", "Iterator patterns", "model view controller pattern". I have the Java-Complete Reference- Hebert Schildt, but I have not come across these topics in the text. It would be very helpful for me, if a text book is recommended to me, which deals with these topics. $\endgroup$
    – Ran Mouri
    Dec 19 '20 at 8:25
  • $\begingroup$ Just googling out the topics is fetching results, but they are not quite explanatory in the sense that they not quite complete or sequential. I am looking for a learning resource which deals with all the topics (possibly) and as well say the pros or cons of an approach with full co-relation between the topics. Ah I see these are too much a demand, but yet I feel a correct textbook should be like this and a reference manual (hebert Schildt) is not supposed to contain these aspects. Rather the text is a bit too dry without creating interest, yet the said is being followed at our place... $\endgroup$
    – Ran Mouri
    Dec 19 '20 at 8:35
0
$\begingroup$

If this is your first trip to OOP and design patterns Look for the text books:

Head First: Java

Head First: Design Patterns

Awesome design pattern resource: https://refactoring.guru/design-patterns/catalog

I also create a simple code base on my repository https://github.com/clarkngo/design-patterns

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.