Undergraduate Program Objectives & Outcomes

Program Objectives

The objective of the undergraduate program in computer science is to produce graduates with:

  • A thorough understanding of and ability to apply the core principles and practices of computing;
  • The professional skills to meet the immediate needs of regional and other employers, while being able to adapt to rapidly changing technology;
  • A foundation in the supporting areas of communication, science, and mathematics;
  • An understanding of ethical responsibilities in the social context in which their contributions occur;
  • The motivation and preparation to engage in life-long learning, including entering advanced degree programs in computer science;

To achieve these objectives students should master the following learning-based outcomes.

Program Outcomes

Students in the undergraduate program in Computer Science at Portland State University are expected to master the following competencies (learning based student outcomes). Reflecting the high-level structure, the full list of 21 items is organized as two groups, one focused on knowledge outcomes (using labels that begin with A) and the other on skills outcomes (using labels that begin with B).


Students should acquire knowledge of:

A1.  Computing at all levels of abstraction, including: (a) Circuits and computer architecture
A2.  Computing at all levels of abstraction, including: (b) Operating systems
A3.  Computing at all levels of abstraction, including: (c) Programming languages
A4.  Computing at all levels of abstraction, including: (d) Algorithms.
A5.  The management and sharing of persistent data.
A6.  The interdependence of hardware and software.
A7.  Engineering principles used to meet the challenges of large-scale software production.
A8.  Mathematical foundations of computer science.
A9.  The impact of computing on society.
A10.  The ethical and legal responsibilities of computing professionals.


Students should acquire the ability to:

B1.  Develop program specifications from a variety of informal descriptions.
B2.  Develop program designs from specifications under a variety of software paradigms/ architectures.
B3.  Use analytical techniques to evaluate and compare different designs that meet specifications.
B4.  Adapt algorithms and data structures drawn from a large standard repertoire to new problems.
B5.  Implement selected designs as programs in a variety of programming languages.
B6.  Debug and test programs.
B7.  Perform quantitative evaluation of program behavior by experiment.
B8.  Assess new developments in computer science.
B9.  Present the results of their work orally.
B10.  Present the results of their work as written technical documents.