Course Catalog

Definitions of High Impact Practices (HIP):   

http://accreditation.ncsu.edu/sites/accreditation.
ncsu.edu/files/Kuh_HighImpactActivities.pdf   

CpSc 100: Introduction to Computing for Liberal Arts

A pass/no credit course to provide an introduction to the computer capabilities needed to succeed in an Information Society. This course is designed to support the SRU Computer Competency requirement. Topics will include computer hardware, system software, application software, societal issues, networking and security & privacy.

Credits: 1 (pass/no credit)
Course Outline: CpSc 100

CpSc 102: Collaborative Information Technology and Society

We will explore how the use of collaborative information technology impacts human interaction in globally diverse contexts. The course provides an introduction to the historical development, current use and future directions of collaborative technology in human societies. We will address the ethical, legal and social issues involved in the use of these collaborative technologies.

Credits: 3
Course Outline: CpSc 102

CpSc 110: Computer Concepts

A computer literacy course stressing the use of applications software on personal computers. It covers a survey of computers and their impact on society and the use of word processing software. Other application software is also covered, such as spreadsheets and database software, but the particular applications examined may vary from section to section.

Credits: 3
Course Outline: CpSc 110

CpSc 130: Introduction to Programming and Information Systems

An introductory course devoted to programming and to a description of hardware and software concepts. Programming concepts covered include top-down program development using pseudocode, algebraic notation, standard control structures, and arrays in an appropriate programming language. Other topics include binary representation, storage, and general architecture and functioning of a computer system.

Credits: 3
Prerequisites: ACSD 110 Beginning Algebra
Course Outline: CpSc 130

CpSc 140: Introduction to Programming Principles

Techniques are stressed that enable systematic development of clear, correct programs. Other topics include data types, algebraic notation, standard control structures, functions; input/output, arrays, and program testing and debugging.

Credits: 3
Prerequisites: ACSD 110 Beginning Algebra/Math 125
Course Outline: CpSc 140

CpSc 146: Programming Principles

Techniques are stressed that enable systematic development of clear, correct programs. Other topics include data types, algebraic notation, standard control structures, functions; input/output, arrays, and program testing and debugging. The course will be taught in the department.s current official programming language of instruction.

Credits: 3
Prerequisites: Math 120
Course Outline: CpSc 146

This course engages students in the following high impact practice: Collaborative assignments and projects Undergraduate research


CpSc 207: Shell Commands and Scripting

This course introduces the student to prevalent operating systems, command line interfaces to operating systems, and shell scripting. The course includes user level commands, file management, system utilities, and task management. The relationship between hardware and the operating system is discussed conceptually.

Credits: 3
Course Outline: CpSc 207

CpSc 210: Productivity Software

An in-depth, practical study of existing productivity software packages that focuses primarily on decision-support systems for microcomputers. Projects will involve the use of intermediate and advanced features of various software packages, as well as the use of several packages in finding computer-based solutions to information storage and retrieval problems.

Credits: 3
Prerequisites: Computer Literacy
Course Outline: CpSc 210

CpSc 217: Structured and Dynamic Web Programming

This course is designed to cover the features of popular programming languages specifically for creating web pages. Mouse rollovers, browser detects, pop-up windows that launch when a web page loads or in response to specific actions, and form data-checking are just a few of the most popular uses of web programming languages that will be discussed. Programming will be done in a representative programming language.

Credits: 3
Prerequisites:
CpSc 130 Introduction to Programming and Information Systems
And CpSc 140 Introduction to Programming Principles
Course Outline: CpSc 217

This course engages students in the following high impact practices: Collaborative assignments and projects


CpSc 236: Selected Computer Languages

A selected prevalent computer language(s) other than those taught regularly in other Computer Science courses will be studied and used for programming from an advanced point of view. Topics will include data structure, control structures, data control, modularization and other features of the language. Special applications, if any, of the language will be studied. The student is expected to have programming expertise in at least one other language. For different languages, this course may be repeated for credit toward graduation, but not toward a computer science major or minor.

Credits: 3
Prerequisites:
CpSc 246 Advanced Programming Principles
Or CpSc 217 Structured and Dynamic Web Programming
Course Outline: CpSc 236

CpSc 246: Advanced Programming Principles

This course places its emphasis on data and their role in software development. Such a study relies on a two-step approach to data abstraction. In the first step, data must be viewed as abstract objects. These objects are selected and specified so as to be useful in the solution of programming projects. In the second step, the abstract objects are translated into program data structures. An extensive examination of data structures provides the student many opportunities to explore the issues of implementing data abstractions.

