I haven’t taken all of them but I know people who have for each, the reputation of them, and what to expect.
Algorithms - I have taken this at the Masters level - It was a lot of proof based mathematics for me and it draws on a lot of data structures. It’s a theory course technically, but there’s a good deal of application to it. Sorting, Optimal Solutions, and how to create algorithms for problems. The class essentially covers all of that. My class was really intense - the midterm and final grades were 60% or so because the whole test was hard problems that he asked us to come up with algorithms for on the spot - I learned more than I did in any other class. Undergraduate was significantly easier. It’s a very important class but shouldn’t be too hard.
Operating Systems - Currently starting a Masters level version of this (Computer Systems) on Monday - Should cover the basics of computer architecture and include lots of low-level programming. Will probably be project based and won’t be as easy to pick up as some of the higher level languages is what I’ve heard.
Programming Languages - Currently starting at Masters level on Tuesday - very hard at my university, can vary for others. Discusses the theory of language design (OO versus Functional, Different Typing Systems, Inheritance, Syntax) as well as the implementation of it (parsing to actual representation).
Software Engineering - Yet to take. Varies a lot based on how much work the prof assigns and how project-based the class is. Takes all your coding experience and puts it to work on a large scale project. Should also discuss the different ways to develop large software projects with teams - very crucial in industry but also usually different in industry than in the class. The idea is essentially preparation for industry and large projects.