2021-2022 Academic Catalog

Print Options

Computer Science (CSCI)

CSCI 1001 -  Computer Forensics I  (3 Credits)  

Topics covered: how to conduct a computer forensic exam; how an individual can hide data on a computer; how the investigator can find that hidden data.This course will also incorporate hands-on learning through the use of a forensic software package.(Non-CS majors) Max Hours: 3 Credits.

Grading Basis: Letter Grade

CSCI 1350 -  Introduction to Computing in Society  (3 Credits)  

This is an introductory course for individuals who would like to learn about the field of computer science, how modern computing is affecting society, and the basics of computer programming. We will explore how computing has changed society, how intertwined in our daily lives computer programs have become, and how these programs are created. We will explore these topics while learning the basics of computer programming with a modern programming language. Prereq: High School Algebra. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Additional Information: Denver Core Requirement, Biol Phys Sci - Math.

CSCI 1410 -  Fundamentals of Computing  (3 Credits)  

First course in computing for those who will take additional computer science courses. Covers the capabilities of a computer, the elements of a modern programming language, and basic techniques for solving problems using a computer. Coreq: CSCI 1411. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Coreq: CSCI 1411.

CSCI 1411 -  Fundamentals of Computing Laboratory  (1 Credit)  

This laboratory is taken with CSCI 1410 and will provide students with additional help with problem solving and computer exercises to compliment the course material covered in CSCI 1410. Coreq: CSCI 1410. Max Hours: 1 Credit.

Grading Basis: Letter Grade

D-En CO: CSCI 1410 coreq

CSCI 1510 -  Logic Design  (3 Credits)  

The design and analysis of combinational and sequential logic circuits. Topics include binary and hexadecimal number systems, Boolean algebra and Boolean function minimization, and algorithmic state machines. Lecture/lab includes experiments with computer-aided design tools. This course requires the level of mathematical maturity of students ready for Calculus I. Max hours: 3 Credits.

Grading Basis: Letter Grade

CSCI 1800 -  Special Topics  (1-3 Credits)  

Repeatable. Max Hours: 9 Credits.

Grading Basis: Letter Grade

Repeatable. Max Credits: 9.

CSCI 2002 -  Computer Forensics II  (3 Credits)  

This is a continuation of CSCI 1001 This course will cover: computer forensics for advanced operating systems (Mac, Linux, and Unix) and mobile device forensics. This course will incorporate hands-on-learning by utilizing a computer forensics software package. (Non CS majors) Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: CSCI 1001

CSCI 2132 -  Circuits and Electronics  (3 Credits)  

This course is designed to serve as the basic course in CSE curriculum for second year bachelor students. It introduces the fundamentals of the analog and digit circuit abstraction and applications. Topics include: resistive elements, networks, sources, switches, MOS transistors, digital abstraction, amplifiers, energy storage elements. A web-based laboratory will allow students to have hands-on experiments. Prereq: MATH 2411, PHYS 2331, and CSCI 1510. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: CSCI 1510, MATH 2411, and PHYS 2331

CSCI 2312 -  Object Oriented Programming  (3 Credits)  

Programming topics in a modern programming language. The emphasis is on problem solving using object oriented and Generic Programming. Topics include advanced I/O, classes, inheritance, polymorphism and virtual functions, abstract base classes, exception handling, templates, and the Standard Template Library. Prereq: Grade of C- or higher in the following courses: CSCI 1410 and CSCI 1411. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: CSCI 1410 and CSCI 1411

CSCI 2421 -  Data Structures and Program Design  (3 Credits)  

Topics include a first look at an algorithm, data structures, abstract data types, and basic techniques such as sorting, searching, and recursion. Programming exercises are assigned through the semester. Prereq: CSCI 2312 with a grade of C- or higher. Max hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: CSCI 2312 with a grade of C- or higher.

CSCI 2511 -  Discrete Structures  (3 Credits)  

Covers the fundamentals of discrete mathematics, including: logic, sets, functions, asymptotics, mathematical reasoning, induction, combinatorics, discrete probability, relations and graphs. Emphasis on how discrete mathematics applies to computer science in general and algorithm analysis in particular. Prereq: MATH 1401 with a C- or higher (Calculus I). Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: MATH 1401 with a C- or higher

CSCI 2525 -  Assembly Language and Computer Organization  (3 Credits)  

