Computer Science and Engineering

Courses

CSCE 101  - Introduction to Computer Concepts  (3 Credits)  
History, application, and social impact of computers; problem-solving, algorithm development, applications software, and programming in a procedural language.
Carolina Core: ARP
CSCE 102  - General Applications Programming  (3 Credits)  
Introduction to systematic computer problem-solving and programming for a variety of applications.
Carolina Core: ARP
CSCE 104  - Program Design and Development  (3 Credits)  
Fundamental algorithms and processes used in business information systems. Development and representation of programming logic. Introduction to implementation using a high-level programming language.
Cross-listed course: ITEC 104, MGSC 298
CSCE 106  - Scientific Applications Programming  (3 Credits)  
Introduction to computer applications in science and engineering. Programming exercises in a high-level language.
Prerequisites: C or better in MATH 122 or MATH 141.
CSCE 145  - Algorithmic Design I  (4 Credits)  
Problem-solving, algorithmic design, and programming. Three lectures and two laboratory hours per week.
Prerequisite or Corequisite: MATH 111 or MATH 115.
Carolina Core: ARP
CSCE 146  - Algorithmic Design II  (4 Credits)  
Continuation of CSCE 145. Rigorous development of algorithms and computer programs; elementary data structures. Three lecture hours and two laboratory hours per week.
Prerequisites: C or better in CSCE 145; C or better in MATH 111 or higher (or by Math Placement Test score into MATH 115 or higher math).
CSCE 180  - Artificial Intelligence for All  (3 Credits)  
Introduction to Artificial Intelligence and its applications. Overview of AI topics and applications, including machine learning, deep learning, natural language processing, knowledge representation, statistical inference, and symbolic manipulation.
CSCE 190  - Computing in the Modern World  (1 Credit)  
An introduction to the field of computing: trends in computing technology, the profession, and careers; subdisciplines in computing; the nature of research and development.
Corequisite: CSCE 145, CSCE 104, CSCE 205, CSCE 106 or equivalent.
CSCE 201  - Introduction to Computer Security  (3 Credits)  
Introduction to the theory and practice of computer security, including security policies, authentification, digital certificates, firewalls, malicious code, legal and ethical issues, and incident handling.
Prerequisite or Corequisite: CSCE 101 or CSCE 102 or CSCE 145.
CSCE 205  - Business Applications Programming  (3 Credits)  
Introduction to computer applications in business. Programming exercises in COBOL.
Prerequisites: MGSC 290 or CSCE 101 or above.
CSCE 207  - UNIX System Administration  (3 Credits)  
The Unix programming environment: I/O programming, Unix processes, fork, exec, pipes and signals, and tools.
Prerequisites: CSCE 145 or CSCE 106.
CSCE 209  - Special Topics in Computer Programming  (1-4 Credits)  
Programming and application development using selected programming languages. Course content varies and will be announced in the schedule of classes by title.
CSCE 210  - Computer Hardware Foundations  (3 Credits)  
Number representation, data formats, CPU and memory organization, assembly language, I/O and peripherals, computer networks. Students may not apply both CSCE 210 and CSCE 212 to any minor or major program of study.
Prerequisites: D or better in CSCE 145, CSCE 104, CSCE 205, CSCE 106, or CSCE 207.
CSCE 211  - Digital Logic Design  (3 Credits)  
Number systems, Boolean algebra, logic design, sequential machines.
Prerequisites: MATH 141.
CSCE 212  - Introduction to Computer Architecture  (3 Credits)  
Computer architecture, components. and organization; memory addressing; Input/Output; instruction sets; interrupts; assembly-language programming. Students may not apply both CSCE 210 and CSCE 212 to any minor or major program of study.
Prerequisites: D or better in CSCE 211 and D or better in either CSCE 145 or CSCE 106.
CSCE 215  - UNIX/Linux Fundamentals  (1 Credit)  
UNIX operating system, user-level system commands, and programming tools. UNIX scripting languages.
Prerequisites: CSCE 145.
CSCE 240  - Advanced Programming Techniques  (3 Credits)  
Pointers; memory management; advanced programming language structures: operator overloading, iterators, multiple inheritance, polymorphism, templates, virtual functions; Unix programming environment.
Prerequisites: CSCE 215, C or better in CSCE 146.
CSCE 242  - Web Applications  (3 Credits)  
Web technologies to support client-server computing. Implementation of client-server applications.
Prerequisites: C or better in CSCE 146.
CSCE 245  - Object-Oriented Programming Techniques  (3 Credits)  
Advanced object-oriented concepts and techniques; multiple inheritance; memory management; operator overloading; polymorphism; performance issues.
Prerequisites: C or better in CSCE 146.
CSCE 247  - Software Engineering  (3 Credits)  
Fundamentals of software design and development; software implementation strategies; object-oriented design techniques; functional design techniques; design patterns; design process; source control; testing.
Prerequisites: C or better in CSCE 146.
CSCE 274  - Robotic Applications and Design  (3 Credits)  
Design and control of robots. Interactions between robots, sensing, actuation, and computation.
Prerequisites: C or better in CSCE 240.
CSCE 304  - Applied Problem Solving and Programming  (3 Credits)  
Systematic problem definition, solution formulation, and computer implementation for business and related areas. Internet and database applications. Programming exercises in a high-level programming language.
Prerequisites: CSCE 104 or MGSC 298.
Cross-listed course: MGSC 398
CSCE 311  - Operating Systems  (3 Credits)  
Operating system structure and function; process implementation, scheduling, and synchronization; memory management; security; naming protection; resource allocation; network file systems.
Prerequisites: CSCE 240; CSCE 210 or CSCE 212.
CSCE 313  - Embedded Systems  (3 Credits)  
Fundamentals of embedded systems: hardware components, software components, hardware/software interface design, and hardware/software co-design.
Prerequisites: CSCE 211, CSCE 212.
CSCE 317  - Computer Systems Engineering  (3 Credits)  
System-level modeling and evaluation of computer systems: requirements elicitation and specification, architectural design, reliability and performance evaluation, Markov modeling, life-cycle cost analysis, project management.
Prerequisites: CSCE 212, MATH 242, STAT 509.
CSCE 330  - Programming Language Structures  (3 Credits)  
Formal specification of syntax and semantics; structure of algorithms; list processing and string manipulation languages; statement types, control structures, and interfacing procedures.
Prerequisites: CSCE 240; MATH 174 or MATH 374 or MATH 574.
CSCE 350  - Data Structures and Algorithms  (3 Credits)  
Techniques for representing and processing information, including the use of lists, trees, and graphs; analysis of algorithms; sorting, searching, and hashing techniques.
Prerequisites: D or better in CSCE 240; D or better in MATH 174, MATH 374, or MATH 574; D or better in MATH 141 or MATH 122.
CSCE 355  - Foundations of Computation  (3 Credits)  
Basic theoretical principles of computing as modeled by formal languages, grammars, automata, and Turing machines; fundamental limits of computation.
Prerequisites: CSCE 211, CSCE 212, CSCE 350.
CSCE 390  - Professional Issues in Computer Science and Engineering  (1 Credit)  
Professional issues in the information technology professions; history and social context of computing; professional responsibilities; privacy; intellectual property; risks and liabilities of computer-based systems.
Carolina Core: VSR
CSCE 415  - Mainframe Systems  (3 Credits)  
Introduction to the large scale computer systems used by businesses to support thousands of simultaneous users and process millions of transactions.
Prerequisites: C or better in ITEC 352, or C or better in CSCE 146.
Cross-listed course: ITEC 475
CSCE 416  - Introduction to Computer Networks  (3 Credits)  
Concepts and components of computer networks and the Internet; network applications; network protocol stack.
Prerequisites: CSCE 146.
CSCE 490  - Capstone Computing Project I  (3 Credits)  
Major team-based software design project to be undertaken in a student’s final year of study; project planning, software requirements analysis, design, and specification. Written reports and oral presentations in a technical setting.
Prerequisites: D or better in CSCE 240.
Prerequisite or Corequisite: D or better in CSCE 350.
Graduation with Leadership Distinction: GLD: Professional and Civic Engagement Internships, GLD: Research
CSCE 491  - Capstone Computer Engineering Project  (3 Credits)  
Advanced computer systems engineering. Team projects. Written reports and oral presentations in a technical setting.
Prerequisites: D or better in CSCE 240, CSCE 313, CSCE 611.
Graduation with Leadership Distinction: GLD: Research
CSCE 492  - Capstone Computing Project II  (3 Credits)  
Continuation of CSCE 490. Computer system implementation, testing, verification and validation of results. Written reports and oral presentations in a technical setting.
Prerequisites: D or better in CSCE 240, CSCE 350, and CSCE 490.
Graduation with Leadership Distinction: GLD: Professional and Civic Engagement Internships, GLD: Research
CSCE 498  - Independent Study  (1-3 Credits)  
Individual investigation or study of special topics. At most three credits may be applied toward a degree. Approval of project proposal by instructor and department advisor.
Graduation with Leadership Distinction: GLD: Research
CSCE 500  - Computer Programming and Applications  (3 Credits)  
Concepts and properties of algorithms; programming exercises with emphasis on good programming habits. Credit may not be received for both CSCE 500 and CSCE 145. Open to all majors. May not be used for major credit by computer science and engineering majors.
CSCE 510  - System Programming  (3 Credits)  
System software such as command language interpreters, client-server applications, debuggers; mail systems, browsers, macroprocessors, and revision control systems; file systems, processes, threads, and interprocess communication.
Prerequisites: CSCE 215, CSCE 240.
CSCE 512  - System Performance Evaluation  (3 Credits)  
Measuring, modeling, analyzing, and predicting performance of computer systems and networks; bottleneck analysis; Markovian queuing systems and networks; use of operational and probabilistic models.
Prerequisites: CSCE 311, STAT 509 or STAT 515.
CSCE 513  - Computer Architecture  (3 Credits)  
Design methodology; processor design; computer arithmetic: algorithms for addition, multiplication, floating point arithmetic; microprogrammed control; memory organization; introduction to parallel architectures.
Prerequisites: CSCE 211, CSCE 212.
CSCE 515  - Computer Network Programming  (3 Credits)  
Computer networks and communication protocols; socket programming; interprocess communication; development of network software; case studies.
Prerequisites: CSCE 311.
CSCE 516  - Computer Networks  (3 Credits)  
Structure, design, and analysis of computer networks; ISO/OSI network architecture.
Prerequisites: STAT 509 or STAT 515.
CSCE 517  - Computer Crime and Forensics  (3 Credits)  
Structure, design, and analysis of computer networks; ISO/OSI network architecture.
Prerequisites: CSCE 215.
CSCE 518  - Ethical Hacking  (3 Credits)  
Fundamental principles and techniques of ethical hacking, including penetration testing life cycle, planning and scoping, identifying targets and goals, active and passive reconnaissance, enumeration and scanning, exploitation, post-exploitation, and results reporting.
Prerequisites: CSCE 215 or previous Linux/UNIX experience.
CSCE 520  - Database System Design  (3 Credits)  
Database management systems; database design and implementation; security, integrity, and privacy.
Prerequisites: CSCE 240 or GEOG 563.
CSCE 522  - Information Security Principles  (3 Credits)  
Threats to information resources and appropriate countermeasures. Cryptography, identification and authentication, access control models and mechanisms, multilevel database security, steganography, Internet security, and intrusion detection and prevention.
Prerequisites: CSCE 146; MATH 374 or MATH 174.
CSCE 526  - Service Oriented Computing  (3 Credits)  
Cooperative information systems and service-oriented computing. Techniques for achieving coordinated behavior among a decentralized group of information system components. Distributed databases, multiagent systems, conceptual modeling, Web services, and applications.
Prerequisites: CSCE 311.
CSCE 531  - Compiler Construction  (3 Credits)  
Techniques for design and implementation of compilers, including lexical analysis, parsing, syntax-directed translation, and symbol table management.
Prerequisites: CSCE 240.
CSCE 544  - Functional Programming  (3 Credits)  
Functional programming as a paradigm. History of functional languages from Lisp to the present. Programming in Haskell, ML, or similar language at an intermediate level: recursive and higher-order functions, list comprehensions, types and classes, monads, lazy evaluation, reasoning about programs.
Prerequisites: C or better in CSCE 330, CSCE 350, or MATH 374.
CSCE 546  - Mobile Application Development  (3 Credits)  
Development of mobile applications, including user interface design for mobile, local and cloud data storage techniques, and application architectures.
Prerequisites: CSCE 240 or previous programming experience with one of the following programming languages (C/C++, Java, Swift, Python, Matlab, Javascript).
CSCE 547  - Windows Programming  (3 Credits)  
Object-oriented methods and tools for application programming with graphically interactive operating systems.
Prerequisites: CSCE 240.
CSCE 548  - Building Secure Software  (3 Credits)  
Construction of software systems resistant to vulnerabilities and attacks. Cryptographic tools. Language, operating system, and network security. Case studies. Development of best practices through programming assignments.
Prerequisites: CSCE 240.
CSCE 551  - Theory of Computation  (3 Credits)  
Basic theoretical principles of computing as modeled by formal languages and automata; computability and computational complexity.
Prerequisites: C or better in CSCE 350 or MATH 300.
Cross-listed course: MATH 562
CSCE 552  - Computer Game Development  (3 Credits)  
Design and development of computer games, with emphasis on the technologies used. Hands-on development of computer games.
Prerequisites: CSCE 240, CSCE 350.
CSCE 555  - Algorithms in Bioinformatics  (3 Credits)  
Concepts, algorithms and tools for important problems in Bioinformatics, including nucleotide and amino acid sequence alignment, DNA fragment assembly, phylogenetic reconstruction, and protein structure visualization and assessment.
Prerequisites: CSCE 350.
CSCE 556  - Data Analysis in Python: Application to Neuroscience  (3 Credits)  
Hands-on introduction in Python to the analysis of neuroscience data (human neuroimaging and cellular electrophysiology), including various aspects such as data wrangling, statistics, classification, and visualization.
Prerequisites: C or better in CSCE 240 or CSCE 106.
CSCE 557  - Introduction to Cryptography  (3 Credits)  
Design of secret codes for secure communication, including encryption and integrity verification: ciphers, cryptographic hashing, and public key cryptosystems such as RSA. Mathematical principles underlying encryption. Code-breaking techniques. Cryptographic protocols.
Prerequisites: C or better in CSCE 145 or MATH 241, and at least one of CSCE 355, MATH 300 or MATH 374.
Cross-listed course: MATH 587
CSCE 561  - Numerical Analysis  (3 Credits)  
Interpolation and approximation of functions; solution of algebraic equations; numerical differentiation and integration; numerical solutions of ordinary differential equations and boundary value problems; computer implementation of algorithms.
Prerequisites: C or better in MATH 520 or in both MATH 242 and MATH 344.
Cross-listed course: MATH 527
CSCE 563  - Systems Simulation  (3 Credits)  
Computer simulation of real systems; principles of system organization; random number generation; programming exercises in a simulation language.
Prerequisites: CSCE 240, STAT 509 or STAT 515.
CSCE 564  - Computational Science  (3 Credits)  
Parallel algorithms; scientific visualization; techniques for solving scientific problems.
Prerequisites: MATH 526, CSCE 146 or CSCE 207 or CSCE 500.
CSCE 565  - Introduction to Computer Graphics  (3 Credits)  
Graphics hardware; graphics primitives; two-dimensional and three-dimensional viewing; basic modeling.
Prerequisites: CSCE 240, MATH 526 or MATH 544.
CSCE 567  - Visualization Tools  (3 Credits)  
Scientific visualization tools as applied to sampled and generated data; methods for data manipulation and representation; investigation of visualization techniques.
Prerequisites: CSCE 145, CSCE 106, or CSCE 207.
CSCE 569  - Parallel Computing  (3 Credits)  
Architecture and interconnection of parallel computers; parallel programming models and applications; issues in high-performance computing; programming of parallel computers.
Prerequisites: knowledge of programming in a high-level language; C or better in MATH 344 or MATH 544.
CSCE 571  - Critical Interactives  (3 Credits)  
Foundational techniques in multidisciplinary software development, specifically of applications designed to present sensitive, sometimes controversial, materials in ways to engender empathic awareness of the interactor.
Cross-listed course: FAMS 581
CSCE 572  - Human-Computer Interaction  (3 Credits)  
Interdisciplinary approach to interaction design, user-centered design, human abilities, survey development, experimental study methodology, heuristic evaluations, usability testing, universal design, and accessibility.
Prerequisites: Undergraduate or graduate standing in CSE or permission of the instructor.
CSCE 574  - Robotics  (3 Credits)  
Design and application of robotic systems; emphasis on mobile robots and intelligent machines.
Prerequisites: CSCE 211, CSCE 212, CSCE 240.
CSCE 578  - Text Processing  (3 Credits)  
Text and natural language processing; formal models and data structures appropriate for text processing; selected topics in computational linguistics, stylistics, and content analysis.
Prerequisites: CSCE 330, CSCE 355.
CSCE 580  - Artificial Intelligence  (3 Credits)  
Heuristic problem solving, theorem proving, and knowledge representation, including the use of appropriate programming languages and tools.
Prerequisites: CSCE 350.
CSCE 581  - Trusted Artificial Intelligence  (3 Credits)  
AI Trust – responsible/ethical technology, fairness/ lack of bias, explanations (XAI), machine learning, reasoning, software testing, data quality and provenance, tools and projects.
Prerequisites: C or better in CSCE 240 and CSCE 350.
Prerequisite or Corequisite: D or better in CSCE 330.
CSCE 582  - Bayesian Networks and Decision Graphs  (3 Credits)  
Normative approaches to uncertainty in artificial intelligence. Probabilistic and causal modeling with Bayesian networks and influence diagrams. Applications in decision analysis and support. Algorithms for probability update in graphical models.
Prerequisites: C or better in either CSCE 106 or CSCE 145 and either STAT 509 or STAT 515.
Cross-listed course: STAT 582
CSCE 584  - Neural Networks and Their Applications  (3 Credits)  
Introduction to artificial neural networks, neural network topologies, neural network learning paradigms, training rules, and applications across supervised, unsupervised, and reinforcement learning tasks.
Prerequisites: C or better in CSCE 240 or CSCE 556; C or better in MATH 241; C or better in MATH 344.
CSCE 585  - Machine Learning Systems  (3 Credits)  
Design and implementation of machine learning systems, Deep learning systems stack, machine learning platforms, scalable and distributed machine learning.
Prerequisites: C or better in CSCE 240 or CSCE 106.
CSCE 587  - Big Data Analytics  (3 Credits)  
Foundational techniques and tools required for data science and big data analytics. Concepts, principles, and techniques applicable to any technology and industry for establishing a baseline that can be enhanced by future study.
Prerequisites: C or better in STAT 301, STAT 509, STAT 513, or STAT 515.
Cross-listed course: STAT 587
CSCE 588  - Advanced Machine Learning with Implementation  (3 Credits)  
Theory and application of machine learning. Current mainstream programming libraries such as in Python, and implementation of regression, clustering, principal components, and linear discriminant analysis. Detailed coverage of methods such as random forests, support vector machines, and k-nearest neighbors. Introduction to neural networks.
Prerequisites: C or better in CSCE 106; C or better in STAT 530, CSCE 587, or STAT 587; C or better in MATH 241, MATH 328, MATH 344, or MATH 544.
Cross-listed course: STAT 531
CSCE 590  - Topics in Information Technology  (3 Credits)  
Reading and research on selected topics in information technology. Course content varies and will be announced in the schedule of courses by title. May be repeated for credit as topics vary.
CSCE 594  - Strategic Management of Information Systems  (3 Credits)  
Strategic management and use of information systems in organizations.
Cross-listed course: MGSC 594
CSCE 611  - Advanced Digital Design  (3 Credits)  
Design techniques for logic systems; emphasis on higher-level CAD tools such as hardware description languages and functional modeling.
Prerequisites: CSCE 212.
CSCE 612  - VLSI System Design  (3 Credits)  
VLSI design process models, introduction to EDA tools, HDL modeling and simulation, logic synthesis and simulation, benchmark design projects.
Prerequisites: CSCE 211.
CSCE 613  - Fundamentals of VLSI Chip Design  (3 Credits)  
Design of VLSI circuits, including standard processes, circuit design, layout, and CAD tools. Lecture and guided design projects.
Prerequisites: ELCT 371.