As someone without a maths background, how should one study for a mathematical logic master's degree? I have a background in philosophy and I am currently enrolled in a Master's degree in logic.
I prepared as best as I could before I enrolled (read How to Prove It by Daniel Velleman and chapters on propositional logic by Derek Goldrei), but despite the lecturers and my best effort, I am still struggling to catch up, here are the biggest hurdles I encounter.
If anyone can offer me any advise, I will be very grateful.


*

*Textbooks rarely spell out the details of proofs: Most textbooks we
use are aiming at a mathematical audience who are very comfortable
with filling in the 'trivial' details of proofs; but coming from a non-maths
background, it often feels like reading an alien language.
For example, in inductive proofs, the inductive hypothesis is
usually left out, so it is very confusing when all of a sudden it is
invoked to prove something. I understand the concept of inductive
proofs, but that is not to say I can fill in the gaps of a proof
easily. 
And this difficulty is not confined to inductive proofs only: a lot
of the time I find proofs inferring a conclusion from something seemingly
self-evident - except to me.

*Exercises without solution: I am very reliant on doing exercises to
understand a concept, yet most textbooks simply do not offer any
solution to the exercise. I can still try them, but it seems
pointless if I will not be able to check my work. 
I can check my answers with the lecturer, but there are only so many
I can check without taking too much time of the lecturer.

*Getting stuck at unimportant topic for too long: because of how much
I struggle with reading proofs, I find myself stuck at proofs often
for hours or even days/weeks. It maybe sensible to skip some of the
non-essential proofs, but I can't really tell which ones are
essential. (And of course even if I do I will still struggle to
understand them)

 A: *

*is a problem you most likely can't get out of without just ... doing some maths !


Indeed when you have a maths education, there are certain tricks/methods that you see all the time, so you know how to use them, and when you see a proof you immediately know that this is how you should fill the gap; also with a maths background you have a way of thinking that is perhaps closer to the author's, and so you can see "what they mean" even when the details aren't fully written down : you know how to write them down. 
It must be remembered, though, that even with a maths background, there are sometimes proofs that just aren't clear, or just this time you can't seem to be able to fill the gaps; and so you have to think about them : that's why even to mathematicians, reading a proof is not necessarily linear, or in linear time.
What I sometimes do when this happens (i.e. when I spend too much time thinking about a detail that I don't understand) is just say to myself : let's leave that part of the proof on the side for a moment, accept the intermediary result that it's trying to prove, and move on : I'll get back to it at the end of the proof.
This way you can read the proof, understand the basic structure, hopefully most of the arguments; and then with this picture in mind you can come back to the details you missed, and then try to understand them: sometimes (very often for me) the reason you don't understand a part of the proof is because you don't understand the point of this part - with the global structure you can understand this better, and even sometimes manage to replace this part with another proof you came up with.
And if, even then, you still don't understand, you can go to your lecturer or to some maths website (like this one) to ask for some help !


*is in some sense structural : the problem with exercises whose solution is given is that many students will just go look at the solution; even if in good faith they don't want to see the whole solution, but just a hint; or just to check their work : often when you go look at a hint you end up reading the whole proof, or if you want to check your work and your solution isn't correct, you end up reading the one that's given.


But your math skills can't improve if you only read solutions to exercises.
Some textbooks do have the solutions of their exercises, often at the end of the textbook, or at least in a different section; some others have online documents dedicated to these solutions. 
I agree that you can't go see your lecturer about every exercise you solve; but most of the time if you have a correct solution, you know it is correct; though of course there can be some false positives. An important thing to remember is that if you're not fully confident, then you have to check it again; and if you're fully confident, well you can only hope to be right. 
If you can't just leave an exercise you solved and have to have someone's opinion on your solution; perhaps a good thing to do is to (at least at the beginning) explicit every single step of your reasoning, not like the textbooks or teachers do. Maybe get to a different line when there's a different argument, and write the reason why the argument is valid, and then it'll be easier to check, and you will be more confident. 
Again : if there is a single step in your argument that you can't quite justify, that's an issue; and expliciting every step can help make sure this does not happen. 
At the beginning you'll be writing looong solutions (e.g. "so we proved that $A$; but we proved earlier that $A\implies B$, so now we can conclude that $B$ [modus ponens]") and as time moves forward you'll leave more and more details "to the reader", but as you'll be more experienced, you'll each time know exactly how to fill the gaps; and doing this yourself will probably help with point 1. too


*That's a problem that's closely related to point 1. Moreover, mathematicians do also often get stuck on unimportant issues. Of course, with a math background, this probably happens less often; and also you can probably more easily judge whether a part of a proof is important or not (e.g. if it's just a computation in a conceptual argument and you're stuck at some point of the computation), so it's easier that way - but this can only come from practice. 


People with a maths background don't get stuck less because they're smarter or god-knows-what, they get stuck less because they've been stuck so many times that they now know how to get around the thing that's keeping them stuck. 
It's like this quote (by Niels Bohr, according to Google) : "An expert is a person who has made all the mistakes which can be made" [I've taken the liberty of changing "man" to "person"] : to know how not to get stuck on proofs, you have to get stuck on many of them, and there isn't really a better way. For some people it will be quicker, and getting stuck once will be enough, for some it will take longer; but you have to go through the process at some point.
