2022-2023 Undergraduate Catalog 
    Jun 08, 2023  
2022-2023 Undergraduate Catalog [Archived]

Computer Science Learning Outcomes

Outcome 1
1.1 Basic Programming - Can write and debug correct programs for problems that are straightforward (do not need advanced algorithmic techniques) but may require any of the standard programming constructs.
Foundational Studies 1: Locate, critically read, and evaluate information to solve problems.
Foundational Studies 2: Critically evaluate the ideas of others.
Foundational Studies 3: Apply knowledge and skills within and across the fundamental ways of knowing (natural sciences, social and behavioral sciences, arts and humanities, mathematics, and history).
Foundational Studies 10: Express themselves effectively, professionally, and persuasively both orally and in writing.
1.2 Programming Paradigms - Can program proficiently in more than one programming paradigm. This should include at least two of the following: procedural/imperative, object oriented, functional, event driven, logic based, concurrent.
Foundational Studies 1, 2, 3 & 10
Outcome 2
2.1 Data Structures - Can use basic data structures (lists, stacks, queues, binary search trees, and hash tables ) in writing programs and answer basic questions on efficiency of these data structures.
Foundational Studies 1, 2, 3 & 10
2.2 Algorithms Analysis - Can analyze the running time and correctness of standard algorithms which they have learned. Can answer basic questions and reason about graphs, discrete probability, basic set theory, and basic number theory.
Foundational Studies 1, 2, 3 & 10
Outcome 3
3.1 Architecture - Can explain the basic internal workings of computer systems, including both hardware and software. Can explain tradeoffs in CPU design, and can write correct assembly code for basic tasks.
Foundational Studies 1, 2, 3 & 10
3.2 Operating Systems - Can explain the key problems that operating systems are meant to solve (synchronization, resource sharing, virtualization), including traditional solutions to these problems.
Foundational Studies 1, 2, 3 & 10
3.3 Programming Design in Specialized Areas - Proficient at programming in specialized areas that are very common in industry, including databases, web programming, networking, and advanced system administration. Can explain the key algorithms, programming languages, and data structures used in each area, and be able to apply this knowledge to write efficient programs. Note: This outcome is specific to the Information Science concentration of the major.
Foundational Studies 1, 2, 3 & 10
3.4 Advanced Algorithms and Theory - Can explain various models of computation and how these are used to model and efficiently solve various computational problems. Important models include finite automata, regular expressions, context free grammars, and Turing machines. Can explain the concept of NP-completeness and its relation to intractability. Can explain typical ways to deal with hard problems, including brute-force search and some other method (e.g., backtracking search). Can apply the standard algorithm techniques of greedy, dynamic programming, and divide and conquer. Proficient at programming and algorithms analysis using these techniques. Proficient at programming and using basic graph algorithms such as those for shortest path and minimum spanning trees. Can apply some other algorithm techniques such as linear programming and randomized algorithms. Can explain the concept of program correctness proofs, and give correct proofs for standard algorithms. Can explain the concept of automated theorem proving, and be able to use automated theorem provers. Note: This outcome is specific to the Computing Science concentration of the major.
Foundational Studies 1, 2, 3 & 10