Credits: 4
Prerequisites:
CpSc 146 Introduction to Programming Principles
And ECON 219 Business Statistics
Or MGMT 219 Business Statistics
Or MATH 120 Intermediate Algebra
Or Permission of the Instructor
Course Outline: CpSc 246

This course engages students in the following high impact practices: Collaborative assignments and projects


CpSc 300: Challenges of Computer Technology

An in-depth study of the critical issues related to the computerization of society. Ethical, legal, and moral issues raised by the evolution of computer technology will be discussed.

Credits: 3
Prerequisites: Advanced Standing
Course Outline: CpSc 300

This course engages students in the following high impact practice: writing-intensive, collaborative assignments and projects


CpSc 301: Practical Computer Security

A practical introduction to the threats present to the online, electronic community, and how to protect yourself and your organization from them. We will explore the connectivity structure of the Internet, along with the security and criminal threats to members of the online community. The legal, ethical and technical issues related to threats such as viruses, worms, and identity theft will be covered.

Credits: 3
Prerequisites: Any CpSc Course Or Permission of the Instructor
Course Outline: CpSc 301

This course engages students in the following high impact practices: service learning, collaborative assignments and projects


CpSc 305: Introduction to Expert Systems

An overview of the purpose, structure, and applications of expert systems. Topics covered will include expert systems technology, knowledge engineering, applications of expert systems, expert systems development, and the future of expert systems.

Credits: 3
Prerequisites: Computer Literacy
Course Outline: CpSc 305

CpSc 311: Discrete Computational Structures

Introduces computational implementations of the mathematical structures most frequently used in computing including sets, equivalence relations, functions, graphs, trees and standard logic. Also introduces automata, formal languages, countability, decidability and computational complexity, Markov and stochastic processes. The course will stress traditional programming and mathematical approaches to these structures such as the use of recursion, elementary data structures, and proof techniques to instantiate, parse, traverse, demonstrate correctness, or use these computational objects.

Credits: 4
Prerequisites:
CpSc 140 Introduction to Programming Principles
And Math 120 Intermediate Algebra
Course Outline: CpSc 311

CpSc 317: Scripting Languages

This course emphasizes programming using scripting languages for the purpose of collecting and manipulating system information by system administrators and managers. Programming concepts such as data types and control structures will be discussed as well as operating system commands. A variety of languages and utilities will be discussed such as the Bourne shell, Perl, awk, and the Common Gateway Interface. The student is expected to have programming experience and knowledge of the Unix and Windows environments.

Credits: 3
Prerequisites:
CpSc 207 System Software and Architecture for End Users
And CpSc 217 Structured and Dynamic Web Programming
Course Outline: CpSc 317

CpSc 323: Database Systems

Database Systems is a study of relational database concepts as applied to comprehensive information systems. These concepts include data design; modeling; normalization; the use of Structured Query Language (SQL) to define, manipulate and test the database; programmatic access to a database; and practical issues faced by database developers.

Credits: 3
Prerequisites:
CpSc 130 Introduction to Programming and Information Systems
Or CpSc 140 Introduction to Programming Principles
Or CpSc 210 Productivity Software
Course Outline: CpSc 323

CpSc 327: Systems Administration and Security

Students will learn administration techniques for at least two popular computer operating systems, with special attention to system security. Techniques for managing networking, remote printing, storage allocation, account management, and backup will be discussed. Common techniques for breaching system security, and methods of defense against such attacks, will be emphasized.

Credits: 3
Prerequisites: CpSc 317 Scripting Languages
Course Outline: CpSc 327

CpSc 333: Introduction to Computer Forensics

This is a fundamental course which covers computer forensics. This class covers methods and tools for gaining forensic information from computer systems and networks. It includes case studies of cyber crimes as well as the application and management of cyber forensics. The course introduces students to forensics tools using hands-on experience and the Internet.

Credits: 3
Prerequisites: Computer Competency or permission of instructor
Course Outline: CpSc 333

CpSc 343: File Processing

A practical study of information storage and retrieval using computer data files. Fundamental file structures and organization are emphasized and exemplified through a programming language on personal computers. Advanced file structures and organizations are discussed.

Credits: 3
Prerequisites: CpSc 246 Advanced Programming Principles
Course Outline: CpSc 343

CpSc 353: Business Data Communications and Technologies

Introduction and overview of computer networks and data communications. Provides an understanding of the underlying concepts of computer networking, email, instant messaging (e.g. texting, multimedia messaging). Introduces several software packages used in business data communications. Emphasis is placed on terminology, techniques and issues in business data communications.

