Hey @zai,
Don’t worry about not replying straight away! I know that sometimes we first need to take some time to think things through. Also that’s normal to not understand everything when someone explains things to you for the first time. You shouldn’t let that slow you down too much, because, as long as you read things over a few times and try to understand as much as possible, then you will find that the more difficult concepts do eventually make a lot more sense later on. I sent you some quite detailed comments because you had put a lot of effort into attempting to explain what the code was actually doing in this assignment solution. This is a great way to learn, because even if your explanation isn’t quite right to start with, the main thing is you are getting your brain used to thinking about things in a certain way. It also makes it easier for someone else to see what it is that you understand, and the things you need more help with.
In terms of additional reading material it can be difficult at first because a lot of the documentation, information, and articles about Solidity can be quite confusing for beginners — especially because of all the new terminology. That’s one of the reasons why I really recommend that, after completing an assignment and posting your solution, take some time to study some of the other student posts in the same thread, and try to understand the solutions that may be different to yours. There are often several possible alternatives. You will also learn a lot by reading through some of the comments and feedback posted here. Some may not make sense, but some will provide you with useful additional information, get you thinking a bit more deeply about what you’ve just learnt, and it’s also a good way to start getting used to reading about code, understanding the terminology, and also to practise reading and understanding the code itself. You should also have a look at the general discussion thread that comes with each section of the course. You will find lots more useful information and comments here, and it’s also good to see the sorts of questions other students are asking. Another good way to learn is to start posting your own questions, and when you get more confident, if you know the answer to someone else’s question, try answering that as well.
Another good piece of advice is not to rush too quickly through the courses. Take your time, spend time doing your own research, and experiment with the lecture and assignment code in Remix by reworking it, adapting it, and extending it.
Apart from that, just doing a search using keywords about something you want to understand better will often give you links to Question & Answer Knowledge Sharing Sites such as Ethereum Stack Exchange or Stack Overflow, which can be difficult at first, but once you get used to scanning and finding information that makes sense to you, this can be an invaluable source of information and example code. When searching, you’ll also often find Medium articles in the search results. Some of these can be really good, but just be aware of when they were written (see below about older/newer versions of Solidity)
The other thing I really recommend is finding some good YouTube channels about Solidity. A very good one that I use a lot for reference is:
https://www.youtube.com/c/EatTheBlocks
Have a hunt and find some beginner tutorials first to see how useful and helpful you find them. I often look for this channel’s videos when I’m doing a search about something I would like to find out more about. You need to be careful about the version of Solidity used in each video though, as many of the beginner ones will use older versions. This isn’t a major problem if you are just using them for a general introduction and extra information for different concepts, but you need to be aware of it. You can then check with more detailed documentation to see if later versions have implemented any changes. This channel also has some good videos summarising the main changes that have been implemented with new versions.
Finally, the most comprehensive documentation for Solidity is:
https://docs.soliditylang.org/en/v0.7.5/index.html
This is a link to the documentation for version 0.7.5, the version you are using in this course.
I think that’s enough information for the time being!
I hope you find it helpful and inspiring!