Why do some colleges have EE and CS programs in the same department? Like Berkeley for example (though I think they have a liberal arts CS program as well)?
Or Northwestern http://www.mccormick.northwestern.edu/eecs/
A lot of it is for historical reasons, CS basically developed as the intersection of 2 disciplines - EE and math.
Back when computers were large electrical behemoths they took a ton of hardware/electrical skills to program and use. Then, when higher-level programming started becoming popular (languages like B and C, etc.) universities started offering classes in programming out of the EE departments since there weren't enough programming classes to create a new department for CS.
On the other hand, there were many mathematicians from the late 1800s through the 1950s who were developing mathematical algorithms before "computers" were widely used. Many of these algorithms are now widely used by computer scientists and programmers to solve incredibly complex problems.
Currently there are two main "flavors" of CS. Some universities like UC Berkeley and MIT maintain joint EE and CS departments while others like Stanford and Harvard have CS departments that are more closely related to math.
TL; DR: it comes from the history of how CS developed out of EE (computing machines) and math (algorithms).
UC Berkeley only has a single EECS department. The department offers an EECS degree and a CS degree, but that is very misleading because the EECS degree only requires 2 EE classes while the CS degree only requires 1 EE class. Their curricula are essentially the same, the naming difference is mostly due to historical reasons.
There is a tremendous amount of overlap between the fields. Areas of especially large overlap: computer vision, machine learning, robotics, communication (compression and error correction), networking, computer architecture, etc.
Back when computers were large electrical behemoths they took a ton of hardware/electrical skills to program and use. Then, when higher-level programming started becoming popular (languages like B and C, etc.) universities started offering classes in programming out of the EE departments since there weren't enough programming classes to create a new department for CS.
On the other hand, there were many mathematicians from the late 1800s through the 1950s who were developing mathematical algorithms before "computers" were widely used. Many of these algorithms are now widely used by computer scientists and programmers to solve incredibly complex problems.
Currently there are two main "flavors" of CS. Some universities like UC Berkeley and MIT maintain joint EE and CS departments while others like Stanford and Harvard have CS departments that are more closely related to math.
TL; DR: it comes from the history of how CS developed out of EE (computing machines) and math (algorithms).