
For courses in Java - Introduction to Programming and Object-Oriented Programming, this fifth edition is revised and expanded to include more extensive coverage of advanced Java topics. Early chapters guide students through simple examples and exercises.Subsequent chapters progressively present Java programming in detail.
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.
* Introduction to Java Programming and Data Structures
* Head First Java
* Think Java
* Clean Code
* Pragmatic Programmer
* Effective Java
* Refactoring
* Java Concurrency in Practice
* Test Driven
* Head First Design Patterns
* Release It!
* Kotlin in Action
* Spring in Action
* Spring Boot in Action
* Cloud Native Java
* Spring Microservices in Action
* Learning Spring Boot 2.0
Feel free to add more suggestions for the list. Also make sure to share your experience with the ones already on the list.There are more materials.
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.
Supposedly all of these books assume (or at least allow for) no background in programming, but I think the reality is that taking SICP or even HtDP into the intro class at a non-elite university or a community college would be a complete non-starter and/or abject failure.
What I'm trying to say is that there is a place for both of these approaches: A deep look into computer science, and the nuts and bolts of basic "get it done" programming.
Should both of these things happen in a single class, or series of classes? I think the answer is yes. But how to do that and not leave non-elite students back on the road is another matter.
I believe that the HtDP authors think that the "domain-specific knowledge" required of SICP was a barrier.
And I also understand how advanced CS students think that a class focused on how to manipulate strings, use loops, deal with variables of various types, and work with basic logic in the context of a specific computer language is NOT computer science.
But in my view, most students -- and all average students -- need to crawl quite a way, then walk, before they can run.
Even Sedgewick's Computer Science, which focuses on Java and has a wealth of great questions/assignments all along the way, could really be a barrier to students who aren't steeped in math and science. I learned some math while going through the book, but I didn't learn so much programming. Liang's approach might be too basic for someone who has already done years and years of programming but is way more approachable for those who have not.
My guess is that many professors tried SICP and had a very poor rate of success. I fully support a selective class that says, "this is very hard, but you will learn a lot and look at the world in a different way, and if you really want to understand computer science, this is the class for you."
But there also needs to be more of a gateway class for future programmers (not necessarily graduate-school-bound CS majors) that eases them into the world of writing code. Offering the basics and sneaking in some CS seems better than doing it the other way around.
In a way, it's like the difference between carpentry and architecture. You can teach people who want to build houses how to design them, but at some point they're going to have to get out a saw, hammer and nails and make something happen.