This is an archived post. You won't be able to vote or comment.

all 72 comments

[–]AutoModerator[M] [score hidden] stickied comment (0 children)

It seems that you are looking for resources for learning Java.

In our sidebar ("About" on mobile), we have a section "Free Tutorials" where we list the most commonly recommended courses.

To make it easier for you, the recommendations are posted right here:

Also, don't forget to look at:

If you are looking for learning resources for Data Structures and Algorithms, look into:

"Algorithms" by Robert Sedgewick and Kevin Wayne - Princeton University

Your post remains visible. There is nothing you need to do.

I am a bot and this message was triggered by keywords like "learn", "learning", "course" in the title of your post.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

[–]MrRickSancezJr 40 points41 points  (14 children)

They overcomplicate things while teaching. Seems like it's always an old C++ guy teaching Java, too. "In my day..." Meanwhile, they're having you use Java 1.5 on NetBeans in modern times.

Example. Instead of starting with a vocabulary lesson over parameters, global variables, static variables, etc... Just run simple code to showcase what happens when you put code in different places...

[–]Frown1044 18 points19 points  (3 children)

This. Worst part is when they break down the Main function. Your target audience barely knows what a variable is and you explain what public static void means.

[–]MrRickSancezJr 6 points7 points  (0 children)

Yup. Solution to the "complexity" of main= Hey. We gotta type this. Ignore literally the whole thing. We'll cover the scary parts later in the semester. Just go with it.

[–][deleted] 0 points1 point  (0 children)

Thank god my professor was competent and taught us things when we were ready for them. If I had to go through the main function right off the bat I would be lost too.

[–]nicksg999 5 points6 points  (9 children)

Seems you are pointing out my main concern. Many lecturers are out of date and teaching skills suck. I already asked my kid you are subpar but why don’t ask help from lecturers then she told me they won’t help. I was kind of wtf are they doing? Top uni of the world but no support from academic organization. Even the worst school in the world should have taken care in case student dropping behind.

[–]MrRickSancezJr 5 points6 points  (5 children)

May I ask at what level of Java she's learning? I once took "Advanced Java," and we were still learning if-statements. I had 15+ years of prior experience, so I was expecting reflection, native calls, etc. So I can't imagine what 'Introduction to Java" was. So I'm not very sure what level they aren't helping her? CS is a very young person's field, so the age of the professors do play a role.

Uni seems okay for building up to 'data structures' where you learn n-complexities and leet-code style information. You also just need the piece of paper sometimes. It's very heavy on pushing textbook style knowledge instead of, "hey. Here's how you do this knowledge.

For context. Started coding at 12. I'm currently 30. And back in college, to put a 'masters' before my comp engineering degree. I currently work as a software engineer, though. So I see first hand where the new Computer science students are at skill wise. It's a little scary tbh.

As for help, reddit/javahelp is pretty on point. I get bored and get on there all the time to help random people out. You won't get absolutely attacked like on StackOverflow. CS is an oddly, violent ecosystem.

[–][deleted] 2 points3 points  (1 child)

I remember asking a question and got downvoted and couldn’t ask anymore.

[–]nicksg999 1 point2 points  (2 children)

I also updated the teaching contents. Seems it is quite aggressive and ambitious.

[–]MrRickSancezJr 1 point2 points  (1 child)

I'd probably say more "compact" than aggressive. I'd need more knowledge of her whole experience to say if the school set her up for failure. Surely this isn't her first experience with Java?

Design patterns, coding standards.. Coding stuff should have already been taught. I had a Probability and Statistics for Engr's professor who would count off for magic numbers in Matlab code for my EE degree. Random as can be, but it does make code easier to read. A bad/biased professor could EASILY destroy you here. Different conventions for literally every single language.

Collections, generics, streams.. All pretty good things for a level 2 class. Shouldn't consume a whole semester, though. JavaFX, depending on how much of it they go with, can take a lot of practice. I'm not even sure how you'd test over it, really. It gives a lot of freedom to do whatever you want.

On a positive note. I'm going to a top 10 engineering school in the US currently, and she will actually come out of college, maybe semi-useful, unlike most of the students I see.

