Computer Science (CSCI)

CSCI 1000:   Survey of Computing  
Computer Information Science  
Introduction to computers and computing for students with no prior computer experience. (Not to be used to satisfy computer science major requirements).  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
Course Fees:
$100.00
  
CSCI 1001:   Office Applications  
Computer Information Science  
Introduction to the use of computers with emphasis on the Windows platform and the Microsoft Office suite of application tools. (Not to be used to satisfy computer science major requirements).  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
Course Fees:
$100.00
  
CSCI 1002:   Computing Applications  
Computer Information Science  
Introduction to the use of computers with emphasis on the Windows platform and the WordPerfect suite of application tools. (Not to be used to satisfy computer science major requirements).  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 1003:   Intro. to Computational Media  
Computer Information Science  
This course introduces computing and programming with emphasis on interactive media, including graphics, images, animation, and sound. It explores core computing concepts such as variables, conditionals, loops, functions, objects, arrays, and algorithms  
3 credits  
Prerequisites
MATH 1150 or above, excluding MATH 1160 or MATH 1200.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
Course Fees:
$125.00
  
CSCI 1004:   Personal Computer Systems  
Computer Information Science  
Study of the hardware and software components of personal computer systems for experienced computer users. (Not to be used to satisfy computer science major requirements).  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 1011:   Computer Science I  
Computer Information Science  
Introduction to computer science with emphasis on problem solving and algorithm development. Using high-level, block-structured programming language, students design, implement, debug, test, and document computer programs for various applications.  
3 credits  
Prerequisites
MATH 1210 or above.
  
Potentially offered with the following Instruction Type(s):
Lecture/Lab
  
CSCI 1012:   Computer Science II  
Computer Information Science  
Continuation of CSCI 111 with emphasis on computer programming as a systematic discipline. The topics include data structures, abstract data types, algorithm design and analysis, and programming methods and standards.  
3 credits  
Prerequisites
Min grade of C- in CSCI 1011 or CISE 1011 or CSCI 1013 or CISE 1013.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 1013:   Honors Computer Science I  
Computer Information Science  
Introduction to computer science with an emphasis on problem solving and algorithm development. Using high-level, block-structured programming language, students will design, implement, debug, test, and document computer programs. In addition, topics related to data structures, abstract data types, algorithm design and analysis will also be emphasized.  
3 credits  
Prerequisites
MATH 1210 or above.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 1051:   Progming for Engr. and Sci.s  
Computer Information Science  
Algorithm development and structured programming techniques; numerical and graphical applications related to engineering and scientific problem solving. Corequisite for this course may also be satisfied by consent of instructor.  
3 credits  
Prerequisites
One Way-Co-Requisite MATH 2611.
  
Potentially offered with the following Instruction Type(s):
Lecture/Lab
  
CSCI 1056:   Programming in Python  
Computer Information Science  
Problem solving, algorithm development, and programming techniques, including applications from a range of disciplines.  
3 credits  
Prerequisites
MATH 121 or above
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 1059:   Programming in C++  
Computer Information Science  
Study of programming in the language C++, covering character processing; use of pointers with strings, arrays and functions; data structures; bitwise operators.  
3 credits  
Prerequisites
CSCI 1011 or CISE 1011 or CSCI 1051 or CISE 1051.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 2011:   Computer Science III  
Computer Information Science  
Continuation of Csci 112 with emphasis on advanced data structures, algorithm design analysis, advanced programming techniques, and user interfaces.  
3 credits  
Prerequisites
(Min C- in CSCI 1012 or CISE 1012) or (Min B- in CSCI 1013 or CISE 1013).
  
Potentially offered with the following Instruction Type(s):
Lecture/Lab
  