Topics include computer architecture, program execution at the hardware level, programming in assembly language, the assembly process, hardware support of some high-level language features, and a program's interface to the operating system. Programming exercises are assigned in this course. These exercises involve the use of specific hardware in designated laboratories. Prereq: Grade of C- or higher in the following courses: CSCI 1410, CSCI 1411 and CSCI 1510. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: CSCI 1410, CSCI 1411 and CSCI 1510.

CSCI 2571 -  Fundamentals of UNIX  (3 Credits)  

Introduces the UNIX operating system and its family of related utility programs. History and overview, versions, and common features. File operations, utilities, shells, editors, filters and data manipulation. Shell programming communications and networking, windowing environments, mail and Internet. Programming tools. Simple system administration. Credit will not count toward BSCSE degree. Prereq: Familiarity with operating systems and/or a programming course. Max Hours: 3 Credits.

Grading Basis: Letter Grade

CSCI 2800 -  Special Topics  (3 Credits)  

Max Hours: 3 Credits.

Grading Basis: Letter Grade

CSCI 2930 -  Practical System Administration  (3 Credits)  

Introduces students to essential system administration topics including, but not limited to, IT design and configuration methodologies, desktop support, building and configuring production level servers, network technologies and troubleshooting, security, virtualization, storage, and server operating systems. Prereq: CSCI 1410 or an equivalent introductory computer programming course. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: CSCI 1410

Typically Offered: Fall, Spring.

CSCI 2940 -  NAND to Tetris: Foundations of Computer Systems  (3 Credits)  

Introduces the principles of computer systems that underlie the global information age. Starting from first principles, students gradually construct a simple hardware platform and a modern software hierarchy, yielding a working basic yet powerful computer system. Only introductory programming experience is required. Prereq: Grade of C- or higher in the following courses: CSCI 1410 and CSCI 1411. Cross-listed with IWKS 3300. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: CSCI 1410 and CSCI 1411.

CSCI 2941 -  Game Design and Development I  (3 Credits)  

Introduces principles of computer game development, building on the rich interplay of computer science, graphics design, physics, music, and narrative. Students develop interactive 2D and 3D games and a final project. Substantial software development involved, but requires only introductory programming experience. Prereq: Grade of C- or higher in the following courses: CSCI 1410 and CSCI 1411. Cross-listed with IWKS 3400. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: CSCI 1410 and CSCI 1411.

CSCI 2942 -  IoT: The Internet of Things  (3 Credits)  

In a world where everything is connected to everything else, how does that work? This course introduces techniques for (1) designing systems that can sense the environment and respond to humans in meaningful ways and (2) creating networks of physical objects that collect and exchange data. Such systems might include wearable sensors, interactive art, and Internet-connected home devices. Working individually and in teams, students will develop projects using Inworks’ materials, devices, and fabrication tools. The course involves considerable prototyping and software development but requires only introductory programming and prototyping experience. Prereq: Grade of C- or higher in the following courses: CSCI 1410 and CSCI 1411. Cross-listed with IWKS 4120. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: CSCI 1410 and CSCI 1411.

CSCI 3287 -  Database System Concepts  (3 Credits)  

Introduces database design, database management systems, and the SQL standard database language. Includes data modeling techniques, conceptual database design, theory of object-relational and relational databases, relational algebra, relational calculus, normalization and database integrity. Prereq: Grade of C- or higher in the following courses: ENGL 1020, CSCI 2312 and CSCI 2421. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: ENGL 1020, CSCI 2312 and CSCI 2421. Restriction: Restricted to Computer Science Majors and Minors.

CSCI 3320 -  Advanced Programming  (3 Credits)  

The course will cover a wide range of advanced programming topics via focusing on development of cross-platform applications.The focus will be on problem solving and developing applications with modern languages (such as C++, Java, Objective-C) & frameworks, including Xcode, Angularjs (with Javascript, HTML5, CSS), Phonegap, & Webstorm. Prereq: CSCI 2421. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: CSCI 2421 with a C- or higher

CSCI 3412 -  Algorithms  (3 Credits)  

Design and analysis of algorithms. Asymptotic analysis as a means of evaluating algorithm efficiency. The application of induction and other mathematical techniques for proving the correctness of an algorithm. Data structures for simplifying algorithm design, such as hash tables, heaps and search trees. Elementary graph algorithms. Assignments include written work and programming projects. Prereq: Grade of C- or higher in the following courses: CSCI 2312, 2421 and 2511. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: CSCI 2312, 2421 and 2511. Restricted to Computer Science Majors and Minors.

