In order to get my Computer Science Minor, I had to take 5 classes:
Program Design and Concepts - Extend prior programming knowledge to create computer programs that solve problems; use the C++ language; apply computational thinking to enhance problem solving; analyze, design and implement computer programs; use basic and aggregate data types to develop functional and object oriented solutions; develop classes that use dynamic memory and avoid memory leaks; learn error handling strategies to develop more secure and robust programs
Data Structures and Algorithms - Specification and implementation of basic abstract data types and their associated algorithms including stacks, queues, lists, sorting and selection, searching, graphs, and hashing; performance tradeoffs of different implementations and asymptotic analysis of running time and memory usage; includes the execution of student programs written in C++.
Discrete Structures for Computing - Provide mathematical foundations from discrete mathematics for analyzing computer algorithms, for both correctness and performance; introduction to models of computation, including finite state machines and Turing machines.
Computer Organization - Introduction to computer systems from programmer's perspective including simple logic design, data representation and processor architecture, programming of processors, memory, control flow, input/output, and performance measurements; hands-on lab assignments.
Programming Languages - Exploration of the design space of programming languages via an in-depth study of two programming languages, one functional and one object-oriented; focuses on idiomatic uses of each language and on features characteristic for each language.