As someone who had a technical but "not real CS" curriculum, I enjoyed Parr's "Language Implementation Patterns" book [0] because it illustrates how certain grammar-forms become recognizable code-patterns and control-flow.
Granted, it's definitely got a bent towards Parr's ANTLR project and the Java language, but I still found it made things "click" a lot better than my daunting lack of progress an old "Dragon Book" [1] which IIRC tended to float along with more mathy-notations and theory than concrete examples.
[0]: http://www.amazon.com/Language-Implementation-Patterns-Domai...
[1]: https://en.wikipedia.org/wiki/Compilers:_Principles,_Techniq...
There are also some programmers around who are going through the process of designing and implementing their own languages, you can watch their progress and ideas. Here is 1(2?) examples, Magpie and Finch by munificent. http://bitbucket.org/munificent
It seems Magpie has started out using a C# compiler/interpreter but now uses Java?
I didn't struggle with compilers as an undegrad at all, and I found this book too slow for me, so I'm optimistic that you will be pleased by the pacing. :)
If you want to see a way older approach, I did really enjoy Jack Crenshaw's "Let's Build a Compiler"[2]—but it's so vintage it may be totally hipster by now. :)
[1] https://www.amazon.com/Language-Implementation-Patterns-Doma...
[2] http://compilers.iecc.com/crenshaw/