CSCI 2023:   Comp. Org. & Assembly Lang.  
Computer Information Science  
Introduction to the architecture of computer systems. The topics include processor and external device structures and operation, machine operation, machine operations and instructions, assembly language concepts, and assembly language programming.  
3 credits  
Prerequisites
(Min grade C- in Csci 1012 or CISE 1012 or CSCI 1051 or CISE 1051) or (Min B- in CSCI 1013 or CISE 1013).
  
Potentially offered with the following Instruction Type(s):
Lecture/Lab
  
CSCI 2056:   Data Structures in Python  
Computer Information Science  
This course will introduce data structures and their application using the Python programming language. Abstract data types for stack, queue, various lists, trees and graphs will be studied. Built-in data structures such as lists, dictionaries, and tuples will be used extensively.  
3 credits  
Prerequisites
(Min grade C- in Csci 1012 or CISE 1012 or CSCI 1056 or CISE 1056) or (Min grade B- in CSCI CSCI 1013 OR CISE 1013), and 24 Earned Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3000:   Soc. Responsibility in Comp. S  
Computer Information Science  
Study of the nature of and need for social responsibility and ethical behavior in computing and the computer professions.  
1 credit  
Prerequisites
CSCI 2011 or CISE 2011 or CSCI 2023 or CSCI 2056 or CISE 2056.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3005:   Software for Global Use  
Computer Information Science  
Study of the principles and practice of software internationalization with emphasis on the design and customization of software to accommodate linguistic and cultural diversity.  
3 credits  
Prerequisites
(Csci 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and 24 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3011:   Models of Computation  
Computer Information Science  
Introduction to the theoretical foundations of computer science, including automata and formal languages.  
3 credits  
Prerequisites
(Min C- in Csci 1012 or CISE 1012) or (Min B- in CSCI 1013 or CISE 1013) and 24 Earned Credits; AND One-Way Corequisite: Math 3010.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3023:   Systems of Programming  
Computer Information Science  
Study of a contemporary operating system and its set of tools from the perspective of software professionals and system administrators. The course analyzes the system components and their interactions, the tool environment, and system administration issues such as configuration, installation, networking, security, and performance tuning.  
3 credits  
Prerequisites
(Min grade C- in Csci 1012 or CISE 1012 or CSCI 1056 OR CISE 1056) or (Min B- in CSCI 1013 or CISE 1013) and 24 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3025:   Foundations of Comp. Security  
Computer Information Science  
This course covers fundamental tools and concepts of computer security. Topics include symmetric and asymmetric cryptography, cryptographic hashing, basic security principles, and legal and ethical issues.  
3 credits  
Prerequisites
(Min grade C- in Csci 2023 or CISE 2023) and 24 earned hrs.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3033:   Digital Design and 3D Printing  
Computer Information Science  
This course introduces the principles and methods for computer-aided design of objects that can be rendered effectively on 3D printers. It surveys the design techniques and the hardware and software technologies in 3D printing workflows. Students create designs and render them on 3D printers.  
3 credits  
Prerequisites
(CSCI 1051 or CISE 1051 or CSCI 1056 or CISE 1056 or CSCI 2011 or CISE 2011) and 24 earned hrs.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3043:   Fundamentals of Data Science  
Computer Information Science  
Data science is the study of discovering knowledge from data. This course explores the field using a broad perspective. Topics include data collection and integration, exploratory data analysis, descriptive statistics, prediction, and regression, and evaluating and communicating results. Significant programming is required.  
3 credits  
Prerequisites
CSCI 1012 or CISE 1012 or CSCI 1051 or CISE 1051 or CSCI 1056 or CISE 1056 or (Min B- in CSCI 1013 or CISE 1013) and 24 Earned Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3045:   Info. Storage and Retrieval  
Computer Information Science  
Examination of systems for storage and retrieval of information in textual and other formats. The topics include query processing, matching and ranking algorithms, text analysis, user interfaces, and evaluation of retrieval effectiveness.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 3043 or CSCI 2056 or CISE 2056).
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3053:   Intro. to Numerical Methods  
Computer Information Science  
This course provides an overview of numerical methods and optimization techniques, laying the foundation for advanced studies in machine learning, data science, and related engineering disciplines. It covers fundamental concepts like numerical errors and algorithm efficiency, delves into topics like interpolation, integration techniques, and matrix factorization, and explores various computational topics essential for data science and engineering.  
3 credits  
Prerequisites
Math 2612 and (Min C- in CSCI/CISE 1011 or CSCI/CISE 1051 or CSCI/CISE 1013 CSCI/CISE 1056 or CSCI 1059) and 24 Earned Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3054:   Web Programming  
Computer Information Science  
This course introduces programming for the World Wide Web. Topics include development principles and practice with current Web development tools such as HTML5, CSS, JavaScript, jQuery, Ajax, JSON, and PHP.  
3 credits  
Prerequisites
CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056 or CSCI 3043, and 24 Earned Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3061:   Intro. to Computer Networks  
Computer Information Science  
Analysis of loosely coupled computer communication protocols and network services. A generic network model is presented and compared to selected examples of computer networks including the Internet TCP/IP and Internet-based applications.  
3 credits  
Prerequisites
CSCI 2023 or ELEC 2350, and 24 Earned Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3075:   Intro. to Database Systems  
Computer Information Science  
This course introduces database systems covering basic concepts and best practices. Topics include data models (e.g., relational, object- oriented, NoSQL), normalization, SQL, security and privacy, current trends in data management, and web-to-database application programming.  
3 credits  
Prerequisites
CSCI 2011 or CISE 2011 or CSCI 3043 OR CSCI 2056 or CISE 2056), .
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3087:   Software Design and Dev.  
Computer Information Science  
Study of techniques for the construction of large, complex software systems, including project management, requirements analysis, specification, design, development, testing, documentation, deployment, and maintenance. Students develop software systems in a group structure that simulates an industrial setting.  
3 credits  
Prerequisites
(Min grade C- in CSCI 2023) and CSCI 3075 and (Min grade C- in CSCI/CISE 2011 OR CSCI/CISE 2056) and 24 Completed Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3091:   Computer Graphics  
Computer Information Science  
Introduction to the fundamentals of computer graphics, including elementary figures, shading, geometric transformations, graphics program design, and interactive techniques.  
3 credits  
Prerequisites
MATH 2612 and CSCI 2023 and (CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and 24 Completed Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 3999A:   Special Topics in Programming  
Computer Information Science  
Study of topics in programming according to the interests of the instructor and students. May be repeated for credit when the topic varies.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and 24 Completed Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4005:   Computer Simulation  
Computer Information Science  
Introduction to computer-based simulation and its applications to engineering, the sciences, and management.  
3 credits  
Prerequisites
MATH 2612 and (CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and 24 Completed Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4023:   Intro. to Operating Systems  
Computer Information Science  
Study of the basic concepts of operating systems, including user interfaces, process management, state saving, interprocess communication, input/output, device drivers, timing services, memory management, file management, and system abstractions.  
3 credits  
Prerequisites
Min grade C- in CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056 and (Min grade C- in CSCI 2023 or ELEC 3850) and 24 Earned Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4025:   Code Generation & Optimization  
Computer Information Science  
This course examines how machine code is generated and optimized to harness the computing power of modern processors. The course surveys a range of topics including the compilation process and techniques, interface between software and hardware, and program optimizations at different levels (e.g., algorithm, high-level, and assembly level).  
3 credits  
Prerequisites
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4026:   System Security  
Computer Information Science  
This course covers the fundamentals of computer security with an emphasis on computer systems security. Areas covered include operating system security mechanisms, access control models, and other relevant topics.  
3 credits  
Prerequisites
(Min Grade C- in CSCI 3025 and CSCI 4023) and 24 hours completed credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4027:   Network Security  
Computer Information Science  
This course explores the concepts and methods of computer security with an emphasis on network security and the appropriate tools to identify and remedy vulnerabilities across leading network platforms. It emphasizes both offensive and defensive analysis tools, including scanners, sniffers, intrusion detection systems, and firewalls.  
3 credits  
Prerequisites
(Min Grade C- in CSCI 3025 and CSCI 3061) and 24 hours completed credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4031:   Robotics Programming  
Computer Information Science  
The goal of this course is to provide students hands-on experience in the design, construction, and programming of robots that are driven by micro-controllers (e.g., LEGO EV3 mobile robots). Upon completion of this course, students should be able to develop a robotic system from available modular units; to understand the role of knowledge representation, problem solving, and learning in intelligent-system engineering; and to explain the basic concepts of robotics systems.  
3 credits  
Prerequisites
CSCI 2011 or CISE 2011 or CSCI 2023 or CSCI 2056 or CISE 2056 and 24 hours completed credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4033:   Algorithm & Data Struc. Anlys.  
Computer Information Science  
Study of the design and analysis of algorithms and data structures. The topics include analysis techniques, sorting, searching, advanced data structures, graphs, string matching, and NP-completeness.  
3 credits  
Prerequisites
MATH 3010 and (CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and 24 hours completed credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4043:   Advanced Data Science  
Computer Information Science  
This course extends the study in Csci 343 to processing and analysis of big data. Topics include machine learning, natural language processing, and data intensive processing techniques such as MapReduce, NoSQL, and other state-of-the-art frameworks.  
3 credits  
Prerequisites
CSCI 3043 and 24 hours completed credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4044:   Information Visualization  
Computer Information Science  
This course introduces the principles and methods for data and information visualization. It emphasizes the evaluation of alternative visualizations and the design of presentations that enable people to understand and analyze the information effectively. It addresses a variety of data types, such as quantitative, categorical, topological, geospatial, temporal, and unstructured data, and practical tools for rendering the visualizations.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056 or CSCI 3043) and 24 Hours Completed Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture/Lab
  
CSCI 4047:   Immersive Media  
Computer Information Science  
This course explores the applications, methods, and technologies for the realization of immersive virtual environments. Students will develop virtual reality applications, immersive virtual worlds, and interactive media. Topics include virtual reality, augmented reality, 3D content authoring, motion tracking, and current trends in immersive media.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056 or CSCI 3043) and 24 Hours Completed Credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4050:   Formal and Programming Lang.s  
Computer Information Science  
Introductory course to the theoretical foundations of computer science, including automata, formal language, history and concepts of programming languages.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4058:   Mobile Application Development  
Computer Information Science  
This course introduces the design and development of cross-platform mobile applications, focusing on effective design for mobile and desktop browsers and conversion to native applications for common mobile devices, such as Android and iOS. Topics include user interface design, event handling, application programming interfaces (APIs) for accessing hardware components (e.g., GPS, camera, accelerometer), and developing for restricted resources, such as power, memory, and network speed.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056 or CSCI 3043) and 24 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4996A:   Senior Project  
Computer Information Science  
Each student conducts an in-depth study of a current problem in computer science or related area. Upon completion, the student presents the results in both oral and written form.  
3 credits  
Prerequisites
(CSCI 3087 or CSCI 4043) and 24 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4999A:   Special Topics  
Computer Information Science  
Study of topics in computer science according to the interests of the instructor and students. May be repeated for credit when the topic varies.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2023 or CSCI 2056 or CISE 2056) and 24 earned credits.
  
