Network cards are often seen as black boxes: you put data in a socket on one side and packets come out at the other end - or the other way around.
Let's have a deeper look at how a network card actually works at the lower levels by writing a simple user space driver from scratch for a 10 Gbit/s NIC.