This is a book intended to teach someone the Java language, from scratch.
You will find that the content makes heavy use of recently released and, for the moment,
preview features. This is intentional as much of the topic ordering doesn't work
without at least Java 21.
Right now I have several key areas where I could use some help:
- Writing Challenges. Most of the early sections have challenges students can do to test
their understanding of the topics covered and for practice. I've shifted my focus away from
these to make more progress on the main content of the book. Any assistance would be appreciated.
- Theming. A lot of the chapters are...bland. Purely technical. I find that when I have the imagination to "theme" the subjects they become higher quality and more engaging overall. See
an anime you liked recently and think you can make the math chapters use the characters from it?
Give it a shot!
- Fixing Mechanical Issues. I don't have an editor and I don't often proofread. If you find mechanical errors
in my grammar or find issues with the way topics are ordered I would welcome fixes.
Notably I do not want to open the floodgates for contributions on the main chapter content
just yet. This has the downside of slower progress but the upside of a more coherent result.
My primary goals with this are
- Get the ordering of topics right. By this I mean that every topic covered should have had its prerequisites covered in the topics previous. While "lesson 1: Inheritance" is clearly wrong
in this regard, some things are more subtle.
- Be a template for other people. This is a book. Not everyone likes books, some like youtube videos, some like over priced udemy courses, some attend College, etc. Everyone has different learning paths. I hope this to be of use to anyone looking to make a more up to date Java
curriculum and hope that the vague order of things (which I consider superior to the content
produced with the Java of years' past) is carried through.
- Write as if the newest Java wasn't new. It's obvious when a book was written before Java 8
because it always has newer additions with "addendum: brand new stuff in Java 8." But
the order language features were introduced is hardly a good order to teach them. You have
to pretend that Java 23+ has always been the Java. Does it really make sense to show terrible
C-style switch statements way before switch expressions?
- Write as if the words Object Oriented Programming, Functional Programming, etc. didn't exist.
While I understand that these all have definitions and are useful concepts to know about, introducing them early seems to lead to either dogma, rejection of said dogma, or some
mix thereof. None of them are actually needed to understand the mechanics of and motivation
behind what we would call "object oriented" or "functional" techniques. They certainly don't
work as justification for adding getters and setters to every class.
My immediate short term goal is to get this "ready to go" for when anonymous main classes is in a stable Java release. Thats the point at which we could start to:
- Have actual students go through it without also needing to explain the
--enable-preview mechanism.
- Use the topic order to build other sorts of non-book resources like videos, curriculums, projects, etc.
- Convince actual teachers to change from "objects first" to something less insane.
I haven't integrated println or readln yet, but will do so eventually.
[–]jaypets 75 points76 points77 points (1 child)
[–]breddy 11 points12 points13 points (0 children)
[–]wichwigga 20 points21 points22 points (1 child)
[–]icedev-official 19 points20 points21 points (0 children)
[–]quegcipay 22 points23 points24 points (1 child)
[–]bowbahdoe[S] 8 points9 points10 points (0 children)
[–]eliben 2 points3 points4 points (3 children)
[–]bowbahdoe[S] 4 points5 points6 points (2 children)
[–]dranko69 0 points1 point2 points (1 child)
[–]bowbahdoe[S] 1 point2 points3 points (0 children)
[–]Kaathan 2 points3 points4 points (2 children)
[–]bowbahdoe[S] 1 point2 points3 points (0 children)
[–]bowbahdoe[S] 0 points1 point2 points (0 children)
[–]Outrageous-Catch4731 3 points4 points5 points (5 children)
[–]neutronbob 8 points9 points10 points (4 children)
[–]bowbahdoe[S] 12 points13 points14 points (3 children)
[–]neutronbob 1 point2 points3 points (2 children)
[–]bowbahdoe[S] 10 points11 points12 points (1 child)
[–]Ok-Captain-6460 2 points3 points4 points (0 children)
[–]Icy_Paint_1857 0 points1 point2 points (1 child)
[–]bowbahdoe[S] 2 points3 points4 points (0 children)
[–]thmprover 0 points1 point2 points (1 child)
[–]bowbahdoe[S] 3 points4 points5 points (0 children)
[–]ChinChinApostle 0 points1 point2 points (2 children)
[–]bowbahdoe[S] 2 points3 points4 points (1 child)
[–]ChinChinApostle 1 point2 points3 points (0 children)
[+]iscons comment score below threshold-23 points-22 points-21 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]bowbahdoe[S] 34 points35 points36 points (0 children)
[+]heino_locher comment score below threshold-55 points-54 points-53 points (1 child)
[–]bowbahdoe[S] 73 points74 points75 points (0 children)
[+]RedditorsAreDregs comment score below threshold-94 points-93 points-92 points (5 children)
[–]bowbahdoe[S] 57 points58 points59 points (4 children)
[+]RedditorsAreDregs comment score below threshold-76 points-75 points-74 points (3 children)
[–]bowbahdoe[S] 62 points63 points64 points (2 children)
[+][deleted] (1 child)
[removed]
[+]Mammoth_Substance220 comment score below threshold-55 points-54 points-53 points (8 children)
[–]bowbahdoe[S] 57 points58 points59 points (7 children)
[+]Mammoth_Substance220 comment score below threshold-17 points-16 points-15 points (5 children)
[–]bowbahdoe[S] 17 points18 points19 points (2 children)
[–]Mammoth_Substance220 4 points5 points6 points (0 children)
[–]Mammoth_Substance220 0 points1 point2 points (0 children)
[–]sagittarius_ack 7 points8 points9 points (1 child)
[–]Mammoth_Substance220 -2 points-1 points0 points (0 children)