CSCI 3415 -  Principles of Programming Languages  (3 Credits)  

Introduces programming language design concepts and implementation issues. Includes language concepts such as control structures and data types, formal language specification techniques, and syntactic and semantic implementation issues. Prereq: Grade of C- or higher in the following courses: CSCI 2312, 2421 and CSCI 2525. Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: CSCI 2312, 2421 and CSCI 2525. Restricted to undergraduate Computer Science Majors and Minors.

CSCI 3453 -  Operating System Concepts  (3 Credits)  

Covers the principles of computer operating systems and the essential components of an operating system. Topics include: I/O devices, file systems, CPU scheduling and memory management. Prereq: Grade of C- or higher in the following courses: CSCI 3412 and CSCI 2525. Restricted to Computer Science Majors, Minors and CSSC Certificate. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: CSCI 3412 and CSCI 2525. Restricted to Computer Science Majors, Minors and CSSC Certificate.

CSCI 3508 -  Introduction to Software Engineering  (3 Credits)  

Introduces principles and practices of software engineering: software life-cycle models, requirements engineering, analysis and design tools, human factors risk management, program certification, project management and intellectual property rights. Prereq: Grade of C- or higher in CSCI 3412. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3412. Restricted to Computer Science Majors and Minors.

CSCI 3511 -  Hardware-Software Interface  (3 Credits)  

Hardware and software techniques needed to control and program device interfaces. Input and output devices, computer peripherals, device drivers and interfaces are introduced. Specific programmable devices are used in class projects. Prereq: Grade of C- or higher in CSCI 2525. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 2525. Restriction: Restricted to Computer Science Majors and Minors.

CSCI 3515 -  Internet of Things: Sensing, Communication & Control  (3 Credits)  

The Internet of Things (IoT) is transforming our physical world into a complex and dynamic system of connected devices on an unprecedented scale. This course covers the basic components of IoT systems: sensing, communication, control, and power supply, as well as case studies on the design of real-world IoT applications, including voice authentication, activity monitoring, and battery management. This course integrates both the theories/science of IoTs and their hands-on implementation, as well as the basic practice of data collection, processing, analysis, and visualization. Prereq: CSCI 2312 & 2421. Restriction: Restricted to Computer Science majors and minors (CSCI-BS, CSCS-BA, and CSCI-MIN). Max hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: CSCI 2312 2421 Restriction: Restricted to Computer science majors and minors (CSCI-BS, CSCS-BA, and CSCI-MIN)

CSCI 3560 -  Probability and Computing  (3 Credits)  

Events and probability. Discrete random variables. Moments of random variables. Conditional probability and expectation. The probabilistic method. Markov chains and random walks. Continuous distributions and the Poisson process. Entropy, randomness and information. Randomized algorithms. Prereq: Grade of a C- or higher in CSCI 2511 and MATH 2411. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of a C- or higher in CSCI 2511 and MATH 2411. Restriction: Restricted to Computer Science Majors and Minors.

CSCI 3740 -  Computer Security  (3 Credits)  

Introduces basic knowledge from the computer security area. Topics covered in this course include: Cybersecurity Ethics, Penetration Testing, Secure Programming Practices, and Life-Cycle Security. Students will gain the understanding of ethics in cybersecurity with the tools for ethical decision making, learn methods of exploiting vulnerabilities and perform penetration testing on a simple network, understand the characteristics of secure programming with the ability to implement programs that are free from vulnerabilities, and understand security related concerns in a system Life-Cycle and how security principles can be applies to improve security throughout a system. Prereq: CSCI 2421. Restriction: Restricted to Computer Science Majors and Minors. Max hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: CSCI 2421. Restriction: Restricted to Computer Science Majors and Minors.

CSCI 3761 -  Introduction to Computer Networks  (3 Credits)  

Introduction and overview of computer networks. Topics include Internet protocols, network devices, network security, and performance issues. Prereq: Grade of C- or higher in CSCI 2312 and 2421. Restriction: Restricted to Computer Science Majors, Minors and CSSC Certificate. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 2312 and 2421. Restriction: Restricted to Computer Science Majors, Minors and CSSC Certificate.

CSCI 3800 -  Special Topics  (3 Credits)  

Credit and subject matter to be arranged. Restriction: Restricted to Computer Science Majors and Minors. Repeatable. Max hours: 9 Credits.

