Courses
Undergraduate Courses for Computer Science Majors
Visit the online academic catalog to view all computer science courses.
CMPS 120 - BASIC CONCEPTS OF COMPUTER SCIENCE AND ROBOTICS. (3,0,3). Concepts of computing and the interaction of computers with the physical world. Construction and operation of a robot by integrating electronics, mathematics, physics and computer programming. Prereq: Permission of instructor
CMPS 150 INTRODUCTION TO COMPUTER SCIENCE. (3, 1 , 3). Problem solving, structured design of algorithms, implementation of algorithms, and testing and debugging of programs. Data types, control structures, and abstractions. The laboratory component focuses on algorithm design and implementation. Fa, Sp. Prereq: MATH 109 or MATH 110 or MATH 143 with a grade of “C” or better
CMPS 207 -FUNDAMENTALS IN COMPUTER PROGRAMMING (3, 2, 2) Object-oriented programming.Prereq: CMPS 150 with a grade of “C” or better. Restriction: Not open to Computer Science majors or to any student with earned credit for CMPS 260
CMPS 250 - HONORS INTRODUCTION TO DATA STRUCTURES AND SOFTWARE DESIGN. (4, 1, 4). Accelerated coverage of CMPS 150 and CMPS 260. Students passing CMPS 250 with a “C” or better will also receive credit for CMPS 150. Prereq: MATH 109 and MATH 110 or MATH 143 with a grade of “C” or better. Restriction: Permission of the instructor required
CMPS 260 INTRODUCTION TO DATA STRUCTURES AND SOFTWARE DESIGN. (3, 0, 3). Integrated software engineering principles, fundamental data structures and algorithm design and development. Requirements, specifications, design and testing. Fa, Sp. Prereq: CMPS 121 or CMPS 150 with a grade of “C” or better. MATH 109 and MATH 110, or MATH 143 with a grade of “C” or better, or a MATH ACT score of 28 or higher.
CMPS 261 ADVANCED DATA STRUCTURES AND SOFTWARE ENGINEERING. (3, 0, 3). Programming methods, software testing, and algorithm analysis. Construction, traversal, and modification of trees, heaps, and has tables. Sorting and searching techniques on linear structures including arrays and sequential files. Prereq: CMPS 250 or CMPS 260 with a grade of “C” or better. MATH 109 and MATH 110, or MATH 143 with a grade of “C” or better.
CMPS 310 COMPUTERS IN SOCIETY. (3, 0, 3). Introduction to the social, legal, and ethical issues of computing, including the professional code of ethics. Topics include how computer use affects society and work in the context of risks, privacy and intrusion, computer crime, intellectual property and copyright, and professional decision-making. Students analyze scenarios that allow them to view ethical decision-making as a crucial part of understanding the world or computing. Oral and written reports are required. Fa, Sp. Prereq: CMPS 260 with a minimum grade of C or consent of the instructor.
CMPS 315 INTRODUCTION TO CYBER SECURITY. (3, 0, 3). Principles of Cyber Security; Cyber Hygiene; Secure Communication; Authentication and Access Control; Vulnerability and Exploits; Application Security. Prereq: CMPS 261 and MATH 270, both with a grade of C or better.
CMPS 327 INTRODUCTION TO VIDEO GAME DESIGN AND DEVELOPMENT. (3, 0, 3). Design, implementation, and testing of video games. Incremental game engine development, graphics, user input, animation, sound, music and artificial intelligence. Fa. Prereq: CMPS 261 with a minimum grade of C.
CMPS 340 DESIGN AND ANALYSIS OF ALGORITHMS (3, 0, 3) Algorithm analysis and asymptotic notation. Advanced data structures analysis. Design and analysis of; divide-and-conquer algorithms, dynamic programming, greedy algorithms, and amortized analysis; multithreaded algorithms, linear programming, number-theoretic algorithms, computational geometry and approximation algorithms. Prereq: CMPS 261 with a minimum grade of C.
CMPS 341 FOUNDATIONS OF COMPUTER SCIENCE. (3, 0, 3). Formal logic and its applications. Proof of correctness. Sets and combinatorics. Induction, recursion, and recurrence equations. Relations, functions, and graphs: Shortest path and minimal spanning tree, planarity, Eulerian paths, Hamiltonian cycles. Algebraic structures, finite-state machines, turing machines, and computational notions. Fa, Sp. Prereq: CMPS 261 and MATH 270 both with a grade of “C” or better
CMPS 351 COMPUTER ORGANIZATION AND ASSEMBLY LANGUAGE PROGRAMMING. (3, 0, 3). Overview of computer organization. MIPS architecture, assembly and machine language, data representation, assembly and linking process, C programming and interfacing with assembly code. Fa, Sp. Prereq: CMPS 260 and EECE 140 both with a grade of “C” or better
CMPS 352 - SCIENTIFIC COMPUTING. (3, 0, 3) Software tools and algorithmic methods for solving large scale numerical problems in applied science, engineering and real-life applications. Floating point and matrix computations, numerical integration and differentiation. Numerical methods to compute graphics, visualization and video game development. Prereq: CMPS 341 with a grade of “C” or better
CMPS 353 - PRINCIPLES OF FILE ORGANIZATION AND PROCESSING. (3, 0, 3). File structures - their manipulation and management, application to commercial systems, techniques for data storage and retrieval. Prereq: CMPS 260 with a grade of “C” or better
CMPS 358 PROGRAMMING IN .NET/C#. (3, 0, 3). C# syntax and semantics with emphasis on object oriented programming, threads, I/O, collections, use of Visual Studio. Creation of GUI applications, network applications, database connectivity and web applications. Prereq: CMPS 261 with a grade of “C” or better, or permission of instructor
CMPS 359 TOPICS IN SOFTWARE DEVELOPMENT. (1-3, 0, 1-3). May be repeated for credit when topics vary. Alternate subtitles will appear on student’s transcript. Prereq: CMPS 261 with a grade of “C” or better, or permission of instructor required
CMPS 360 PROGRAMMING IN JAVA. (3, 0, 3). Java syntax and semantics, use of interfaces, packages, threads, I/O, and collections. Creation of GUI applications, server pages, servlets, Jars, remote methods, and database communication. Sp. Prereq: CMPS 250 or CMPS 260, with a grade of “C” or better
CMPS 405 - FUNDAMENTAL PRINCIPLES OF COMPUTER PROGRAMMING. (3, 0, 3). Program design and data abstraction; iteration and recursion. Fundamental data structures and their operations. Sorting and searching. A matriculation course for graduate students in computer science and engineering lacking computer science background. No credit toward any computer science or computer engineering degree.Prereq: CMPS 150. Coreq: CMPS 406
CMPS 406 - FUNDAMENTALS OF COMPUTING THEORY. (3, 0, 3) Review of mathematical background. Algorithmic problems and their solutions. Methodology for algorithmic problem solving, abstraction and design; case study. Basics of program correctness and complexity analysis. A matriculation course for graduate students in computer science and engineering lacking computer science background. No credit toward any computer science or computer engineering degree.Prereq: CMPS 150 and CMPS 341. Coreq: CMPS 405
CMPS 411(G) SYSTEM SIMULATION. (3, 0, 3). Construction and verification of simulation models. Sampling techniques used in simulation, pseudo random number generators and their tests. Prereq: CMPS 341, CMPS 351 and MATH 301 with a grade of “C” or better
CMPS 413 COMPUTER COMMUNICATION AND NETWORKS. (3, 0, 3). Design and implementation of computer networks and applications. Network layers, Internet protocol stack, network architectures. Network programming interfaces, including sockets. Prereq: CMPS 341 and CMPS 351 both with a grade of “C” or better.
CMPS 415(G) COMPUTER GRAPHICS. (3, 0, 3). Algorithms, analysis, and software architecture for graphical information systems, visualization, realistic rendering, and interactive user interfaces. Project on extensive image representation, transformation, and rendering. Fa. Prereq: CMPS 341 with a grade of “C” or better, or CMPS 405 and CMPS 406 both with a grade of “B” or better and MATH 362 with a grade of “C” or better
CMPS 420(G) ARTIFICIAL INTELLIGENCE. (3, 0, 3). Theories and techniques. The background and foundations of AI, intelligent agent-based representation, problem solving and search algorithms, game playing, introduction to LISP, knowledge representation and knowledge-based systems. Introduction to other sub-areas such as: natural language processing, connectionist models and evolutionary algorithms. Fa. Prereq: CMPS 341 with a grade of “C” or better, or CMPS 405 with a grade of “B” or better
CMPS 425(G) INTRODUCTION TO ROBOTICS. (3, 0, 3). Robotic manipulation systems: geometric transformations in 3-D space, forward and inverse manipulator kinematics and dynamics, trajectory generation, open-loop kinematics based manipulation control, robotic languages, and AI applications to robotics. Prereq: CMPS 341, CMPS 351, and MATH 302 or MATH 462G, all with a grade of “C” or better
CMPS 426(G) GAME ENGINE ALGORITHMS AND ARCHITECTURE. (3, 0, 3). Algorithms and architectural design principles involved in the development of a game and game engine. Advanced data structures and algorithms for pathfinding and collision detection, physics-based methods for modeling game dynamics, 3D transformations, data-driven design, quality issues for games and game engines, and methods of testing. Prereq: CMPS 327 or permission of instructor required
CMPS 427(G) VIDEO GAME DESIGN AND DEVELOPMENT. (3, 0, 3). Design, implementation, and testing of video games. Game engine development, graphics, user input, animation, sound, music and artificial intelligence, with an emphasis on 3D graphics. Sp. Prereq: CMPS 327 or permission of instructor.
CMPS 430(G) COMPUTER ARCHITECTURE. (3, 0, 3). Hierarchical multilevel structure of computer systems; instruction set; microprogrammed and hardwired control; memory; basics of pipelines and multiprocessors; performance evaluations; I/O organization; buses and channels; computer arithmetic. Fa, Sp. Prereq: CMPS 351 with a grade of “C” or better, or CMPS 405 and CMPS 406 both with a grade of “B” or better
CMPS 432(G) PARALLEL AND DISTRIBUTED COMPUTING. (3, 0, 3). Architecture and system models of networked computing components that coordinate through message passing. Many-core and many-task methods; GPU-based, edge, and cloud computing; programming systems and models including MPI, web services, and map reduce; virtualization techniques; cloud computing security. Prereq: CMPS 341 and CMPS 430G both with a grade of “C” or better.
CMPS 440(G) THEORY OF COMPUTATION. (3, 0, 3). Abstract basis of machines and programming: automata, context free grammars and Turing machines; equivalence and non-equivalence of classes of devices; Chomsky hierarchy; incomputability; computational complexity. Sp. Prereq: CMPS 341 with a grade of “C” or better
CMPS 450(G) PROGRAMMING LANGUAGES. (3, 0, 3). Formal, functional, and practical issues of design and implementation of imperative, functional, and declarative languages; denotational semantics; data types and abstraction, control abstraction, separate compilation units, and concurrency. Fa. Prereq: CMPS 341 and CMPS 351 both with a grade of “C” or better
CMPS 451(G) COMPILER CONSTRUCTION. (3, 0, 3). Introduction to compilers and language translation. Aspects of lexical, syntactic and semantic analysis including language theory and implementation. Finite state machines, regular expressions, top-down, bottom-up parsing techniques. Code generation and optimization, subroutine calls, symbol table management, LL and LR parser generators. Sp. Prereq: CMPS 450G with a grade of “C” or better
CMPS 452(G) HUMAN COMPUTER INTERFACE DESIGN. (3, 0, 3). Human factors of interactive software and styles, design principles and considerations, development methods and tools, interface quality, and evaluation methods. Prereq: CMPS 341 with a grade of “C” or better, or CMPS 405 and CMPS 406 both with a grade of “B” or better
CMPS 453(G) INTRODUCTION TO SOFTWARE METHODOLOGY. (3, 0, 3). Software engineering ethics, software processes, project planning, requirement engineering, agile methods, system modeling, architectural design, testing, security, resilience, distributed software engineering, consideration of tradeoffs, and impact of software solutions. Prereq: CMPS 341 and CMPS 310 with a grade of “C” or better.
CMPS 455(G) OPERATING SYSTEMS. (3, 0, 3). Process and thread management, concurrency, deadlock, CPU scheduling; memory management, virtual memory, file systems; virtualization, and protection and security. Prereq: CMPS 341 and CMPS 351 both with a grade of “C” or better.
CMPS 460(G) DATABASE MANAGEMENT SYSTEMS. (3, 0, 3). Concepts, architecture, data models, design and implementation using entity-relationship model (or class diagram). Declaration and manipulation of data using SQL. Advanced SQL, including stored procedures, triggers, and transactions. Embedded SQL and web-based database application development, normalization, optimization, and database security. Prereq: CMPS 341 with a grade of “C” or better.
CMPS 490 SENIOR PROJECT. (3, 0, 3). Major software development project requiring integration and application of knowledge and skills acquired in algorithms, data structures, programming, and software design. Prereq: CMPS 340 and CMPS 341, both with C or better, and student must have completed a minimum of 90 credits. Restriction: Permission of instructor required.
CMPS 497,498 SPECIAL PROJECTS. (3, 0, 3). Prereq: GPA of 2.50 or better, and CMPS 341 and CMPS 351 each with a grade of “C” or better. Restriction: Permission of instructor required
CMPS 499 SPECIAL TOPICS IN COMPUTER SCIENCE. (3, 0, 3). May be repeated for credit. Alternate subtitles will appear on students transcripts. Prereq: CMPS 341 and CMPS 351 with a grade of “C” or better