I would probably start with "computer architecture" and "design of programming languages" courses, after that I would ready to learn assembly (x86_64, arm, MIPS - ATT/Intel) and C.
After learning perfectly how a computer works "under the hood" I could dedicate myself to refining my knowledge.
This book is dated - there was the kernel 2.4 and a lot of system calls were changed or removed - but I think it is one of the best book available on GNU/Linux system programming.
I love "UNIX Systems Programming: Communication, Concurrency and Threads", it is simply great.