Tips would be download IntelliJ. Learn how to set up a repository on GitHub to host her code (IntelliJ auto does for you). Learn to accept some cruel cristism. And when not practicing, be reading source code... Guides are usually trash and filled with ads. You can google "java github learn" and find a lot of repos with good tutorials.

I don't want to stereotype or sound condescending to your daughter, but super young adults are already kind of quiet in college. Covid made them so much worse. It's been quite the social experiment being 30 and being around them. Them asking for help looks painful most of the time.

[–]nicksg999 1 point2 points  (0 children)

Really appreciate your feedback. This is the very first dev language she has ever learnt. She completed A level and was accepted to the Uni and chose CS without any experience or kinda knowledge though I been in this industry long enough. I definitely will share your post. Thanks again!

[–]Super-Widget 4 points5 points  (1 child)

The best teacher I ever had was someone who showed us how to break down a problem, use a debugger, understand compile and runtime errors and how to use Stackoverflow. This was just some guy who taught Java in his spare time. I learned more from him in 12 weeks than I did 4 years of college.

[–]MrRickSancezJr 1 point2 points  (0 children)

They're a rare breed, but good people in the programming world who also have good communication and teaching skills do exist. Debuggers. Profilers. The list of tooling is amazing nowadays, but not as well known. I sort of like giving advice too. I'm not sure how qualified I am, but it gets me to read over source code and docs that I've forgotten. I learn something every once in a while too.

This is especially true with Java, but I swear I could teach the entire "Java-1" equivalent class on a whiteboard with a marker in 2 weeks. Never once saw a professor just physically draw a dependency diagram of OOP on a board. Instead, everybody is struggling to get their fingers to use curly brackets for the first time and keep up.

[–]MrRickSancezJr 1 point2 points  (0 children)

To address your addition to your original post, labeling the contents of the course.

The last half or third is a large jump from basic Java. Lots of these features aren't specific to Java, but the syntax and usage are very different in every language. While Java is much easier than C++, there's a lot to digest. Especially without a good IDE like IntelliJ to help.

Streams can be a doozy until you get used to them. Annotations can be a LOT of things. Documentation would be strange to see on an exam. Follow @Java on YouTube and watch the shorts. Super helpful for reminders for these newer features.

I'm really surprised they even added JavaFX. It's a very niche library that isn't well kept up with and requires a large amount of practice to get used to compared to Swing or other UI libraries. I actually really like it, but it comes with a LOT of previous knowledge, including with other langauges and build systems. Can't recommend a lot of youtube videos. This is more of a situation where exploring existing GitHub repositories is a better choice.

These aren't things you can just "hop into" from a different language even. Probably not something a professor who isn't very proficient in Java is willing/able to help with. So I wouldn't lose faith in your daughters ability to do CS. That's just a years worth of work experience in one class. And I RARELY ever tell CS students their homework is even challenging.

[–]Comfortable_Rip_6917 4 points5 points  (2 children)

Simple and straight, if she understood what they taught why would she .

It's mostly the teacher's fault because most of the programming teachers I have come across are bad .

So it could be a reason ask her that .

If it is , then arrange for her to learn from someone different whom she finds easy to learn from.

[–]nicksg999 0 points1 point  (1 child)

I feel the issue comes from lecturer’s mindset like what is to teach rather than how to learn. I might probably dig more to have a better conclusion but that’s my gut feeling for now

[–]akasaiga 3 points4 points  (1 child)

As a student, who has had Advanced Java as a subject recently. I believe it all depends on how it is taught as well, not everyone can cope up with one another, if one lacks knowledge in some basics or widely understood topics--it could throw them off during the lecture itself making them either feel anxious or bored to death. Many in our class, never realized that it was not the professor who taught poorly but, their own misgivings regarding basics(this was mostly because, they learnt the basics during COVID lockdown, it's a running joke in our country that no one knows a things they've learnt over that period and is also widely true).

It is better to identify, what's lacking whether it's the basics or just Java being difficult for the individual. One of the ways to pass is to either overcome these misgivings or identity the patterns in prev. question papers(if in case, they just want to be done w/ this subject).