Credits: 3
Prerequisites:
CpSc 120 Productivity Software
Course Outline: CpSc 353

This course engages students in the following high impact practices: collaborative assignments and projects


CpSc 358: Simulation

Models of real-life phenomena are programmed with a current simulation language. These are run and adjusted for accurate prediction and explanation. Other simulation languages are surveyed, and needed statistical background is reviewed.

Credits: 3
Prerequisites:
CpSc 140 Introduction to Programming Principles
And Statistics Course
Course Outline: CpSc 358

CpSc 365: Management Information Systems

Managerial and technological issues that are necessary to understand, establish, manage and use information systems in all functional areas of organizations.

Credits: 3
Prerequisites:
CpSc 210 Productivity Software
And Mgmt 351 Organizational Behavior
Course Outline: CpSc 365

This course engages students in the following high impact practices: Common intellectual experiences, Writing-intensive, Collaborative assignments and projects, Diversity/global learning


CpSc 370: Computer Organization

The fundamental elements of digital logic and their use in computer construction, different kinds of data representation, elements of machine and assembly language programming and the interaction between the hardware design and the instruction set architecture of the computer.

Credits: 3
Prerequisites: CpSc 246 Advanced Programming Principles
Course Outline: CpSc 370

This course engages students in the following high impact practices: Collaborative Assignments and Projects


CpSc 374: Algorithms and Data Structures

This course establishes a foundation for the systematic study of algorithms and data structure. The integration for these two concepts into a single organizational structure emphasizes that algorithms and data structures are inseparably inter-twined. This course builds and elaborates on the concepts introduced in CpSc 146 and 246.

Credits: 3
Prerequisites: CpSc 246 Advanced Programming Principles
Course Outline: CpSc 374

This course engages students in the following high impact practice: writing-intensive


CpSc 376: Programming Languages

Programming languages are studied from the view of users. Features of common computer languages are surveyed along with developments in newer languages. The goal is deeper understanding of computer languages. Topics include compilation, interpretation, data types, data structures, binding, scope, control mechanisms, conversions, storage management, reliability, portability, modularity, documentation, implementation methods, and language extensibility.

Credits: 3
Prerequisites: CpSc 246 Advanced Programming Principles
Course Outline: CpSc 376

This course engages students in the following high impact practice: writing-intensive, and collaborative assignments/projects


CpSc 378: Theory of Computation

Both the classical and contemporary theories of computation will be discussed in this course. The topics covered include the theory of automata and formal languages, computability by Turing machines and recursive functions, uncomputability, and proof of correctness of code.

Credits: 3
Prerequisites:
CpSc 246 Advanced Programming Principles
And MATH 131 Discrete Mathematics
Or CpSc 311 Discrete Computational Structures
Course Outline:
CpSc 378

CpSc 413: Systems Analysis

A course in computer-based information systems. Course content includes: foundations of information science, techniques for system development, information architectures, and resource allocations. Case studies are discussed and utilized as class projects.

This course engages students in the following high impact practices: writing-intensive, collaborative assignments and projects, service learning

Credits: 3
Prerequisites: CpSc 323 Database Systems
Course Outline: CpSc 413

CpSc 423: Computer Networks

This is an introduction to computer networks and data communications. Course content includes: the layered model; transmission and multiplexing; data link protocols; packet, point-to-point, and satellite transmission; local area networks; security and privacy. Examples of some well-known networks will be studied.

Credits: 3
Prerequisites:
CpSc 246 Advanced Programming Principles
Or CpSc 217 Structured and Dynamic Web Programming
Course Outline: CpSc 423

CpSc 427: Interface Design

This Information Technology major course uses graphical user interface design concepts to introduce interface design possibilities. This senior-level course requires students to produce an intricate interface that utilizes systems design, information management, systems administration & security, and programming concepts from lower-level courses. This course is intended as a capstone course that introduces human user interface theory and practice.

Credits: 3
Prerequisites:
CpSc 413 Systems Analysis
And CpSc 317 Scripting Languages
Course Outline: CpSc 427

This course engages students in the following high impact practice: writing-intensive


CpSc 443: Software Project Management

An introduction to project management in the information systems, or IT development, area. Provides an understanding of the purpose, methods and benefits of process management by exposing the student to the concepts, practices, processes, tools and techniques used in process management for software development.

Credits: 3
Prerequisites: CpSc 323 Database Systems
Course Outline: CpSc 443

This course engages students in the following high impact practice: writing-intensive


CpSc 450: Internship

An in-depth study of the critical issues related to the computerization of society. Ethical, legal, and moral issues raised by the evolution of computer technology will be discussed.

