Looking for feedback on the Java track syllabus

Hello students and mentors on the Java track!

We as maintainers are hard at work to design the Java track syllabus, and we are actively looking for feedback from all of you. Specifically, we want to know about:

  • Concepts that you think are typical for Java and should be added to the syllabus.
  • Practice exercises that are incorrectly linked to existing concepts.
  • Feedback on existing concept exercises (also called Learning exercises).

Of course we also welcome any other feedback you may have. The only thing I’d like you to consider is whether an issue was already raised on the forum. If so, please add your feedback to the existing topic.

2 Likes

hello, i was looking at the new java learn tab on the exercism website, a lot of concepts were rearranged and now basics, strings, booleans, if-else are connected in sequential order. is this the preferred order to solve the exercises now?

I recently added the bit operators concept for the Crystal track and would be happy to add it for the Java track too.

Other suggestions for concepts I can think of:

  • Functional interfaces, Lambdas and method references
  • Records
  • Switch expressions

Are you visiting on mobile perhaps? As far as I can tell the concept tree for the Java track hasn’t changed much, other than a concept or two that were added over the last month. I know that on mobile the tree renders like a long sequential list due to the smaller viewport.

Never mind, I see what you mean. I think this is a consequence of tagging all practice exercises with one or more concepts, causing some concepts to have a lot of (too many?) exercises, which influences the way the concept tree is rendered.

I’d say there is no real preferred order to solve exercises, other than making sure to complete the Learning exercise for each concept before starting any of the related practice exercises. This should no longer be possible anyway, since all concepts covered by a practice exercise now also act as a prerequisite.

Yes that would be a good addition. I think I wrote it down somewhere in my notes too when categorizing the existing practice exercises. IIRC the Variable Length Quantity exercise uses bitwise operations and that triggered me to consider adding it as a concept.

Yes, good one. Could be grouped into “Higher-order functions” perhaps?

:+1:

Not sure if this would warrant its own concept honestly. There is already a “Switch Statements” concept, I think the About page (which is visible after completing the corresponding concept exercise) could be updated to explain switch expressions as well. What do you think?

Let me also put my notes down here as well, since we’re brainstorming:

  • While loops; not covered by the existing concepts yet which is a shame.
  • Streams; probably needs to be preceded by a concept covering higher-order functions, but the Streams API is quintessential Java.
  • Regular Expressions; speaks for itself really, should be present in any track IMO.
  • Equality; should teach referential equality using equals and overriding the equals and hashCode methods.
  • Sorting; would be good to cover the Comparable interface.

as a noob i have not found myself using while loops that much but i would like to read something about streams

IIRC the Variable Length Quantity exercise uses bitwise operations and that triggered me to consider adding it as a concept.

It was the Eliud’s Eggs that made me think of adding it on the Crystal track (and also having seen the concept previously on the Elixir one too). I’ll get to work on a PR to add it for the Java.

Not sure if this would warrant its own concept honestly. There is already a “Switch Statements” concept, I think the About page (which is visible after completing the corresponding concept exercise) could be updated to explain switch expressions as well. What do you think?

Yeah, I think that updating “Switch Statements” with the switch expressions would be the way to go.

1 Like

Hi. I am completing the exercises in the “Learn” tab. I already know Java, but I want to refresh my knowledge. And the first exercise on Strings, “Log Levels”, seems to me too complex for a beginner. Consider that this should be the second exercise a beginner encounters. The instructions don’t explain much and the hints are links to documentation. If these exercises are for novices, why not explain the necessary methods in the instructions? A few days ago I was doing Go exercises and almost never had to resort to hints or external links to complete them, as everything needed was in the instructions. I think that, first, you should reconsider the difficulty level of this exercise (it should not be the first one that appears in the Strings section), and second, add more information in the instructions, with all the necessary methods to complete the exercise. Greetings.

While we’re brainstorming new concept ideas: cross-linking this topic by @manumafe98: Add concept: Functional Programming

Access modifiers
Constants
Varargs
Static
maybe Scanner, StringBuilder, Files/Paths classes

Another Java concept that is good to show is Javadoc. This is an interesting one to tackle though, because there is no way to write a test suite that checks whether a solution is properly documented using Javadoc.

However, we can leverage the java-analyzer to give automated feedback on student’s solutions, the AST parsed by the analyzer will include the Javadoc as traversable nodes.

Another thing to keep in mind for this one is the representer, which normally removes all comments from solutions in order to normalize them. Maybe we should look into making an exception for this if we get around to adding it.

Hello everyone,

I am new to the language and slowly working through the exercises.

I know what exercism is mostly focussed on the language, but I was wondering if there would also be the space to create exercises and concepts around important tools, such as:

I watched the first part of https://www.youtube.com/watch?v=nroPGD11hkw

Okay, I am understanding that it might not be so easy and cost-effective to add other “tools” on top of the language-learning tracks.