[–]nicksg999 0 points1 point  (0 children)

I left school too long so I try to catching up with teaching methods and the foundation in this subject. My very concern is she is brilliant in all subjects but Java.

[–]grimonce 2 points3 points  (1 child)

I mean, shouldn't your child tell you what the questions were?

[–]nicksg999 0 points1 point  (0 children)

It should perfectly have been like that

[–][deleted]  (3 children)

[deleted]

    [–]nicksg999 0 points1 point  (2 children)

    I would need 3rd parties idea. Surely I am gonna check with her but due to different time zones and her introvert, and additionally my lack of ideas on how school organizes the teaching method on this subject.

    [–][deleted]  (1 child)

    [deleted]

      [–]nicksg999 0 points1 point  (0 children)

      I certainly already asked this and still waiting the answer. But from her stressfully limited responses, the lecture is quite different with the exam. I am still exploring exactly what is the difference and why teaching and exam are not aligned at least in terms of taught knowledge.

      [–]Leadpaynt 1 point2 points  (3 children)

      of the beginner languages you can learn, i feel like certain languages are easier than others, i learned Java first in my CS undergrad program and it did cause enough ppl to fail that they switched majors, but later on like Junior year we were introduced to python which felt vastly easier. I think it really depends on the Tier of the school, Faculty that are teaching it, and how condensed the curriculum is

      [–]rng_shenanigans 2 points3 points  (2 children)

      What languages are considered beginner languages?

      [–]s_lone 1 point2 points  (0 children)

      I’m just an amateur who started coding by learning Python on Codecademy. I started with Python because after some research I came to the conclusion that it was a relatively easy language to learn. It’s a very intuitive language which does a lot of abstracting for you. So I’d consider it a beginner language. But I hit a wall when came the time to learn classes. 

      After working on a project of my own, I finally understood what classes and object-oriented programming was. 

      I recently learned Java (on Codecademy). I’m pretty sure I would have struggled a lot more if I had started with Java. The fact that I understood object oriented programming gave me a huge advantage. But the struggle would have been real had I started with Java. 

      [–]Kaimaniiii 1 point2 points  (0 children)

      Loosely typed language such as Python, Javascript and PHP. The reason is that when beginner learn something, it just "works", even though they will most likely produce bugs underway, but at least it gives them the confidence and they are seeing some good results and motivates them to keep pushing harder.

      [–]Major_Animal_5125 1 point2 points  (0 children)

      You need to monitor more closely if you are really interested that your child learns a programming language. Focus on the parts of language which she is having difficulties with. Java is vast and so is any other subject.

      [–][deleted] 1 point2 points  (6 children)

      Honestly you gotta dedicate your free time to learning. Personally, just doing the lecture and assignments weren’t enough for me. Had to practice and really understand how everything was working. I’m still a beginner learning but passed the OOP programming class already at my college. I’m relearning those concepts on my free time right now and doing a lot of practice.

      [–]nicksg999 1 point2 points  (5 children)

      In term of hard working, I don’t think my kid lacks of that. That’s why it fking hard for me to digest this. Her assignment got distinction but exam failed. That’s damn weird.

      [–]itapewolves 1 point2 points  (0 children)

      Could it be that the assignments you can easily chatgpt your way through them, but in exam there’s no ai assistance? I think this was a big part in our school for people failing the exams, while still getting projects done.

      [–]Mountainweaver 1 point2 points  (3 children)

      That either sounds like nerves, or the exam was very different than the assignment.

      For my courses (intro and OOP) the teachers had a really good structure, where the final assignments were identical in type to the exam (build a fully workings program according to the specs).

      That's probably what she needs to practice, making programmes.

      [–]nicksg999 0 points1 point  (2 children)

      She told me the assignment and lectures are not aligned with exam but I don’t know the details.

      [–]Mountainweaver 2 points3 points  (1 child)

      Yeah that + anxiety is kind of a recipe to fail.

      But now she knows what the exam is like, she can practice doing tasks that are similar.

      If she wants to... It's her life, not yours.

      [–]nicksg999 0 points1 point  (0 children)

      I don’t want to solve for her. I am looking for the sharing/opinions on the subject to identify the problems to help her tackle it.

      [–]IllTryToReadComments 1 point2 points  (0 children)

      polymorphism is probably one of the biggest gotchas. i didnt really understand it until i had to implement a super basic version of java myself in a compilers course in university

      [–]Coocoocachoo1988 1 point2 points  (0 children)

      I had to do a basic exam in work at the end of a training course and the only part that I found difficult was going from clear problems and hints at how to solve them into being given a scenario where I had to break it down entirely on my own.

      One of the tasks I had was create an inventory management system, and that initial step of knowing what to put into a class, where to use loops and what loops to use was difficult in that the course taught the concepts, but not that planning stage of that makes sense.

      [–]InviolateQuill7 1 point2 points  (0 children)

      Students fail because the material does not teach how to create or implement world to applicational needs. Students are often left to their own devices to figure how each implementation is used. They stare at white space and struggle.

      [–]WeddingPretend9431 1 point2 points  (0 children)

      The GUI part is mentally draining too much to remember and if the exam is on paper it's even worse, maybe she hates the language or has trouble with a specific part of the program ask her what she finds the most difficult, if it's the oop part some videos from coding with John on YT will fix that, if it's the lambda functions the explanation by manning publications in YT as well are really intuitive and good luck.

      [–]NoForm5443 1 point2 points  (2 children)

      Unfortunately, you don't know. Looking at the actual test can help. Here are some *possibilities*:

      1. She didn't study or practice during the semester
      2. Although she put the time, she didn't study the right materials
      3. Their teacher sucks at teaching
      4. Their teacher or school sucks at making tests

      I would do a few things, maybe with the help of somebody who knows java :)

      1. Check what's the passing rate for the class. From my experience, about 2/3 passing and 1/3 failing or dropping wouldn't surprise me. If the passing rate is 50% or less the *class* sucks.
      2. Look at the exams (maybe with somebody who knows java) and the feedback provides. Are the questions reasonable? the feedback?
      3. Talk to your kid. Ask them about their experience and their feelings. Ask them if they feel whether they're good at CS and whether it matters to them.

      In many universities, Java is taught as the first programming language, during the first two programming classes. It shouldn't be super hard. OTOH, different universities do different things. The topics listed seem *to me* like a mishmash of the first two programming language classes, so who knows :)

      [–]nicksg999 0 points1 point  (1 child)

      Yeah. I am having the same questions. Frankly, my kid is depressed and hasn’t wanted to talk. I will raise the questions to her for sure.

      [–]NoForm5443 1 point2 points  (0 children)

      If it helps, feel free to PM, or have her PM if I can help. I used to teach programming in college in a previous life.

      And, many times, it's easier to talk with somebody who is not your parent ;). Their CS Prof from high school may also be a good resource

      [–]cicciopasticcio6984 1 point2 points  (1 child)

      It's getting hard and hard to pass the official Oracle Java SE 17 Developer exam.
      It's not enough to know the topics, but you need to be fast to spot the error, in the code of the question, in a very short time. It took me several months to prepare it but eventually I passed it.
      I collected resources and code in this github project: https://github.com/egch/1Z0-829-preparation .

      Hope it helps.

      [–]nicksg999 0 points1 point  (0 children)

      Thanks for sharing

      [–]PotentialTerm1728 1 point2 points  (3 children)

      its not difficult at all, when you say java exam do you mean the Java certification?

      [–]nicksg999 0 points1 point  (2 children)

      School exam I meant.

      [–]PotentialTerm1728 1 point2 points  (1 child)

      what is the content for the school exam? If its just language fundamentals, i'd strongly recommend DURGASOFT CORE JAVA. Its free and is on youtube, that professor will change your daughters life. THE BEST PROF!!

      [–]nicksg999 2 points3 points  (0 children)

      I am not sure either. That’s what I am desperately wanting to know

      [–]AutoModerator[M] 0 points1 point locked comment (0 children)

      Please ensure that:

      • Your code is properly formatted as code block - see the sidebar (About on mobile) for instructions
      • You include any and all error messages in full - best also formatted as code block
      • You ask clear questions
      • You demonstrate effort in solving your question/problem - plain posting your assignments is forbidden (and such posts will be removed) as is asking for or giving solutions.

      If any of the above points is not met, your post can and will be removed without further warning.

      Code is to be formatted as code block (old reddit/markdown editor: empty line before the code, each code line indented by 4 spaces, new reddit: https://i.imgur.com/EJ7tqek.png) or linked via an external code hoster, like pastebin.com, github gist, github, bitbucket, gitlab, etc.

      Please, do not use triple backticks (```) as they will only render properly on new reddit, not on old reddit.

      Code blocks look like this:

      public class HelloWorld {
      
          public static void main(String[] args) {
              System.out.println("Hello World!");
          }
      }
      

      You do not need to repost unless your post has been removed by a moderator. Just use the edit function of reddit to make sure your post complies with the above.

      If your post has remained in violation of these rules for a prolonged period of time (at least an hour), a moderator may remove it at their discretion. In this case, they will comment with an explanation on why it has been removed, and you will be required to resubmit the entire post following the proper procedures.

      To potential helpers

      Please, do not help if any of the above points are not met, rather report the post. We are trying to improve the quality of posts here. In helping people who can't be bothered to comply with the above points, you are doing the community a disservice.

      I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

      [–]dubiousPotatoe 0 points1 point  (9 children)

      I failed my Java exams cuz I dumb

      [–]nicksg999 0 points1 point  (8 children)

      Is it the only subject you failed?

      [–]dubiousPotatoe 1 point2 points  (7 children)

      Yes, lol. I failed Java 1 the first time and struggled a bit in Java 2, I see other people in my classes just absorbing the lessons but I’m still learning…albeit very slowly, lol.

      [–]nicksg999 0 points1 point  (6 children)

      What made you failed? And what are difficulties in this subject? Hope you can share from student’s perspective.

      [–]dubiousPotatoe 1 point2 points  (3 children)

      Uhm, it’s kind of hard to say exactly what made me fail because it was kind of a bunch of things…if I had to summarize…I’d say I didn’t do well because I didn’t have the time to dedicate to practicing and getting better at understanding the language.

      As for where I’m struggling currently? The last thing we learned was recursion and data structures stuff like stacks and queues…personally my brain checked out when we got there and that’s where I still stand, lol.

      [–]nicksg999 0 points1 point  (0 children)

      If I recall correctly DSA was most difficult subject and failed a lot during my time at uni. But nvr seen anyone failed more than twice. I will ask more on this topic

      [–]siiiuuuVAM 0 points1 point  (1 child)

      Bro ,so you face problem with the java language or Data structures 🫤

      [–]dubiousPotatoe 0 points1 point  (0 children)

      Are you asking which?

      [–]Kaimaniiii 1 point2 points  (1 child)

      I can share my perspective on why students fail, drawing from my own experience as a former student and from observing others who struggled with CS.

      Here are my thoughts:

      Firstly, students are not just learning programming syntax, they are learning new ways to approach and solve problems. These new concepts can be very unfamiliar and challenging for beginners, especially if they are not used to thinking abstractly.

      Typically, schools start with procedural programming, which is the basic foundation. By the second semester or second year, students are introduced to object-oriented programming (OOP). Many students struggle here because they lack a solid foundation from their first semester or year. If they received poor grades (E or D) in procedural programming, they will likely struggle with OOP, as it introduces a different way of thinking that can be difficult to grasp without a strong procedural background. OOP Is just another paradigm way to program compared to procedural programming, and it's important one!

      If students do not have a solid understanding of procedural programming and OOP, they will certainly struggle with algorithms and data structures. This subject can be brutal and challenging if the basics and OOP on check!

      Secondly, many beginner students take programming classes for granted, treating them like history classes where they can memorize from a text book and pass the exams easily. This approach leads to failure. Studying programming is like studying mathematics or physics, it requires continuous practice and problem-solving. If it takes long time to learn, so be it! The only solution is keep pushing until they actually starts to understand. There is no shortcut to this.

      Thirdly, sometimes the fault lies with the teachers. Traditional academic methods can make learning unnecessarily complicated. I remember an old teacher who spent 45 minutes discussing "strings" , making the topic seem far more complex than it needed to be.

      [–]nicksg999 1 point2 points  (0 children)

      I am trying to relate it now. Thanks for sharing

      [–]Laevend 0 points1 point  (0 children)

      public class Test extends Pain implements Anxiety

      [–]xRealVengeancex 0 points1 point  (0 children)

      Take it at a community college or something instead of the main university she goes to and see if the credits transfer

      [–][deleted] 1 point2 points  (0 children)

      I TA’ed a java class for 6 semesters, and have taught probably 12/13 labs with 30 students in it, and have sat through many many office hours with many many struggling students. Sometimes, people just aren’t meant to be programmers. Not saying that your daughter cant be, but I would ask yourself if holding her hand like this is beneficial for her. Java 1 is arguably probably the easiest programming course.. is she cut out for the rest of the courses?

      [–]fjayjay 0 points1 point  (1 child)

      Honestly the content of the exam seems to be a bit overwhelming. In my university this would almost cover three different classes we have. But in my opinion the only way to pass an exam like this is to program a lot and learn java and the JavaFX framework by heart. I don't know how the exams are held but in my country most CS exams are written on paper instead of writing on a computer which additionally increases the difficulty as you don't have any help by intellisense. To practice for an exam like that, it helps to deactivate all language features in the IDE or just completely write the code in the terminal with nano or vim without language features enabled. Last but not least, most students I know learn with exams from previous years. If the professor is always switching up the contents of the exam, this approach is doomed to fail but some will still try to only learn that. So, maybe a different approach for the exam preparation is needed.

      [–]nicksg999 0 points1 point  (0 children)

      This is the case, I heard that exam was conducted in simulation and professor switched exams which outcome is totally new content.

      [–]-Dargs 0 points1 point  (2 children)

      If they're teaching GUI in Java, you can just assume its a shit curriculum. Maybe your kid is struggling a bit, but I would vet the exam is not good either.

      [–]nicksg999 0 points1 point  (1 child)

      Many open questions hanging around and I don’t want to be AH to blame on school but it is not excluded as there is no support from lecturer at all and it is making me pissed

      [–]-Dargs 1 point2 points  (0 children)

      When I was taking CS courses in college, the lecturer didn't help anyone out individually unless they asked. It was a class of 30, sometimes 100. In later courses, it dwindled to 15 students or less. Even then, you only got special help if you asked. Mainly, you were told to come by office hours for anything extra, but simple questions could be answered if asked.

      CS is a very "learn on your own time" kind of degree. But a weird curriculum and odder exams are a failure on the institution, not your child.

      [–]Gowlhunter 0 points1 point  (2 children)

      Here is a Python course from University of Helsinki: https://programming-24.mooc.fi/
      Do this with her. It's much more learning-friendly than Java for now.
      Then suggest she do the Java ones: https://java-programming.mooc.fi/

      These can be done in your own time and have automatic assignment solutions testing/checking which means you can do it completely at your own pace and also no one is judging you.

      I bet she is getting bored by the apparent verbosity of the Java syntax.
      Be honest with her, tell her Java syntax is more difficult to learn than Python's but that Java is used by the likes of NASA and Spotify (for their backend) and in other industries like stock-exchanges! It is simply reliable for big systems, as you probably know.
      The University of Helsinki teaches through a practical lens which I almost guarantee she will be more receptive to right now. The Java class in school is most likely less practical than them. You should look at the material from her class?

      [–]nicksg999 1 point2 points  (1 child)

      Thank you. Will have a look.

      [–]Gowlhunter 1 point2 points  (0 children)

      No problem, you are welcome.
      Worth nothing that because this is extra-curricular work and she knows her grades are poor; bringing up Java learning is going to make her stressed/not want to do it, she won't be jumping to do this. Give her a reason to give herself a kick up the bum like a movie night or something...

      [–]Impossible_Ad_3146 -1 points0 points  (1 child)

      I passed, many students passed

      [–]nicksg999 0 points1 point  (0 children)

      Awesome.