14 ms·
Ask HN: Best books/courses to learn Java core+advanced?
This is my first time teaching. I just graduated in 2020 and have been working as a production support engineer.
These are the subjects that I am assigned to teach(each in odd and even semesters)
- Java(object oriented concepts+core java+advanced java)
This is a 2 semester course
Sample contents with reference books here:
https://csitprogram.blogspot.com/2012/08/csc-403-advanced-java-programming.html
- Data Structures and Algorithms(with practical labs in java)
This is also a 2 semester courses, this is not "java"ic, but I am going to make them do the labs in java as per the syllabus.
I am going through couple of books:
- Y. Daniel Liang
- Herbert Schildt
- Car S. Horstmann, Core Java Volume I and II – Advanced Features, 8th Edition, 2008, Prentice Hall.
- Y. Daniel Liang, Introduction to Java Programming, 9th Edition, Comprehensive Version, Pearson/ Prentice Hall.
- H. Deitel, P. Deitel. Java How to Program. 7th Edition, 2007, Prentice Hall.
Any guidance? This semester, I will be teaching java OOPs/basics, next semester it'll be advanced java then data structures and algorithms in another 2 semesters.
PS I feel I myself need to revise my java concepts, so feel free to recommend books/courses to me. I will try my best to do justice to the students who paid tons of money for these classes as this will shape their Software engineering future.
- steve1977 2y agoI would maybe start with current editions of these books, not outdated 15 years old ones.
- tealpod 2y agoFor understanding Core Java, especially OOPS this book greatly helped me. 'The Java Programming Language' - by James Gosling.
- Tomte 2y agoCay Horstmann‘s books are great. The latest edition has just been completed, and if the two?volume set is too wordy for you because you already know a programming language or two, get Core Java for the Impatient.
- shivajikobardan 2y agoAlready bought Liang's Comprehensive Java, too late advice.
- Tomte 2y agoFortunately, my advice wasn't exclusively for you.
- PedroBatista 2y agoYou seem to display all the usual attitudes and mindset of a teacher.. congratulations. I guess.. Just to bring more clarity. This is a public forum so questions and answers are really directed at everybody.
- shivajikobardan 2y agoOk apologized.
- mbreese 2y agoWhy are you asking for advice then? Another way to think of this would be — what is covered in the Horstmann book better than the Liang book. What are topics that are missing from your already chosen book that your students would benefit from?
- dcminter 2y agoCan I commend "Effective Java" (3rd edition seems to be the latest) by Joshua Bloch ? I thought it was one of the pithier books & it gives both good advice and explanations of why it's good advice in each case.
- kozmicluis 2y agoI second this, I also enjoyed the java 8 book from manning publications (Modern Java in Action).
- quercusa 2y agoAgreed - an excellent book for those with some experience. I wish we could get a new edition.
- dgfitz 2y agoYou got a job teaching Java and you’re not confident in your Java? Was there like… an interview?
- simmerup 2y agoThe people with the qualification to teach are getting paid too much to take a teaching job
- steve1977 2y agoThose who can, do. Those who can’t, teach.
- hereonout2 2y agoI'm assuming this is academia and teaching to undergraduates the foundations of programming / comp sci using Java (which I'm not sure should be many peoples first choice these days!). This situation is pretty common and has existed for time immemorial - undergraduate tutor's are not likely to be seasoned developers with significant real world experience - at least outside the top tier of institutes. Many new hires / junior devs seem to have had this experience, and often come in lacking any knowledge of pretty important concepts like version control, testing, http, etc. It's ok, they have the basics and can learn on the job but I do often wonder what it would be like if the curriculums mirrored the real world better. OP, hopefully no offence taken, the fact your coming here asking makes me think you'll do a fantastic job of this course! I don't have a java book recommendation, but if you could try and squeeze in aspects like testing, http frameworks, git and the basics of a Linux terminal you'd really be helping the students with prospective job interviews :) Edit: Wow just read course curriculum, Swing, CORBA, Servlets - throw in some XSLT and I am reliving the late 90s. OP - any chance you could swap some of these out for more modern solutions? Web interfaces / Rest / Dropwizard, spring, etc
- shivajikobardan 2y agoAs a linux/production support engineer, I am definitely going to make them learn linux some day. Because it's an invaluable skill.
- goostavos 2y agoMy $0.02: I cut my teeth on Liang's Introduction to Java Programming (9th edition). I think it's a fantastic book. The course I was taking only covered the first few chapters, but I ended up working my way through the whole book. I recall all the exercises nailing that sweet spot of being within reach with what I knew, but still challenging and rewarding. There's some stuff that felt dated even for its time. For instance, GUI programming with AWT / Swing. It's super disappointing to spin up a GUI and have it look... well, like Java GUIs do. As a student, it can be a bit demoralizing to spend a bunch of time and effort only to end up with something that looks so stupid and unfinished. On the whole, though. Great book.
- rr808 2y agoI'm a Java programmer who's been at it for 20 years. Its really difficult to find a definitive modern Java guide right now because there are multiple paradigms that are popular. There is the old school - everything has an interface, with a concrete implementation and test implementation. OOM ORMs probably Hibernate. Lots of long winded naming. Add some functional features in Java 8, streams, lambdas but still kind of a hybrid. Scala & Kotlin distracted much of the purely functional people but has influenced Java a lot to complicate what normal Java looks like. Spring has a huge influence and probably is still the defacto framework to build in. Sprinkle in some Clean code culture - (4 line functions) which got really popular but has died off. Add reactive programming. You need async in single threaded languages like JS and Python, and you need async in high performance applications. Its toxic for most projects but has nonetheless been enthusiastically adopted and corrupted many a code base. I like Vertx because its a complete break from Spring and much simpler with less magic, but it hasn't really gained enough popularity. Java 17/21 added a bunch of new concepts like Records which some people have adopted Java into DDD style that is completely new. So "Java" can mean so many different styles now its impossible to have one recommended textbook. Bloch you can't go wrong but is kinda basic construction rather than higher level guidance. I like "Vert.x in Action" but in general its not a good standard Java text. I'm kinda curious what others will suggest.
- barrenko 2y agoAs a Java newbie once upon a time (never mastered it, just switched langs), I never really grokked how one would pick up Spring without a dedicated mentor, especially if it's a bit more of a legacy project.
- rr808 2y agoAgreed, if you're coming from a different environment, Spring is a huge learning curve. Spring Boot I think makes it worse, too much magic.
- smokel 2y agoA very nice summary of the current state of affairs! Depending on the codebase one will be working on, it is probably beneficial to have lived through this entire history, so that one can discern which paradigm is hype or here to stay. I wonder what approach in teaching students is most useful to become a decent software engineer. Is "history of software engineering" a mandatory course in most universities now?
- deleted 2y ago[deleted]