This majority group studies programming, algorithms, databases and how computers work as connected ideas. Carefully specified assignments make the principles visible. Larger codebases introduce a different discipline: building, debugging and explaining a change when the boundaries are not supplied, and when other people must maintain it afterwards.
Teaches you to break complicated systems into parts, work within constraints and care about failure. Electronic and computer engineering usually include substantial computing already. Mechanical, civil and other branches contribute strong systems judgement but leave a larger gap in programming, data structures and the conventions of collaborative software.
Builds the abstract reasoning needed to follow a problem through several layers and test whether an answer is actually correct. Graduates often pick up programming quickly, then need experience writing maintainable software with other people rather than solving a problem alone.
Chemistry, biology and related subjects teach structured problem solving, evidence and persistence when an experiment fails. Their knowledge is especially useful in scientific, health and environmental software, where a technically valid result may still misrepresent the underlying phenomenon. The gap is usually software design beyond scripts written for one analysis.
Economics builds reasoning with numbers. Business and social-science degrees help you understand organisations, incentives and how people behave. Graduates normally need to learn programming separately. Their subject knowledge can be valuable when building software for a familiar industry.
Arts, humanities, design and other less common subjects contribute clear writing, careful interpretation and an ability to understand context when requirements conflict or a technical choice must be explained. They usually provide little systematic computing, leaving substantial gaps in programming, algorithmic reasoning and understanding how software fails under real use.