bkcooper
Joined 12 years ago
Joined 12 years ago
However, I might suggest that books and theoretical knowledge are not the main things you need right away. I moved into software engineering after a long time in science. I had done plenty of coding, and had a pretty decent amount of theoretical knowledge, but there was still quite a bit of practical adjustment. I really like Rzor's suggestion of https://missing.csail.mit.edu to start with.
Beyond that, I think maybe I would find some specific codebases that you'd like to understand better, and start with reading more of those. I feel like that's often better than books for picking up idiomatic usage and patterns in given domains. As you hit specific barriers, I think it will be much easier to pick up the intrinsic motivation to dip back into theoretical knowledge at that point.
Except half of Fire Upon the Deep was characters on the same planet but it was actually cool. The first two books are definitely among my favorite sci-fi of all time, the third one was a dud.
My main gripe is that these three books all share the same trope that underpins one of the major subplots: glib, charming politician type is scheming, eeeeevil. In the first two books, there's enough novelty (how the Tines and Spiders work, programming as archaeology, localizer mania) to make up for that. But I don't really think the third book adds much in the same way, and it is also very clearly building to a confrontation that will happen in a future book. So the staleness is much more noticeable
Signals processing, though, is one of the places where I actually think a decent understanding of some of the higher-level concepts in linear algebra is really helpful. Linearity itself comes to mind, and maybe it just reflects my physicist's education, but it's hard for me to imagine having a working understanding of Fourier transforms without getting the idea of changing bases. I feel like you're about halfway through a first linear algebra course before you'd get there.
EDIT: that said, a good signals processing book probably covers a lot of this in sufficient depth if you can figure it out. The other catch-all comment I'd make is that linear algebra from a math class can look somewhat different from practical linear algebra on a computer. (That it's often a bad idea to directly invert a matrix for many computing applications is non-obvious from math class.) A book like Trefethen and Bau is great on that latter subject but is not a good starting point for OP.
A couple of other suggestions:
Nesterov's Introductory Lectures on Convex Optimization. This one is pretty tough sledding, but I found the perspectives in the first chapter particularly to be enlightening. It seems like there's a newer Springer book which is probably an expansion on this.
Bertsekas's Nonlinear Programming. Bertsekas has written a lot of books, and there's a fair amount of overlapping going on. This one seemed to be the one that has the most nuts and bolts about the basics of optimization.
EDIT: If you want more understanding of convexity beyond what's presented in these books, Rockafellar's Convex Analysis is helpful.