# Learning Goals

1. Develop problem-solving skills:

Think logically, computationally, and creatively to solve problems. Identify and analyze a problem, design a solution algorithm as a systematic way of processing the necessary information to produce the required output, and implement the solution as a computer program.

2. Become proficient in programming:

Understand and master the fundamental constructs and styles of programming. Effectively develop, test, and debug a program using various software tools.

3. Attain an in-depth knowledge in computing systems:

Gain the fundamental understanding of topics in computing systems such as programming language paradigms, operating systems, computer networks, and high-performance computing, and the interdependencies among these topics. Become familiar with the interface between hardware and software at the various levels.

4. Understand the fundamental principles of computing:

Grasp the theoretical foundations of computation such as logic and discrete mathematics, formal models of computation, and complexity analysis of algorithms.

5. Cultivate general intellectual skills in liberal arts education in relation to computing:

Strengthen students' ability to communicate effectively, both orally and in written form.

Develop an awareness of ethical and social impacts related to software and hardware. Gain the ability to engage in lifelong learning in the field of computing or any field that they may choose to enter.

6. Gain a broad exposure to topics in computing and its related disciplines:

Computer Science students should acquire an in-depth knowledge of a wide range of computer science topics. Attain knowledge of the overall scope of the computing field and its subfields, and the emerging technologies in computing.

Interdisciplinary Computing majors must understand the basic foundations of their coordinate discipline and discover ways to solve problems in their chosen fields of study using various types of computing systems.