I disagree, compiler design is like one of the final bosses of CS and every topic covered in previous years of study gets show time in a compiler. Computer architecture is where the abstract meets the metal so thats needed too. Also, in between these two in particular programmers can debug much more efficiently as they now understand exactly whats going on from their source to the run time characteristics when something went wrong or is running sluggishly.