Students who successfully complete either a major or a minor in the discipline of computer science are expected to demonstrate the successful attainment of learning outcomes in each of the following categories:
- Understands the basic and practical foundations of computer science (e.g., algorithms, data types, conditional logic, recursion, procedural programming concepts, object-oriented programming principles);
- Knows how to use standard development tools to implement software solutions to problems.
- Can design, implement, evaluate, improve, and document an algorithmic solution to a problem;
- Understands the mutually beneficial connections between (i) computer hardware and software and (ii) theoretical computer science and practical software development.
- Understands the basics of application areas such as networking, data management, artificial intelligence, and computer graphics;
- Can apply key concepts from these application areas to formulate and solve problems and evaluate solutions implemented as computer programs.
- Understands advanced concepts in areas such as compiler design, operating systems, and distributed systems;
- Knows how to apply key ideas from these advanced subjects to formulate and solve problems and evaluate solutions implemented as complete, efficient, and effective computer systems.
- Demonstrates critical thinking abilities and effective written and oral communication skills;
- Can identify, analyze, and use sources in both the technical and research literature.
- Understands how to work in a team and evidences the willingness to commit to lifelong learning.