This is well explained on the Univ of Waterloo website and more or less applied to almost all universities.
What is the difference between Computer Science, Computer Engineering, and Software Engineering?
The three programs have common elements: they all stress an understanding of both digital hardware and software, though to varying degrees, and they all hone students’ problem-solving skills. As well, graduates of all three programs may compete for some of the same jobs. However, the programs have different objectives.
- Computer Engineering (CE) deals with designing, developing, and operating computer systems. At its core, Computer Engineering concentrates on digital hardware devices and computers, and the software that controls them. Advanced courses focus on standard designs and techniques for specific application domains. In contrast to CS and SE, Computer Engineering emphasizes solving problems in digital hardware and at the hardware-software interface.
- Computer Science (CS) focuses on understanding, designing, and developing programs and computers. At its core, Computer Science concentrates on data, data transformation, and algorithms. Advanced courses present specialized programming techniques and specific application domains. The CS program is less structured than the CE and SE programs, giving students more flexibility to build depth or breadth in a variety of application domains or in the fundamentals of Computer Science.