Program Objectives: B.S. in Computer Science
Program outcomes are narrow statements that describe what students are expected to know and be able to do by the time of graduation. These relate to the skills, knowledge, and behaviors that students acquire in their matriculation through the program.
All graduates of the BS/CS program are expected to have achieved these outcomes at the point of matriculation:
- [core:requirements] Analyze the requirements for a software artifact, and design and develop a software tool that satisfies those requirements.
- [core:problem-solving] Use algorithmic problem-solving skills to analyze and solve software development problems. Examples include choice or development of appropriate data structures, and choice or development of approriate algorithms.
- [core:software] Program with facility in at least two programming languages (Java and C); use abstraction and encapsulation in software design; and use modern object-oriented design techniques, including inheritance and UML diagrams.
- [core:math-stat] Apply discrete mathematics to software applications in areas such as databases, software engineering, and security; be able to use verification techniques from discrete mathematics (such as induction) to be able to reason at least informally about software correctness; and be able to solve basic problems requiring probabilistic reasoning and the application of standard statistical techniques.
- [core:environments] Build and integrate applications in at least one interactive programming environment (such as Drjava or Eclipse) and at least one operating systems environment (such as Unix), in the latter case using the development and debugging tools of that environment.
- [core:runtime] Reason about the runtime organization of modern programs and processes, including the runtime stack, heap, and network and disk input-output, in the development, debugging and performance tuning of software applications.
- [core:teams] Work cooperatively in team projects, and show awareness of and appreciation for group dynamics.
- [core:communication] Write and present technical reports at a level expected of the software engineering profession.
- [core:professional] Recognition of the need for, and an ability to engage in, continuing professional development.
- [core:ethics] Know about ethical problems that face computer scientists and software engineers, quote codes such as the IEEE Code of Ethics that specify the professional response to them, and act according to these codes of ethics. li> [core:impact] Analyze the local and global impact of computing on individuals, organizations and society
- [core:humanities] Exhibit an ability to think and argue critically on issues that are social, historical, literary and artistic; demonstrate a basic level of skills in communication and logical analysis.
- [core:science] Demonstrate an ability to use the scientific method of inquiry, as evinced by a substantial laboratory experience.
- [sys:networks] Describe network environments including the protocol stacks underlying internet and Web applications, and develop and run distributed programs using sockets and RPC.
- [cys:threats] Define and use security models to abstractly describe security properties of computer and communication systems in the face of current, emerging, and potential threats.
- [se:processes] Apply best current practices, software development processes, and software engineering technology to transform a program into a programming systems product.
- [se:project-management] Manage and schedule small to medium size software projects.
- [sys:hardware-interface] Work with both hardware and software, understanding the interface between the two to build software that exploits the capabilities of the underlying hardware, including interrupt-driven execution, the ready queue, process protection mechanisms, input-output and memory management.
- [core:concurrency] Develop both concurrent and distributed software, using synchronization and communication operations such as semaphores, monitors and message-passing.



