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 215: Cross-Platform Mobile App Development

This course will cover a practical and comprehensive approach to planning, mapping, building, testing, and deploying mobile applications on multiple major mobile device platforms with multiple major operating systems, currently including iOS and Android on phones and tablets. Students use software the development process to build mobile applications that leverage device features and 3rd party application programming interfaces (APIs) to provide stable and robust software. Topics covered include software design patterns, interface design, application architecture, databases, memory management, input methods, data handling, interfacing with device APIs, and connectivity.

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

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 315: Computer Gadget Project

This course introduces the students to digital electronics and programming based on popular single-board microcontroller and single-board computer system platforms to interact with their environment with sensors and actuators, which can find applications in robotics, home automation, the Internet of things, cyber-physical systems, and sensor networks. Topics include the architecture of single-board microcontroller and single-board computer system, basic electricity and electronics, system connection and configuration, and programming.

Credits: 3
Prerequisites:
CpSc 146 Programming Principles
CpSc 207 Shell Commands and Scripting
Course Outline: CpSc 315

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 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 405/605: Data Mining and Data Analysis

This course provides a survey of data analysis and data mining techniques for finding patterns in data. It will emphasize, using data models, data gathering and storage, selection and preparing of data, model building and testing, and interpreting and validating results.If the student takes CpSc 405 for the undergraduate program, he/she can take CpSc 605 for additional credits.

Credits: 3
Prerequisites:
CpSc 323 Database Systems
Or permission of the instructor
Course Outline: CpSc 405/605

CpSc 406/606: Data Visualization

This course provides a survey of techniques for visualizing patterns in data. The course will emphasize modern and traditional methods for data visualization, including interactive visualization for data sets too large to display statically.

Credits: 3
Prerequisites:
CPSC 146 Programming Principles
MATH 152 Elementary Satistics
Course Outline: CpSc 406/606

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

CpSc 685: Big Data Analytics

This is a project-driven course designed to provide techniques for acquiring, managing, and analyzing massive unstructured data. Consideration will be given to both batch mode processing and real time analytics. Specific topics include the MapReduce parallel computing paradigm, distributed file systems, the Hadoop Ecosystem and its components such as Pig, Hive, HBase, Oozie, Yarn, and Mahout, NoSQL databases, cloud computing, techniques for clustering and visualizing big data, Web analytics, machine learning in a big data setting and data security issues. Applications in business, engineering, health care, and social networks will also be covered.

Credits: 3
Prerequisites: CPSC 680 Machine Learning
Course Outline: CpSc 685