Undergraduate Program - Bachelor of Science Degree

Program Educational Objectives

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

  1. To apply their knowledge of computing 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

As a program accredited by the ABET Computing Accreditation Commissions (CAC), graduates of the program will have an ability to:

  1. Analyze a complex computing problem and apply principles of computing and other relevant disciplines to identify solutions.
  2. Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of computer science.
  3. Communicate effectively in a variety of professional contexts.
  4. Recognize professional responsibilities and make informed judgments in a computing practice based on legal and ethical principles.
  5. Function effectively as a member or leader of a team engaged in activities appropriate to computer science.
  6. Apply computer science theory and software development fundamentals to produce computing-based solutions.

The Department of Computer Science at NC State additionally states that upon graduation, CSC students will:

  1. apply theoretical and mathematical computing foundations 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. analyze and evaluate the complexity of algorithms and data structures for selecting the most appropriate solution for a computing problem
    3. use data structures, such as lists, stacks, queues, arrays, graphs, trees, heaps, and hashing, to design and create algorithms
    4. demonstrate and apply the theory of computation related to automata, computability, and computational complexity to solve computing problems
  2. demonstrate proficiency in one programming language and competence in at least one other programming language and be able to:
    1. write procedural programs
    2. write object-oriented programs,
    3. write parallel programs
  3. describe 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 explain distributed computing
    4. identify and explain security and privacy of computers, software, and networks
  4. 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. communicate effectively on computing topics and be able to:
    1. deliver an audience-sensitive oral technical presentation
    2. write an audience-sensitive technical document
    3. contribute as an effective member on a team
  6. demonstrate responsible professional practice and be able to:
    1. explain the ethical challenges unique to computing
    2. recognize and, when appropriate, resolve ethical challenges or dilemmas related to the computing profession
Concentrations

Students may choose to focus their Computer Science studies in the areas of Game Development or Cybersecurity. Our concentrations extend the Computer Science Program Objectives and Student Outcomes