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:
- To apply their knowledge of computer science to problems encountered in their professional careers or in pursuit of advanced degrees.
- To use evolving technologies, analytical thinking, and design to address contemporary issues.
- To communicate well orally and in writing, interact professionally, and work effectively on multidisciplinary teams to achieve project objectives.
- To uphold high ethical standards, including concern for the impact of computing on individuals, organizations, and society.
- To engage in lifelong learning to enhance their professional capabilities.
Student Outcomes
Upon graduation CSC students will
- be competent in theoretical and mathematical foundations of computer science and be able to
- apply fundamental concepts of discrete mathematics such as logic, proofs, set theory, relations, functions, and combinatorics to model computational problems,
- demonstrate the application of abstract structures such as graphs, finite state machines, and recurrence relations to the solution of computer science problems,
- analyze and evaluate comparative performance of algorithms and data structures appropriate to solving computer science problems,
- apply concepts related to data structures such as lists, stacks, queues, arrays, graphs, trees, heaps, and hashing to design and create algorithms.
- be proficient in one programming language and have a basic knowledge of several others and be able to
- write efficient solutions to specific problems using an object-oriented programming language,
- write programs in assembly language,
- write programs in a procedural programming language.
- understand the hardware and software architecture of computer systems and be able to
- explain the function and interaction of computer processing units, memories, and input/output devices,
- define and explain elements of operating systems such as memory management, process scheduling, synchronization and interaction, and input/output devices,
- distinguish computer network elements and understand issues related to computer security
- demonstrate the ability to participate in professional practices related to software engineering and be able to
- negotiate, clarify, and document customer requirements
- apply knowledge of fundamental algorithms, programming language concepts, and design patterns to determine an overall design for a software system,
- implement a fully specified system,
- test a fully specified system,
- plan and monitor the progress of software projects to ensure on time delivery of a high-quality system.
- be able to communicate effectively about computer science-related topics and be able to
- deliver an audience-sensitive oral technical presentation,
- write an audience-sensitive technical document,
- contribute effectively on software-based system development teams
- demonstrate the ability to be responsible practitioners of computer science and understand the social and ethical implications of computing and be able to
- demonstrate ways in which computers pose new ethical questions or pose new versions of standards, moral problems and dilemmas,
- 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