Grading Basis: Letter Grade

Repeatable. Max Credits: 9.

Restricted to Computer Science Majors and Minors (CSCS-BA, CSCI-BS, CSCI-MIN, CMSC-MS)

CSCI 3840 -  Independent Study: CSCI  (1-3 Credits)  

Restriction: Restricted to undergraduate Computer Science Majors and Minors. Repeatable. Max Hours: 9 Credits.

Grading Basis: Letter Grade

Repeatable. Max Credits: 9.

Restricted to undergraduate Computer Science Majors and Minors.

CSCI 3916 -  Web API  (3 Credits)  

JavaScript Web technologies for front-end development and back-end development. Building a full end to end solution with a mobile or web front-end, Web API and NoSQL database. Prereq: Grade of C- or higher in CSCI 2312 and CSCI 2421. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 2312 and CSCI 2421. Restriction: Restricted to Computer Science Majors and Minors

CSCI 3920 -  Advanced Programming with Java and Python  (3 Credits)  

This course introduces the fundamental concepts to develop programs and projects using modern software engineering techniques using two different programming languages (Java and Python). It will cover and apply pattern design approaches, reusable components driven by everyday needs within many software developments, the relationships between object oriented programming concepts and software design concepts. It will dig deeper into techniques to program single threaded applications as well as advanced techniques to construct concurrent and distributed applications. Prereq: Grade of C- or higher in the following courses: CSCI 2312 and CSCI 2421. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 2312 and CSCI 2421. Restriction: Restricted to Computer Science Majors and Minors

CSCI 3963 -  Network Structures  (3 Credits)  

This interdisciplinary course examines how the technological, social and economic worlds are connected and how the study of networks sheds light on these connections. Topics include: how opinions spread through society; the robustness and fragility of financial networks; the technology and economics of Web information and on-line communities. Prereq: Grade of C- or higher in MATH 2411. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in MATH 2411. Restricted to Computer Science Majors and Minors.

CSCI 4034 -  Theoretical Foundations of Computer Science  (3 Credits)  

Introduces abstract models for computation, formal languages and machines. Topics include: automata theory, formal languages, grammars and Turing machines. Prereq: Grade of C- or higher in CSCI 3412. Restriction: Restricted to Computer Science Majors, Minors and CSSC Certificate. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3412. Restricted to Computer Science Majors, Minors and CSSC Certificate.

CSCI 4110 -  Applied Number Theory  (3 Credits)  

Every year, Topics include divisibility, prime numbers, congruences, number theoretic functions, quadratic reciprocity, special diophantine equations, cryptography, computer security, and engineering applications. Cross-listed with CSCI 5110. Prereq: Grade of C- or higher in one of the following courses: MATH 3000 or CSCI 2511. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in MATH 3000 or CSCI 2511. Restricted to Computer Science Majors and Minors.

CSCI 4172 -  Complexity and Problem Solving  (3 Credits)  

Theoretical and practical aspects of solving complex problems, in particular, but not limited to, NP-complete and PSPACE-complete problems. Various heuristic and approximation algorithms, including greedy, ant, and Genetic Algorithms will be studied. This course is by instructor's permission only. Prereq: Grade of C- or higher in CSCI 4034. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 4034. Restricted to Computer Science Majors and Minors.

CSCI 4173 -  Computational Complexity and Problem Solving  (3 Credits)  

Solid, in-depth theoretical foundation in computing, computational complexity, and algorithmics. Additional topics include various algorithms for both discrete and non-discrete problem domains. Models of Computation, Computational Complexity, Time Complexity Classes, Space Complexity Classes, The Theory of NP-completeness. Prereq: Grade of C- or higher in CSCI 4034. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 4034. Restricted to Computer Science Majors and Minors.

CSCI 4202 -  Introduction to Artificial Intelligence  (3 Credits)  

Topics include heuristic search, games playing algorithms, application of predicate calculus to AI, introduction to planning, application of formal grammars to AI. Prereq: Grade of C- or higher in CSCI 3412. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3412. Restricted to Computer Science Majors and Minors.

CSCI 4211 -  Mobile Computing and Programming  (3 Credits)  

This course contains two main simultaneous tracks, namely mobile computing and mobile programming. A series of lectures on various aspects of mobile computing provides an understanding of challenges and solutions in design and implementing mobile systems. The main topics include mobile sensing, human mobility and its technical implication. Prereq: Grade of C- or higher in CSCI 3453. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3453. Restriction: Restricted to Computer Science Majors and Minors.

