I recruit these people for a living.
You’ve gotten excellent perspectives here. In general it sounds like your son is more interested in software than hardware.
It’s generally true that computer engineering touches more on embedded systems and hardware.
You don’t need to look for a degree in Software Engineering, that is generally covered in a good Computer Science degree. In my opinion, the B.S in CS is the most marketable, and generally broad-based degree for someone to be a software engineer. Most of the courses a non-negotiable. You get to try some different things as you get higher-lever, User Experience, AI, machine learning, perhaps data science. It all will depend on his interests. This doesn’t mean you can’t get a job with BA in Computer Science. In the end you have to be able to code, and probably design software. Some companies tend to prefer the BS, but it’s not a hard and fast rule. Put it this way: the BS helps open certain doors.
He may combine his degree with Math, Econ, etc for a broader perspective if he wants or minor in something of interest to him.
What’s important is that the program and the school give him opportunities for internships and/or research. Internships are more key if he wants to be marketable when he graduates.
By the way, ALL really good software engineers have to be able to code. Good, lean, clean, scalable, reusable code is key. He will also need to learn to work with users, design/architect software well, work with teams, etc. The best software designers are inevitably excellent coders, and however senior, never lose the common touch and can easily jump in and fix a team member’s code. Most software designers/engineers (titles vary) wants to work on new projects, with a cross-functional team of users, business stakeholders, where they design and code greenfield projects. Then they want to lead projects and teams, then entire engagements, then they want to be thought leaders. Future’s so bright, you gotta wear shades.