Credits: 3
Prerequisites: Advanced Standing
Course Outline: CpSc 450

This course engages students in the following high impact practice: Internships


CpSc 456: Introduction to Computer Graphics

This course introduces the basics of interactive computer graphics including software and hardware requirements for computer graphics systems, graphics data structures, algorithms and programming languages, raster and random display devices, and graphics applications. Students will work with dedicated graphics computers in completing laboratory exercises and course projects.

Credits: 3
Prerequisites:
CpSc 374 Algorithms and Data Structures
Or Permission of the Instructor
Course Outline: CpSc 456

CpSc 464: Principles of Concurrent Programming and Operating Systems

An introduction to operating systems with emphasis on fundamental principles. These include store management, processor management, file systems and input/output. Laboratory exercises are assigned using a language that supports concurrency. Distributed and "real time" illustrations are used, as well as standard operating system illustrations.

Credits: 3
Prerequisites:
CpSc 370 Computer Organization
And CpSc 374 Algorithms and Data Structures
And CpSc 376 Programming Languages
Course Outline: CpSc 464

This course engages students in the following high impact practice: writing-intensive


CpSc 466: Compiler Design and Implementation

This is an introduction to language translation. Topics include specification of languages and its relation to automata, lexical analysis, finite state machines, context free languages, LL and LR parsing methods, syntax directed translation, error recovery, code generation, and portability.

Credits: 3
Prerequisites:
CpSc 370 Computer Organization
And CpSc 374 Algorithms and Data Structures
And CpSc 376 Programming Languages
And CpSc 378 Theory of Computation
Course Outline: CpSc 466

CpSc 474: Computer Architecture

Architectural features of computer systems are studied. Central processors, storage systems, various forms of parallelism, microcode, and system performance are included as central topics. Hardware support for vector operations, programming languages, concurrency, and distributed processing are included, along with salient architectural features of concurrent integrated processors.

Credits: 3
Prerequisites:
CpSc 370 Computer Organization
And CpSc 374 Algorithms and Data Structures
Course Outline: CpSc 474

This course engages students in the following high impact practice: Collaborative Assignments and Projects and writing intensive


CpSc 476: Artificial Intelligence

A survey of artificial intelligence topics including heuristic programming, search techniques, knowledge representation, expert systems, vision and speech in automators, pattern recognition and robotics.

Credits: 3
Prerequisites: CpSc 374 Algorithms and Data Structures
Or Permission of the Instructor
Course Outline: CpSc 476

CpSc 478: Analysis of Algorithms

An advanced study of algorithms and data structures. Analysis of algorithms, space and time complexity, and the NP classes will be considered. Significant illustrative individual or group programming projects are required. Examples may be drawn from heuristic programming, encipherment, natural language processing, object code generation, combinatorial analysis, graphics, robotics, relational databases, or other algorithmic issues of current importance.

Credits: 3
Prerequisites:
CpSc 374 Algorithms and Data Structures
Or Permission of the Instructor
Course Outline: CpSc 478

CpSc 488: Software Engineering

The course is the study of software engineering principles and design. The course will emphasize requirement analysis, design, testing, debugging and implementation of a semester long project. Students will work in groups for the project to be implemented. There will be multiple phases for the design and implementation of the project. The project will be implemented using a standard programming environment.

Credits: 3
Prerequisites: CpSc 374 Algorithms and Data Structures
Or Permission of the Instructor
Course Outline: CpSc 488

This course engages students in the following high impact practice: writing-intensive


CpSc 490: Independent Study

Supervised study in a special interest area. Prerequisites: Two computer science courses selected from 370 or above, permission of the instructor, departmental chairperson, and dean of the college where the study will be conducted.

Credits: 1 - 3

CpSc 498: Selected Topics

The in-depth examination of a specific topic. For different topics, this course may be repeated for required elective credits toward a computer science major or minor.

Credits: 3
Prerequisites: Permission of the Instructor

CpSc 498b: Topics in Computer Science: Machine Learning and Robotics

A survey of artificial intelligence topics including heuristic programming, search techniques, knowledge representation, expert systems, vision and speech in automators, pattern recognition and robotics.

Credits: 3
Prerequisites: CpSc 374 Algorithms and Data Structures
Course Outline: CpSc 498b

CpSc 498c: Topics in Computer Science: Compiler Transformations

The in-depth examination of a specific topic. For different topics, this course may be repeated for required elective credits toward a computer science major or minor.

Credits: 3
Prerequisites: Permission of the Instructor
Course Outline: CpSc 498c