CSCI 4220 -  Social Networks & Informatics  (3 Credits)  

The main topics covered by the course will include 1) social network data structures, 2) basic random graph models and graph algorithms; 3) recommendation systems and predictive models 4) query suggestion and content analysis 5) link analysis and community detection 6) the spread of information, disease, and influence on networks. This course builds a solid foundation in social informatics technology. Prereq: CSCI 3412. Restriction: Restricted to computer science majors and minors. Cross-listed with CSCI 5220. Max hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: CSCI 3412. Restriction: Restricted to computer science majors and minors. Programs restricted to: CSCI-BS, CSCS-BA, CSCI-MIN.

CSCI 4287 -  Embedded Systems Programming  (3 Credits)  

Embedded Systems Programming happens across a spectrum of Domains. Embedded Systems Programming in the Small is characterized by the creation of small applications in high volumes. Embedded Systems Programming in the Large is characterized by the creation of medium to large applications in one-off or low volumes using specialized Operating Systems such as Real-time Operating Systems. Students will current languages, and are expected to have basic Operating Systems understanding. Prereq: Graded with C- or higher in CSCI 3453. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3453. Restriction: Restricted to Computer Science Majors and Minors.

CSCI 4408 -  Applied Graph Theory  (3 Credits)  

Introduces discrete structures applications of graph theory to computer science, engineering and operations research. Topics include connectivity, coloring, trees, Euler and Hamiltonian paths and circuits. Matching and covering problems, shortest route and network flows. Prereq: Grade of C- or higher in one of the following courses: MATH 3000 or CSCI 2511. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in MATH 3000 or CSCI 2511. Restricted to Computer Science Majors and Minors.

CSCI 4411 -  Computational Geometry  (3 Credits)  

Many practical and aesthetic algorithmic problems have their roots in geometry. Applications abound in the areas of computer graphics, robotics, computer-aided design, and geographic information systems, for example. A selection of topics from convex hull, art gallery problems, ray tracing, point location, motion planning, segment intersection, Voronoi diagrams, visibility and algorithmic folding will be covered. Cross-listed with CSCI 5411. Prereq: Grade of C- or higher in CSCI 3412. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3412. Restricted to Computer Science Majors and Minors.

CSCI 4455 -  Data Mining  (3 Credits)  

Introduces concepts, techniques and methodologies to discover patterns in data. Topics include (but are not limited to) data preprocessing and cleansing, data warehousing, pattern mining, classification, prediction, cluster analysis, outlier detection, and online data analytics. Prereq: Grade of C- or higher in the following coures: MATH 3195 (or both MATH 3191 and MATH 3200), CSCI 3287 and CSCI 3412. Restricted to Computer Science Majors and Minors. Cross-listed with CSCI 5455. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prerequisite: Grade of C- or higher in MATH 3195 (or both MATH 3191 and MATH 3200), CSCI 3287 and CSCI 3412. Restricted to Computer Science Majors and Minors.

CSCI 4501 -  Java  (3 Credits)  

Comprehensive course on Java programming. Coverage of programming language constructs of Java and the core libraries that come with Java: coverage of advanced topics, including technologies for building distributed applications, and interacting with a database. Prereq: Grade of C- or higher in CSCI 2312 and CSCI 2421. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 2312 and CSCI 2421. Restricted to Computer Science Majors and Minors.

CSCI 4551 -  Parallel & Distributed Computing  (3 Credits)  

Examines a range of topics involving parallel and distributed computing. Topics include language constructs for concurrency, work distribution, synchronization, and communication. Throughout, design of example scientific computing algorithms for parallel and distributed computation will be introduced. Prereq: Grade of C- or higher in Math 3195 (or both MATH 3191 and MATH 3200), CSCI 3415 & CSCI 3453. Restricted to Computer Science Majors and Minors. Max hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in Math 3195 (or both MATH 3191 and MATH 3200), CSCI 3415 CSCI 3453. Restricted to Computer Science Majors and Minors.

CSCI 4555 -  Compiler Design  (3 Credits)  

Introduces the basic techniques used in translating programming languages: scanning, parsing, symbol table management, code generation, code optimization and error recovery. Prereq: Grade of C- or higher in CSCI 3412 and CSCI 3415. Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3412 and CSCI 3415. Restricted to Computer Science Majors and Minors.

