Undergraduate Program - Bachelor of Science Degree

Program Educational Objectives

The CSC undergraduate program at NCSU prepares its B.S. graduates to achieve the following career and professional goals:

  1. To apply their knowledge of computer science to problems encountered in their professional careers or in pursuit of advanced degrees.
  2. To use evolving technologies, analytical thinking, and design to address contemporary issues.
  3. To communicate well orally and in writing, interact professionally, and work effectively on multidisciplinary teams to achieve project objectives.
  4. To uphold high ethical standards, including concern for the impact of computing on individuals, organizations, and society.
  5. To engage in lifelong learning to enhance their professional capabilities.
Student Outcomes

Upon graduation CSC students will

  1. be competent in theoretical and mathematical foundations of computer science and be able to
    1. apply fundamental concepts of discrete mathematics such as logic, proofs, set theory, relations, functions, and combinatorics to model computational problems,
    2. demonstrate the application of abstract structures such as graphs, finite state machines, and recurrence relations to the solution of computer science problems,
    3. analyze and evaluate comparative performance of algorithms and data structures appropriate to solving computer science problems,
    4. apply concepts related to data structures such as lists, stacks, queues, arrays, graphs, trees, heaps, and hashing to design and create algorithms.
  2. be proficient in one programming language and have a basic knowledge of several others and be able to
    1. write efficient solutions to specific problems using an object-oriented programming language,
    2. write programs in assembly language,
    3. write programs in a procedural programming language.
  3. understand the hardware and software architecture of computer systems and be able to
    1. explain the function and interaction of computer processing units, memories, and input/output devices,
    2. define and explain elements of operating systems such as memory management, process scheduling, synchronization and interaction, and input/output devices,
    3. distinguish computer network elements and understand issues related to computer security
  4. demonstrate the ability to participate in professional practices related to software engineering and be able to
    1. negotiate, clarify, and document customer requirements
    2. apply knowledge of fundamental algorithms, programming language concepts, and design patterns to determine an overall design for a software system,
    3. implement a fully specified system,
    4. test a fully specified system,
    5. plan and monitor the progress of software projects to ensure on time delivery of a high-quality system.
  5. be able to communicate effectively about computer science-related topics and be able to
    1. deliver an audience-sensitive oral technical presentation,
    2. write an audience-sensitive technical document,
    3. contribute effectively on software-based system development teams
  6. demonstrate the ability to be responsible practitioners of computer science and understand the social and ethical implications of computing and be able to
    1. demonstrate ways in which computers pose new ethical questions or pose new versions of standards, moral problems and dilemmas,
    2. recognize and, when appropriate, to resolve ethical problems or dilemmas related to the computing profession.

Related links

Proposed Program of Study
Undergraduate CSC Program Policies

Meet us at the intersection of technology and life