You are here

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 121 - Exploration in Computer Science and Robotics. (3,0,3). Constructing and programming of a robot. Problem solving, structured design of and implementation of algorithms, testing and debugging of programs, data types, control structures and abstractions. Prereq: CMPS 120 with a grade of “C” or better, or 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, MATH 110, MATH 143, MATH 270, or MATH 272 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, 1, 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, MATH 270, or MATH 272 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 hash tables. Sorting and searching techniques on linear structures including arrays and sequential files. Fa, Sp. Prereq: CMPS 250 or CMPS 260 with a grade of “C” or better. MATH 109 and MATH 110, or MATH 143, MATH 270, or MATH 272 with a grade of “C” or better. A student will be permitted to enroll in CMPS 260 and CMPS 261 a maximum of three times in each course.

CMPS 290 - Sophomore Project. (3,0,3). Software project development exploring one or more algorithms, data structures, programming, or software design. Prereq: CMPS 150 with a “C” or better. 

CMPS 310  COMPUTERS IN SOCIETY. (3, 0, 3). ntroduction to the social, legal, and ethical issues of computing, including the professional code of ethics and ethical considerations in artificial intelligence. Topics include how software development and computer use affects society, communities, individuals, and work, at both local and global scales, in the contexts of risk, privacy, computer crime, intellectual property, and professional decision-making, considering legal and ethical principles to inform the development of computing solutions that address the needs of user communities. Students analyze scenarios that allow them to view ethical decision-making as crucial to understanding the world, computing, and their interplay. Oral presentation 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 320 - Introduction to Artificial Intelligence and Machine Learning. (3,0,3). Foundations of artificial intelligence, search, reasoning, and planning. Machine learning, supervised learning, data and feature engineering, regression, decision trees, neural networks, unsupervised learning, clustering, dimensionality reduction. Natural language processing. Ethical issues. Prereq: CMPS 340 and (STAT 325 or STAT 427G), 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 and (MATH 270 or MATH 272) both with a grade of “C” or better.

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 260 with a grade of “C” or better and MATH 270 or MATH 272 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 261 with a grade of “C” or better and MATH 270 or MATH 272 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 357 - Accelerated Software Development Using AI Tools. (3,0,3). Equip students with the knowledge and skills to effectively leverage artificial intelligence tools to enhance productivity in software development. Integration of AI in modern software engineering practices in key techniques such as prototyping, debugging, and automated testing. Analysis of impact by AI on workflows. Emphasis on selecting appropriate AI tools, evaluating their effectiveness, and understanding the balance between rapid AI-generated output and essential human oversight. Limitations of AI agents in handling large codebases and chatbot outputs. Prereq: CMPS 340 and CMPS 351, both 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 - Undergraduate Seminar. (1,0,1). Presentation of current topics in computer science. 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 261 with a grade of “C” or better.

CMPS 390 - Junior Project. (3,0,3). Software development project requiring aspects of algorithms, data structures, programming, and software design. Prerequisite(s): CMPS 261 and MATH 270 with a grade of “C” or better. Restriction(s): Completion of 60 credit hours and permission of instructor required.

CMPS 399 - Topics in Software Development. (3,0,3). Alternate subtitles will appear on student’s transcript. Prerequisite(s): CMPS 261 and (MATH 270 or MATH 272), both 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 261 and CMPS 351 and (MATH 270 or MATH 272), all 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 261 and MATH 362 both 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 261 and MATH 270 or MATH 272, both with a grade of “C” or better.

CMPS 422 - Machine Learning. (3,0,3). Problem formulation and feature engineering. Supervised and unsupervised learning tasks and their implementation and performance assessment. Challenges with model training, memory allocation, parameter search, and fine-tuning. Prerequisite(s): CMPS 340, CMPS 261, and either MATH 270 or MATH 272, all with a grade of C 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 261, CMPS 351, and either 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 with a grade of “C” or better 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 with a grade of “C” or better. Restriction(s): If prerequisite not met permission of instructor required.

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 261 and CMPS 351, both with a grade of “C” 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 261, CMPS 351 and either MATH 270 or MATH 272, all 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 261, CMPS 341, and either MATH 270 or MATH 272, all 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 261, CMPS 341, CMPS 351, and either MATH 270 or MATH 272, all 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 261 and CMPS 341; and either MATH 270 or MATH 272, all with a grade of “C” 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 261, CMPS 310, and CMPS 341; all with a minimum grade of “C”.

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 261, CMPS 341, and CMPS 351; and either MATH 270 or MATH 272, all 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 261 and CMPS 341; and either MATH 270 or MATH 272, all 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 SPECIAL PROJECTS. (3, 0, 3). Allows students to develop an understanding and working knowledge of a project-based learning environment. Software tools and time/team managements skills are utilized as well. 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 498 SPECIAL PROJECTS. (3, 0, 3). Allow students to develop an understanding and working knowledge of a project-based learning environment. Software tools and time/team management skills are utilized as well. 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). Alternate subtitles will appear on students transcripts. Prereq: CMPS 340 and CMPS 351 with a grade of “C” or better. May be repeated for credit.