Potentially offered with the following Instruction Type(s):
Independent Study
  
CSCI 4999B:   Spec. Topics in Comp. Security  
Computer Information Science  
Study of topics in computer security according to the interests of the instructor and students. May be repeated for credit when the topic varies.  
3 credits  
Prerequisites
(Min Grade C- in CSCI 3025) and 24 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4999C:   Special Topics in Data Science  
Computer Information Science  
Study of topics in data science according to the interests of the instructor and students. May be repeated for credit when the topic varies.  
3 credits  
Prerequisites
Min grade C in CSCI 3043 and (Min grade C- in CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and 24 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 4999E:   Data Sci & Cybersecurity Topic  
Computer Information Science  
Study of topics that occur in the intersection of data science and cybersecurity according to the interests of the instructor and students. May be repeated for credit when the topic varies.  
3 credits  
Prerequisites
(Min grade C- in CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and (Min C- in CSCI 3025 or CSCI 3043) and 24 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5000:   Fund. Concepts in Computing  
Computer Information Science  
An intensive study of the formal concepts needed for graduate study in computer science.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5001:   Fundamental Concepts in Syss  
Computer Information Science  
An intensive study of the fundamental concepts of operating system and machine structures and the associated programming techniques.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5002:   Fund. Concepts in Algorithms  
Computer Information Science  
An intensive study of the fundamental concepts of algorithms and data structures and the associated programming techniques.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5003:   Fundamental Concepts in Lang.s  
Computer Information Science  
An intensive study of the fundamental concepts of programming languages and the associated software system structures.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5017:   Natural Language Processing  
Computer Information Science  
Computer processing of natural language text at morphological, lexical, syntactic, and semantic levels; algorithms and procedures for sentence parsing and analysis; applications of natural language processing techniques.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056 or CSCI 3043).
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5020:   Formal Theory of Comp. Lang.s  
Computer Information Science  
A detailed study of mathematical models of regular and context-free languages, nondeterministic and deterministic models; closure properties, design algorithms, simplification of grammars.  
3 credits  
Prerequisites
(CSCI 3011 or CSCI 5000).
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5021:   Computer Systems Engineering  
Computer Information Science  
Analysis of computer system components and manufacturing economics, and how they influence design goals, direct architectural development, create hardware/software issues and modify implementation concepts, as well as system and circuit packaging.  
3 credits  
Prerequisites
(CSCI 4023 or CSCI 5001).
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5023:   Operating Systems  
Computer Information Science  
Design and construction of operating systems for shared program computers; various contemporary operating systems.  
3 credits  
Prerequisites
(CSCI 4023 or CSCI 5001).
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5024:   Distributed Operating Sys Des.  
Computer Information Science  
Analysis of operating system design principles for multiple computers; a distributed operating system model is presented and compared to selected network and distributed operating system examples.  
3 credits  
Prerequisites
(CSCI 4023 or CSCI 5001) and 60 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5025:   Compiler Construction  
Computer Information Science  
Introduction to techniques used in current compilers for computer languages; the syntactic specification of programming languages and an introduction to syntax-directed compiling.  
3 credits  
Prerequisites
(CSCI 3011 or CSCI 4050 or CSCI 5001 or CSCI 5003) and 60 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5026:   Parallel Computing  
Computer Information Science  
This course explores the conceptual, theoretical, and practical issues raised by developing software for parallel environments and architectures. Students will write several programs using different languages and platforms.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011) and CSCI 2023.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5030:   Comp. Architecture and Design  
Computer Information Science  
This course studies the past evolution and current trends in computer architecture and the factors influencing the design of hardware and software components of computer systems. Topics include processor micro- architecture, instruction set architecture, hardware parallelism, memory subsystems, various processor design paradigms (superscalar, VLIW, multicore, and GPU), and performance analysis.  
3 credits  
Prerequisites
CSCI 2023 and 60 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5031:   Artificial Intelligence  
Computer Information Science  
Use of the computer in human problem solving. Game theory, decision trees, Markov decision problems, selected topics.  
3 credits  
Prerequisites
(CSCI 4033 or CSCI 5002) and 60 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5033:   Analysis of Algorithms  
Computer Information Science  
Introduction to the analysis of the efficiency of computer algorithms and concepts of computational complexity; sorting, matrix multiplication, others.  
3 credits  
Prerequisites
(CSCI 4033 or CSCI 5002) and 60 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5041:   Expert Syss and Logic Progming  
Computer Information Science  
Expert systems and knowledge engineering. Computer systems to emulate human expertise. Rule-based and other knowledge representation techniques. Knowledge engineering as a model for expert systems development; logic programming for expert systems implementation.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and MATH 3010 .
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5043:   Data Mining  
Computer Information Science  
This course focuses on techniques for analyzing large datasets to identify patterns of information and organize them for use in decision making. The topics include exploratory data analysis, classification, clustering, text mining, web mining, recommender systems, and neural networks as well as advanced topics covering the applications of data mining in cross-cutting domains.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056 or CSCI 3043).
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5047:   Digital Image Processing  
Computer Information Science  
Present mathematical models for image formation. Introduce statistical, geometric, and inferential methods to extract information from single and multiple images. Discuss applications of computer vision.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5050:   Prog Semantics and Derivation  
Computer Information Science  
A study of formal methods for the specification, derivation, and verification of computer programs. Predicate logic; notations for specification of programs; programming language semantics; calculational techniques for derivation of programs; case studies.  
3 credits  
Prerequisites
MATH 3010 and (CSCE 2011 or CISE 2011 or CSCI 2056 or CISE 2056)
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5051:   Comp. Sys Performance Anlys.  
Computer Information Science  
Defining, parameterizing, and evaluating models of computer systems. The emphasis is on applying queuing network models and simulation techniques as tools to evaluate the performance of centralized and distributed computer systems.  
3 credits  
Prerequisites
(CSCI 5001 or (CSCE 4023 MATH 3750)) and 60 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5054:   Web Arch. and Programming  
Computer Information Science  
Study of web architecture and programming tools. Analysis of public-port protocols such as HTTP, embedded browser languages, browser extensions and interoperability. Server-side web components, design, tuning, and security. Server components include HTTP, Common Gateway Interface, database engine, and extensions.  
3 credits  
Prerequisites
CSCI 2023 and (CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5055:   Functional Programming  
Computer Information Science  
The principles and techniques of programming with functions. Purely functional programming languages; recursion; higher-order functions; reduction models; strictness; type systems; list operations; infinite data structures; program synthesis and transformation.  
3 credits  
Prerequisites
MATH 3010 and (CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056).
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5056:   Multiparadigm Programming  
Computer Information Science  
Principles and practices of software design and programming using languages that feature explicit and convenient support for multiple programming paradigms (e.g., imperative, object-oriented, and functional).  
3 credits  
Prerequisites
CSCI 2023 and (CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056).
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5057:   GPU Computing  
Computer Information Science  
This course examines the use of GPU for general-purpose high performance parallel computing. It covers the key principles, practices, and hardware/software architectures for design of general-purpose, parallel programs using GPUs. The course surveys and analyzes real-world applications that benefit from GPUs, and involves hands-on programming as well as performance profiling and analysis. The fundamentals of concurrent programming and its challenges at algorithm and coding levels are also discussed.  
3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and (CSCI 2023 or ELEC 3850).
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5061:   Computer Networks  
Computer Information Science  
Analysis of loosely coupled computer communication, communication protocols, and network services; an open systems interconnection model is presented and compared to selected examples of computer networks.  
3 credits  
Prerequisites
CSCI 4023 and CSCI 5001 and 60 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5062:   Software Engineering I  
Computer Information Science  
Software engineering paradigms, requirement analysis and specification, design of reliable software; data flow, data structure, and object-oriented design methodologies.  
3 credits  
Prerequisites
CSCI 3087 and 60 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5075:   Database Systems  
Computer Information Science  
Review of database systems with special emphasis on data description and manipulation languages; data normalization; functional dependencies; database design; data integrity and security; distributed data processing; design and implementation of a comprehensive project.  
3 credits  
Prerequisites
(CSCI 3075 or CSCI 4023 or CSCI 5001) and 60 earned credits.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5499A:   Spec. Topics in Comp. Sci. I  
Computer Information Science  
May be repeated for credit.  
1 - 3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and CSCI 2023.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5499B:   Spec. Topics in Comp. Sci. II  
Computer Information Science  
May be repeated for credit.  
1 - 3 credits  
Prerequisites
(CSCI 2011 or CISE 2011 or CSCI 2056 or CISE 2056) and CSCI 2023.
  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5500:   Fund. Concepts in Computing  
Computer Information Science  
An intensive study of the formal concepts needed for graduate study in computer science.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5501:   Fundamental Concepts in Syss  
Computer Information Science  
An intensive study of the fundamental concepts of operating system and machine structures and the associated programming techniques.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5502:   Fund. Concepts in Algorithms  
Computer Information Science  
An intensive study of the fundamental concepts of algorithms and data structures and the associated programming techniques.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5503:   Fundamental Concepts in Lang.s  
Computer Information Science  
An intensive study of the fundamental concepts of programming languages and the associated software system structures.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5517:   Natural Language Processing  
Computer Information Science  
Computer processing of natural language text at morphological, lexical, syntactic, and semantic levels; algorithms and procedures for sentence parsing and analysis; applications of natural language processing techniques.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5520:   Formal Theory of Comp. Lang.s  
Computer Information Science  
A detailed study of mathematical models of regular and context-free languages, nondeterministic and deterministic models; closure properties, design algorithms, simplification of grammars.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5521:   Computer Systems Engineering  
Computer Information Science  
Analysis of computer system components and manufacturing economics, and how they influence design goals, direct architectural development, create hardware/software issues and modify implementation concepts, as well as system and circuit packaging.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5523:   Operating Systems  
Computer Information Science  
Design and construction of operating systems for shared program computers; various contemporary operating systems.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5524:   Distributed Operating Sys Des.  
Computer Information Science  
Analysis of operating system design principles for multiple computers; a distributed operating system model is presented and compared to selected network and distributed operating system examples.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5525:   Compiler Construction  
Computer Information Science  
Introduction to techniques used in current compilers for computer languages; the syntactic specification of programming languages and an introduction to syntax-directed compiling.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5526:   Parallel Computing  
Computer Information Science  
This course explores the conceptual, theoretical, and practical issues raised by developing software for parallel environments and architectures. Students will write several programs using different languages and platforms.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5530:   Comp. Architecture and Design  
Computer Information Science  
This course studies the past evolution and current trends in computer architecture and the factors influencing the design of hardware and software components of computer systems. Topics include processor micro- architecture, instruction set architecture, hardware parallelism, memory subsystems, various processor design paradigms (superscalar, VLIW, multicore, and GPU), and performance analysis.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5531:   Artificial Intelligence  
Computer Information Science  
Use of the computer in human problem solving. Game theory, decision trees, Markov decision problems, selected topics.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5533:   Analysis of Algorithms  
Computer Information Science  
Introduction to the analysis of the efficiency of computer algorithms and concepts of computational complexity; sorting, matrix multiplication, others.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5541:   Expert Syss and Logic Progming  
Computer Information Science  
Expert systems and knowledge engineering. Computer systems to emulate human expertise. Rule-based and other knowledge representation techniques. Knowledge engineering as a model for expert systems development; logic programming for expert systems implementation.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5543:   Data Mining  
Computer Information Science  
This course focuses on techniques for analyzing large datasets to identify patterns of information and organize them for use in decision making. The topics include exploratory data analysis, classification, clustering, text mining, web mining, recommender systems, and neural networks as well as advanced topics covering the applications of data mining in cross-cutting domains.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5547:   Digital Image Processing  
Computer Information Science  
Present mathematical models for image formation. Introduce statistical, geometric, and inferential methods to extract information from single and multiple images. Discuss applications of computer vision.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5550:   Prog Semantics and Derivation  
Computer Information Science  
A study of formal methods for the specification, derivation, and verification of computer programs. Predicate logic; notations for specification of programs; programming language semantics; calculational techniques for derivation of programs; case studies.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5551:   Comp. Sys Performance Anlys.  
Computer Information Science  
Defining, parameterizing, and evaluating models of computer systems. The emphasis is on applying queuing network models and simulation techniques as tools to evaluate the performance of centralized and distributed computer systems.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5554:   Web Arch. and Programming  
Computer Information Science  
Study of web architecture and programming tools. Analysis of public-port protocols such as HTTP, embedded browser languages, browser extensions and interoperability. Server-side web components, design, tuning, and security. Server components include HTTP, Common Gateway Interface, database engine, and extensions.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5555:   Functional Programming  
Computer Information Science  
The principles and techniques of programming with functions. Purely functional programming languages; recursion; higher-order functions; reduction models; strictness; type systems; list operations; infinite data structures; program synthesis and transformation.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5556:   Multiparadigm Programming  
Computer Information Science  
Principles and practices of software design and programming using languages that feature explicit and convenient support for multiple programming paradigms (e.g., imperative, object-oriented, and functional).  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5557:   GPU Computing  
Computer Information Science  
This course examines the use of GPU for general-purpose high performance parallel computing. It covers the key principles, practices, and hardware/software architectures for design of general-purpose, parallel programs using GPUs. The course surveys and analyzes real-world applications that benefit from GPUs, and involves hands-on programming as well as performance profiling and analysis. The fundamentals of concurrent programming and its challenges at algorithm and coding levels are also discussed.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5561:   Computer Networks  
Computer Information Science  
Analysis of loosely coupled computer communication, communication protocols, and network services; an open systems interconnection model is presented and compared to selected examples of computer networks.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5562:   Software Engineering I  
Computer Information Science  
Software engineering paradigms, requirement analysis and specification, design of reliable software; data flow, data structure, and object-oriented design methodologies.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5575:   Database Systems  
Computer Information Science  
Review of database systems with special emphasis on data description and manipulation languages; data normalization; functional dependencies; database design; data integrity and security; distributed data processing; design and implementation of a comprehensive project.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5999A:   Spec. Topics in Comp. Sci. I  
Computer Information Science  
May be repeated for credit.  
1 - 3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 5999B:   Spec. Topics in Comp. Sci. II  
Computer Information Science  
May be repeated for credit.  
1 - 3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 6032:   Machine Learning  
Computer Information Science  
Presents the theory of and algorithms for constructing computer programs that automatically learn from experience. Introduces key concepts from statistics, artificial intelligence, and computational complexity to the design of practical machine learning systems.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 6058:   Software Language Engineering  
Computer Information Science  
Study of topics on the design, implementation, use, and evolution of artificial languages for the engineering of software. Languages of interest include general-purpose programming languages, domain-specific languages, and modeling languages as well as application programming interfaces and collections of design patterns that implicity define languages.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 6063:   Software Families  
Computer Information Science  
Study of concepts, methods, patterns, and tools for the analysis, design, and implementation of software families (e.g., software frameworks and software product lines) and other reusable, generic, and flexible programming artifacts.  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture
  
CSCI 6065:   Wireless and Sensor Networks  
Computer Information Science  
This course uses wireless and sensor networks as case studies to enable students to understand and analyze loosely coupled computer networks, network protocols, and network services. Building on basic knowledge about wireless and sensor networks, the course explores recent research on related topics. Students learn to use appropriate embedded programming languages (e.g., nesC) and operating system platforms (e.g., TinyOS) to develop embedded and network programs. Students also learn to design and implement mote-based wireless and sensor network systems by completing a series of programming projects (e.g., multiple access control, multi-hop routing, and data collection from sensors).  
3 credits  
Potentially offered with the following Instruction Type(s):
Lecture