CSCI 4565 -  Introduction to Computer Graphics  (3 Credits)  

Introduces two and three dimensional computer graphics. Topics include scan conversion, geometric primitives, transformation, viewing, basic rendering, and illumination. Emphasis is on programming using "C" and "C++" Open GL. Pre-req: Grade of C- or higher in CSCI 3412 and (MATH 3191 or MATH 3195). Restricted to Computer Science Majors and Minors. Cross-listed with CSCI 5565. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Pre-req: Grade of C- or higher in CSCI 3412 and (MATH 3191 or MATH 3195). Restricted to Computer Science Majors and Minors.

CSCI 4570 -  Virtual and Augmented Reality  (3 Credits)  

This course covers the fundamental concepts and technologies of virtual and augmented reality, and it introduces recent advances in the field. Topics include 3D user interaction, immersive environments, tele-presence, mobile AR, human perception, and VR/AR applications. Restricted to computer science majors and minors. Pre-requisite: CSCI 3412. Cross-listed with CSCI 5570. Max hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: CSCI 3412. Restriction: Restricted to computer science majors and minors. Programs restricted to: CSCI-BS, CSCS-BA, CSCI-MIN.

CSCI 4580 -  Data Science  (3 Credits)  

Introduces concepts and techniques that enable data cycle from data extraction to knowledge discovery, including but not limited to data exploration, hypotheses testing, data organization, data featurization, supervised and unsupervised data modeling and learning, scaling-up analytics, and data visualization. Prereq: Grade of C- or higher in MATH 3195 (or both MATH 3191 and MATH 3200), CSCI 3287 and CSCI 3412. Restricted to Computer Science Majors & Minors. Cross-listed with CSCI 5580. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prerequisite: Grade of C- or higher in MATH 3195 (or both MATH 3191 and MATH 3200), CSCI 3287 and CSCI 3412. Restricted to Computer Science Majors and Minors.

CSCI 4591 -  Computer Architecture  (3 Credits)  

Deals with how assembly language maps to hardware, and basic hardware techniques implemented in computers. Topics include logic design of arithmetic units, data control path processor logic, pipelining, memory systems, and input-output units. The emphasis is on logic structure rather than electronic circuitry. Students must know basic control logic design and be familiar with an assembly language before taking this course. Prereq: Grade of C- or higher in CSCI 2525. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 2525. Restriction: Restricted to Computer Science Majors and Minors.

CSCI 4630 -  Linguistic Geometry  (3 Credits)  

Linguistic Geometry (LG) is a type of Game Theory in Artificial Intelligence, which permits to overcome combinatorial explosion and generate optimal strategies in real time. LG is currently changing the paradigm of military command and control in the USA and abroad. Prereq: Grade of C- or higher in CSCI 3412. Restriction: Restricted to Computer Science Majors and Minors. Cross-listed with CSCI 5619. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3412. Restricted to Computer Science Majors and Minors.

CSCI 4640 -  Universal Compiler: Theory and Construction  (3 Credits)  

Theoretical foundations and step-by-step hands-on experience in the development of a compiler, which can tune itself to a new programming language. This is a must-take course for future software developers as well as those interested in applications of the theory of Computer Science. Cross-listed with CSCI 5640. Prereq: Grade of C- or higher in CSCI 3453. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3453. Restriction: Restricted to Computer Science Majors and Minors.

CSCI 4650 -  Numerical Analysis I  (3 Credits)  

Methods and analysis of techniques used to resolve continuous mathematical problems on the computer. Solution of linear and nonlinear equations, interpolation and integration. Cross-listed with CSCI 5660, MATH 4650, and MATH 5660. Prereq: MATH 2411, MATH 3191 or MATH 3195, and programming experience. Restriction: Restricted to Computer Science Majors. Max hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: MATH 2411 and (MATH 3191 or MATH 3195), and programming experience. Restricted to Computer Science Majors.

CSCI 4660 -  Numerical Analysis II  (3 Credits)  

Numerical differentiation and integration, numerical solution of ordinary differential equations, and numerical solutions of partial differential equations as time allows. Prereq: Grade of C- or higher in MATH 3195 (or both MATH 3191 and MATH 3200), MATH or CSCI 4650 or 5660 and programming experience. Restricted to Computer Science Majors. Cross-listed with CSCI 5661, MATH 4660 and 5661. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in MATH 3195 (or both MATH 3191 and MATH 3200), MATH or CSCI 4650 or 5660 and programming experience. Restricted to Computer Science Majors.

