**Undergraduate**

**Student Learning Outcomes**

**Computer and Information Science**

The Department's Undergraduate Committee states the following Student Learning Outcomes. After graduation, a student should be able to:

- Write software programs in multiple programming languages.
- Understand the theoretical foundations of computer science, including the study of discrete computational structures.
- Understand and use different programming language paradigms such as procedural, object-oriented, etc.
- Use different data structures such as linked lists, arrays, stacks, trees, graphs, hash tables, etc. to improve efficiency of software, and mathematically or experimentally analyze them and operations on them.
- Know a diverse array of computational algorithms and their analysis techniques, as related to searching, sorting, optimization, and graph problems.
- Know fundamental limitations of designing efficient algorithms and the theoretical meaning of the P?=NP problem.
- Know the basic concepts in formal language theory and their application to compiler design.
- Understand the basic design of computer architecture and their relationship to software design.
- Understand and design the basic functionalities of different computer operating systems.
- Acquire knowledge in multiple advanced areas of computer science, such as databases, data mining, multimedia, graphics, computing security, networking, software engineering, bio-computing, etc.
- Design, develop, and test small scale software projects.
- Write scientific project reports and software documentation.