i’ve been using mullen & mummert’s “finite fields and applications”. i’ve only really managed the background appendix and first chapter, despite a fair amount of work, which was making me feel pretty dumb. but looking at the contents of “a computational introduction to number theory…” that seems to be equivalent to a third of that book! which made me feel a bit better. mullen & mummert is very slim, and doesn’t repeat itself, but it’s clear and well written as far as i can tell.

it also helps to get your hands dirty. i read again and again about polynomials in GF2, but it wasn’t until i actually decided to implement a library of CRCs that i understood just how simple this really is. julia is great in this respect, because you can define your own numbers (like, a field of integers modulo some prime) and then because of it’s cool multiple dispatch, the inbuilt functions (like matrix inversion) “just work”. more on that at http://acooke.org/cute/FiniteFiel1.html

finally, something else i’ve found motivating to understand more theory is schneier’s course on block ciphers. this is very old-school and out of fashion these days, for crypto, but it’s a nice, guided set of exercises that slowly push you to learn more theory. https://www.schneier.com/paper-self-study.html (although again, i am way way slower than his estimated speed - my progress is at https://github.com/andrewcooke/BlockCipherSelfStudy.jl)

If you want to play with ‘exotic’ rings and fields, Sage might also be useful: it already has implementations of pretty much every kind of ring or field you might want to use, and it’s built on Python.

It can be sort of clunky at times, because it includes everything and the kitchen sink, and it’s certainly less elegant as a system than, say, Julia, and of course it’s pretty satisfying to implement all the rings you need yourself. But if you want to just try something out, it can be convenient already having all the math there already.

The original purpose of Sage was to have Free software for doing research in number theory, so the implementations of number-theoretic tools are quite complete and extensive, all the way up to the research level.

Edit: for instance, there’s some documentation here that covers some of the advanced functionality of Sage for computational number theory.

i’ve been using mullen & mummert’s “finite fields and applications”. i’ve only really managed the background appendix and first chapter, despite a fair amount of work, which was making me feel pretty dumb. but looking at the contents of “a computational introduction to number theory…” that seems to be equivalent to a third of that book! which made me feel a bit better. mullen & mummert is very slim, and doesn’t repeat itself, but it’s clear and well written as far as i can tell.

it also helps to get your hands dirty. i read again and again about polynomials in GF2, but it wasn’t until i actually decided to implement a library of CRCs that i understood just how simple this really is. julia is great in this respect, because you can define your own numbers (like, a field of integers modulo some prime) and then because of it’s cool multiple dispatch, the inbuilt functions (like matrix inversion) “just work”. more on that at http://acooke.org/cute/FiniteFiel1.html

finally, something else i’ve found motivating to understand more theory is schneier’s course on block ciphers. this is very old-school and out of fashion these days, for crypto, but it’s a nice, guided set of exercises that slowly push you to learn more theory. https://www.schneier.com/paper-self-study.html (although again, i am way way slower than his estimated speed - my progress is at https://github.com/andrewcooke/BlockCipherSelfStudy.jl)

If you want to play with ‘exotic’ rings and fields, Sage might also be useful: it already has implementations of pretty much every kind of ring or field you might want to use, and it’s built on Python.

It can be sort of clunky at times, because it includes everything and the kitchen sink, and it’s certainly less elegant as a system than, say, Julia, and of course it’s pretty satisfying to implement all the rings you need yourself. But if you want to just try something out, it can be convenient already having all the math there already.

The original purpose of Sage was to have Free software for doing research in number theory, so the implementations of number-theoretic tools are quite complete and extensive, all the way up to the research level.

Edit: for instance, there’s some documentation here that covers some of the advanced functionality of Sage for computational number theory.

thanks, i’ll check it out.