Typically Offered: Spring.

CSCI 4738 -  Senior Design I  (3 Credits)  

This is an advanced practical course in which students design, implement, and document and test software systems for use in industry, non-profits, government and research institutions. The course offers practical experience by working closely with project sponsors. It also offers extensive experience in oral and written communication throughout the software life cycle. Prereq: Grade of C- or higher in CSCI 3287, CSCI 3415, CSCI 3453, and CSCI 3508. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3287, CSCI 3415, CSCI 3453, and CSCI 3508. Restricted to Computer Science Majors and Minors.

CSCI 4739 -  Senior Design II  (3 Credits)  

This course is a continuation of Senior Design I. Students must have taken Senior Design I in order to enroll for Senior Design II. In this course, the projects begun in Senior Design I are completed and presented. Prereq: CSCI 4738. Restricted to undergraduate Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 4738. Restricted to Computer Science Majors and Minors.

CSCI 4741 -  Principles of Cybersecurity  (3 Credits)  

Focuses on the most common threats to cybersecurity as well as ways to prevent security breaches or information loss. Topics will include: understanding and thwarting hacker methods, authentication, cryptography, programming security, malware analysis, web, database and file server security, network and enterprise security methods. Prereq: Grade of C- or higher in CSCI 3287 and CSCI 3761. Restriction: Restricted to Computer Science Majors, Minors and CSSC Certificate. Max hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3287 and CSCI 3761. Restriction: Restricted to Computer Science Majors, Minors and CSSC Certificate.

CSCI 4742 -  Cybersecurity Programming and Analysis  (3 Credits)  

Focuses on cybersecurity related programming and analysis skills. Topics include: network and security application development, intrusion detection, automating security hardening. Students will design and develop security applications in multiple programming languages. Undergraduate algorithms and programming knowledge expected. Pre-Req: CSCI 3415. Restricted to undergraduate Computer Science Majors and Minors. Cross-listed with CSCI 5742. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3415. Restriction: Restricted to Computer Science Majors and Minors.

CSCI 4743 -  Cyber and Infrastructure Defense  (3 Credits)  

Presents analytical study of state-of-the-art attack and defense paradigms in cyber systems and infrastructures. Analysis will focus on: theoretical foundations of cybersecurity, practical development of novel technical defense techniques and analysis of alternatives. Knowledge of undergraduate-level networking. Cross-listed with CSCI 5743. Prereq: Grade of C- or higher in CSCI 3761. Restriction: Restricted to Computer Science Majors, Minors and CSSC Certificate. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3761. Restricted to Computer Science Majors, Minors and CSSC Certificate.

CSCI 4771 -  Introduction to Mobile Computing  (3 Credits)  

Provides an in-depth understanding of the fundamentals in mobile computing and studies the existing and proposed solutions for ubiquitous computing. This course focuses on systems and networking issues involved with supporting mobility. Prereq: Grade of C- or higher in CSCI 3453 and CSCI 3761. Restricted to Computer Science Majors and Minors. Cross-listed with CSCI 5771. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3453 and CSCI 3761. Restricted to Computer Science Majors and Minors.

CSCI 4788 -  Bioinformatics  (3 Credits)  

Provides a broad exposure to the basic concepts and methodologies of bioinformatics and their application to analyzing genomic and proteomic data. Topics may include dynamic programming algorithms, graph theoretic techniques, hidden Markov models, phylogenetic trees, RNA/protein structure prediction and microarray analysis. Cross-listed with MATH 4788, PHYS 4788. Prereq: Grade of C- or higher in CSCI 1410, CSCI 1411 and MATH 3195 or 3191. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 1410, CSCI 1411 and MATH 3195 or 3191. Restricted to Computer Science Majors and Minors.

CSCI 4800 -  Special Topics  (3 Credits)  

Credit and subject matter to be arranged. Restriction: Restricted to Computer Science Majors and Minors. Repeatable. Max hours: 9 Credits.

Grading Basis: Letter Grade

Repeatable. Max Credits: 9.

Restricted to Computer Science Majors and Minors (CSCS-BA, CSCI-BS, CSCI-MIN, CMSC-MS)

CSCI 4840 -  Independent Study  (3 Credits)  

Restricted to undergraduate Computer Science Majors and Minors with senior standing. Repeatable. Max Hours: 9 Credits.

Grading Basis: Letter Grade

Repeatable. Max Credits: 9.

Restricted to undergraduate Computer Science Majors and Minors with senior standing.

CSCI 4910 -  User Experience Design  (3 Credits)  

A how-to course for any technologist who has endured difficult interfaces and wants to design effective user interfaces that respect and advance the user experience. Course includes: Psychology, HCI personas, scenarios, prototyping, and evaluation for desktop and mobile applications. Prereq: Grade of C- or higher in CSCI 2312 and CSCI 2421. Restricted: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 2312 and CSCI 2421. Restricted to Computer Science Majors and Minors.

CSCI 4920 -  Computer Game Design and Programming  (3 Credits)  

Computer Game Design and Programming introduces practical and example driven approaches to modern 3D game development. Topics include 3D modeling, character animation, UI design, scripting, texture mapping, and sound effect. Prereq: Grade of C- or higher in CSCI 3412. Restriction: Restricted to Computer Science Majors and Minors. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in CSCI 3412. Restricted to Computer Science Majors and Minors.

CSCI 4929 -  Internship  (3 Credits)  

Faculty and employer-supervised employment in industry. Enrollment is limited to students who fully complete a contract for cooperative education credit by the last day of the drop or add period. Prereq: CSCI 3508. Restricted to undergraduate students in the Bachelors of Arts in Computer Science Program (CSCS-BA). Max hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: CSCI 3508. Restriction: Restricted to undergraduate students in the Bachelors of Arts in Computer Science Program (CSCS-BA).

CSCI 4930 -  Machine Learning  (3 Credits)  

Provides theoretical and computational foundations in machine learning to design and develop intelligent applications to perform object recognition, personalized recommendations, improve cybersecurity, fact-checking, forecasting and finding communities based on three classes of algorithms: supervised, unsupervised, semi-supervised and reinforcement learning. Prereq: Grade of C- or higher in the following courses: MATH 3195 (or both MATH 3191 and MATH 3200) & CSCI 3412. Restricted to Computer Science Majors and Minors. Cross-listed with CSCI 5930. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: MATH 3195 (or both MATH 3191 and MATH 3200) CSCI 3412. Restricted to Computer Science Majors and Minors.

CSCI 4931 -  Deep Learning  (3 Credits)  

Provides a foundation on deep learning; a sought-after skill in machine learning. Topics include neural network design & learning, restricted Boltzmann machine, convolution neural network, recurrent neural network, LSTMs, deep reinforcement learning, autoencoders, and evolving computation frameworks like TensorFlow, Keras. Prereq: Grade of C- or higher in MATH 3195 (or both MATH 3191 and MATH 3200) and CSCI 3412. Restricted to Computer Science Majors and Minors. Cross-listed with CSCI 5931. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prereq: Grade of C- or higher in the following courses: MATH 3195 (or both MATH 3191 and MATH 3200) CSCI 3412. Restricted to Computer Science Majors and Minors.

CSCI 4939 -  Internship  (3 Credits)  

Faculty or employer-supervised employment in industry. Enrollment is limited to students who fully completed a contract for cooperative education credit by the last day of the drop or add period. Prereq: Grade of C- or higher in CSCI 3415. Restriction: Restricted to Computer Science Majors and Minors. Repeatable. Max Hours: 9 Credits.

Grading Basis: Letter Grade

Repeatable. Max Credits: 9.

Prereq: Grade of C- or higher in CSCI 3415. Restriction: Restricted to Computer Science Majors and Minors.

CSCI 4951 -  Big Data Systems  (3 Credits)  

Presents a practical while in-depth review of the principles of a series of modern data processing systems (e.g., Hadoop, Spark, TensorFlow) designed to address the Big Data challenges. In combination, these systems enable the data to knowledge (Big) data lifecycle. Prereq: Grade of C- or higher in MATH 3195 (or MATH 3191 and MATH 3200), CSCI 3287 and CSCI 3412. Restriction: Restricted to Computer Science Majors and Minors. Cross-listed with CSCI 5951. Max Hours: 3 Credits.

Grading Basis: Letter Grade

Prerequisite: Grade of C- or higher in MATH 3195 (or both MATH 3191 and MATH 3200), CSCI 3287 and CSCI 3412. Restricted to Computer Science Majors and Minors.