Computer Science

Courses

CPS 107. Introduction to Computer Science. 3 Hours

An introduction to the field of Computer Science, covering computers and society, the internals and externals of computer hardware and software, as well as some exposure to advanced topics of artificial intelligence, computer forensics, and databases. Intended for science and engineering students.

CPS 111. Introduction to Personal Computers. 3 Hours

Emphasis on use of operating system, particularly file organization, and applications: word processor, spreadsheet, database and presentation software.

CPS 132. Computer Programming for Engineering & Science. 3 Hours

Fundamentals of computer programming including algorithms, program structure, library routines, debugging, and program verification. Calculus-based computer solutions of problems from science and engineering using C++. Corequisite(s): MTH 168.

CPS 144. Introduction to Computer Programming. 3 Hours

Fundamentals of computer programming including algorithms, program structure, library routines, debugging, and program verification. Computer solutions of problems from social sciences using a suitable compiler language such as Visual Basic.

CPS 149. Creative Media Applications. 3 Hours

Multidisciplinary, project-driven learning process courses that encourages students to develop problem solving and teamwork skills while fostering creativity and logic. The goal is not only to provide students with some “programming maturity,” but to also engage them through working in small teams on existing projects related to their discipline and interest. Projects may include creative animations and games, mobile app developments, or avatars.

CPS 150. Algorithms & Programming I. 4 Hours

Introduction to computers and programming using a high-level, structured language. Topics include problem solving, algorithms, programming constructs, data representation, stepwise refinement, and debugging.

CPS 151. Algorithms & Programming II. 4 Hours

Algorithms and Programming II covers object-oriented design and development, data abstraction, exception handling, linked lists, stacks, queues, binary trees, and recursion using a high level, structured language. Prerequisite(s): CPS 150.

CPS 242. Web Application Development. 3 Hours

Web application development using the state-of-the-art environments such as markup languages, scripting languages, dynamic web pages, server side technologies, and database access. Prerequisite(s): CPS 151.

CPS 250. Computer Organization and Architecture. 3 Hours

Machine and assembly language instructions, and writing assembly programs. Design of basic logic circuits needed in constructing a computer. Design of circuits for information encoding, arithmetic units, and transferring and storing information. Data path and control unit for a simple processor. Multiprocessing and alternative parallel systems. Prerequisite(s): CPS 151.

CPS 309. Topics in Computer Science. 1-4 Hours

Lectures or laboratory work in areas of current interest. May be taken more than once. Does not count as upper level credit for majors/minors.

CPS 310. Systems Analysis. 3 Hours

Methodologies for developing software, software development life cycles, data flow approach for system development, data dictionary, process specification, input/output design, E-R diagrams, normalization, and introduction to object-oriented analysis. Prerequisite(s): CPS 151.

CPS 312. Systems Design. 3 Hours

Software design process; developing structured design (e.g., structure charts) from data flow approach using coupling, cohesion, and other design guidelines; fine-tuning object-oriented analysis model to design using design patterns, and implementation. Prerequisite(s): CPS 310.

CPS 341. Discrete Structures. 3 Hours

Propositional logic, Boolean algebra, predicate logic, logical deductions, proof techniques, sets, combinatorics, recurrences, functions, relations, discrete structures such as graphs, digraphs, and associated algorithms. Prerequisite(s): CPS 150.

CPS 343. Comparative Languages. 3 Hours

Language design issues, formal syntax specification, data types and storage methods, activation records and procedural object oriented, functional, and logic programming paradigms. Prerequisite(s): CPS 350.

CPS 346. Operating Systems I. 3 Hours

Semaphores, conditions, monitors, and kernels. Concurrent programming, interrupts, memory, and process management. Design and implementation of multithreaded and distributed system components using concurrent languages. Prerequisite(s): CPS 250, CPS 350.

CPS 350. Data Structures & Algorithms. 3 Hours

Dynamic nonlinear data structures including trees, binary trees, search trees, balanced search trees, priority queues, and graphs, with an emphasis on their implementation, uses, and associated algorithms. Analysis of the computational complexity of algorithms related to these structures. Prerequisite(s): CPS 151.

CPS 352. Concepts and Implementation of Programming Languages. 3 Hours

Study of programming language concepts through the implementation of interpreters and assessment of the conceptual differences in the resulting languages. Concepts covered include syntax and semantics, regular and context-free grammars, parsing, binding, scope, parameter passing, lazy evaluation, types, currying, and continuations. A comparative survey of the imperative, functional, logical, and object-oriented paradigms of programming is presented. Prerequisite(s): CPS 350.

CPS 353. Numerical Methods I. 3 Hours

Study of the algorithms of numerical mathematics with emphasis on interpolation, the solution of nonlinear equations, and linear systems of equations including matrix methods; analysis of errors associated with the algorithms. Prerequisite(s): (CPS 132 or CPS 150); MTH 169.

CPS 356. Operating Systems. 3 Hours

Introduces the theoretical and practical concepts underlying an operating system's structure and operation. Topics include process and thread creation and management, scheduling, concurrent, multi-threaded programming and synchronization, deadlock, memory management, virtual memory, and computer security. Prerequisite(s): (CPS 250 or ECE 314) and CPS 350.

CPS 387. Computer System Design I. 3 Hours

Study of the elements of computer design. Design of combinatorial and sequential logic circuits using current integrated circuit devices. Discussion of encoders, decoders, registers, counters, etc. as applied to design and use of control, arithmetic, logic, and storage units. Instruction set, addressing modes and CPU design. Laboratory experiments with these devices. Prerequisite(s): CPS 250, CPS 341.

CPS 410. User Interface Design and Development. 3 Hours

Addresses the practical problems of designing interfaces for modern software as well as other interactive media. Topics include interaction framework and styles, design principles, design models, new interactive technologies, usability testing and facets of interaction. Group activities and project work is an integral part of this course. Prerequisite(s): CPS 350.

CPS 415. Software Testing and Security Analysis. 3 Hours

Detailed examination of the software testing and security analysis process. Topics include testing methodologies, code analysis techniques, and secure programing principles and practices. Prerequisite(s): CPS 350.

CPS 420. Software Engineering. 3 Hours

Provides an overview of the software engineering discipline. Topics include software processes, requirements engineering, system modeling, architectural design, software testing, dependability and security, software reuse, distributed software engineering, project planning, quality management, configuration management, and process improvement. Prerequisite(s): CPS 350.

CPS 422. Software Project Management. 3 Hours

Introduction to software project management. Topics include process models for software development, project planning techniques, estimation techniques, measuring and controlling work products and processes, managing project risk, teams and communication, and organizational issues. Prerequisite(s): CPS 310.

CPS 424. Discrete Event Simulation Techniques. 3 Hours

Design and use of simulation models; study and use of special-purpose simulation languages such as GPSS and GASP IV, SIMSCRIPT II.5. Applications. Prerequisite(s): CPS 151.

CPS 430. Database Management Systems. 3 Hours

Physical and logical organization of databases: the entity-relationship model; relational database model; the data definition and data manipulation language of a commercial database management system; integrity constraints; conceptual database design. Prerequisite(s): CPS 350.

CPS 432. Database Management Systems II. 3 Hours

Study of query execution and optimization, transaction management, concurrency control, recovery and security techniques. Advanced data models and emerging trends in database systems, like object oriented database systems, distributed database systems, the client-server architecture, multidatabase and heterogeneous systems. Other current database topics and emerging technologies will be discussed. Prerequisite(s): CPS 430.

CPS 433. Cyber Forensics. 3 Hours

Preserving, recovering, and analyzing digital evidence found in physical and virtual worlds. Topics include data and information retrieval; computer/media forensic analysis, techniques, and tools; and basic criminal law concepts. Prerequisite(s): CPS 356.

CPS 434. Big Data and Cloud Computing. 3 Hours

Focuses on technologies to make intelligent decisions for scientific and business applications. Topics include semantic web, knowledge representation languages for expressing metadata, machine learning, data visualization, data integration, and predictive models. Prerequisite(s): CPS 350.

CPS 437. System Architectures & Networking. 3 Hours

Issues and techniques used in the physical design of computer-based information systems. Basic operating systems, hardware architecture and networking prinicples. Intended for students majoring in MIS; not open to students majoring in CPS, CIS, or PCS. Prerequisite(s): MIS 380, MIS 385.

CPS 444. UNIX/Linux Programming. 3 Hours

Prepares students for developing software in the UNIX/Linux environment using the C programming language. Topics include system libraries and system calls, shells, system structures and internals, interprocess communication (pipes and signals), network programming (client-server model and sockets), pattern matching and filters, shell programming, automatic program generation, and GUI programming. Prerequisite(s): CPS 356.

CPS 450. Design and Analysis of Algorithms. 3 Hours

Introduction to order notation and algorithm analysis. Emphasis will be on learning algorithm design techniques such as divide and conquer, greedy approach, and dynamic programming through exposition of classical algorithms from domains such as sorting, string matching, and graph algorithms. Hardness of problems and introduction to the complexity classes P, NP, and NP-complete. Topics also include impact of computing techniques to the improvement or welfare of society as a whole. Prerequisite(s): CPS 341, CPS 350.

CPS 455. Computer Architecture and Design. 3 Hours

Provides a foundation for understanding and evaluating the design principles incorporated in modern computers. Topics include history and classification of computers, instruction-level, data-level, and thread-level parallelism. Prerequisite(s): CPS 250, CPS 350.

CPS 460. Computer Graphics. 3 Hours

Introduction to primitives and interactive graphics software development. Topics include transforms, clipping, modeling, rendering, texture, animation, and ray tracing. Prerequisite(s): CPS 350.

CPS 465. Interactive Media. 3 Hours

Provides an exposure to the capabilities of new digital tools to create new experiences. Topics include tools/techniques for collecting, analyzing, and visualizing 3D data; interactive audio/video using motion/light detectors; mobile interfaces; animation; smart rooms; and social networks. Prerequisite(s): CPS 350.

CPS 470. Computer Networks. 3 Hours

Computer Networks focus on Internet protocols. Topics include packet-switch and multi-access networks, routing, flow control, congestion control, quality of service, Internet protocols, wireless networks, security, and the design of network services. Prerequisite(s): CPS 350.

CPS 472. Computer and Network Security. 3 Hours

Computer and Network Security covers information protection. Topics includes techniques for security in multi-user and distributed systems, principles of secure design, cryptography, authentication, access-control, intrusion detection and viruses, firewalls, wireless security, cracking WEP keys, and VPN security. Prerequisite(s): CPS 356.

CPS 473. Reverse Code Engineering. 3 Hours

Study theories on the application of cyber power to achieve certain objectives. Topics includes cyber policy, tracing strategy, targeting, cyber intelligence, measuring effects, and legal and ethical issues. Prerequisite(s): CPS 350.

CPS 477. Honors Thesis. 3 Hours

First of two courses leading to the selection, design, investigation, and completion of an independent, original Honors Thesis project under the guidance of a faculty research advisor. Restricted to students in the University Honors Program with permission of the program director and department chairperson. Students pursuing an interdisciplinary thesis topic may register for three semester hours each in two separate disciplines in consultation with the department chairpersons. Prerequisite(s): Approval of University Honors Program.

CPS 478. Honors Thesis. 3 Hours

Second of two courses leading to the selection, design, investigation, and completion of an independent, original Honors Thesis project under the guidance of a faculty research advisor. Restricted to students in the University Honors Program with permission of the program director and department chairperson. Students pursuing an interdisciplinary thesis topic may register for three semester hours each in two separate disciplines in consultation with the department chairpersons. Prerequisite(s): Approved 477; approval of University Honors Program.

CPS 480. Artificial Intelligence. 3 Hours

Fundamentals concepts and techniques of intelligent systems. Topics includes knowledge representation, search strategies, predicate logic, and expert systems. Prerequisite(s): CPS 350.

CPS 481. Intelligent Systems and Machine Learning. 3 Hours

State-of-art techniques in building intelligent systems. Topics include soft computing, agents and multiagent systems, and machine learning. Prerequisite(s): CPS 350.

CPS 482. Automata Theory. 3 Hours

Formal languages (regular, context-free, recursive, and recursively enumerable), machine models (deterministic and non-deterministic finite automata, push down automata, Turing machines), grammars (regular, context-free, and unrestricted), interplay among these concepts, Church-Turing thesis, and undecidability. Prerequisite(s): CPS 341.

CPS 482H. Automata Theory. 3 Hours

Formal languages (regular, context-free, recursive, and recursively enumerable), machine models (deterministic and non-deterministic finite automata, push down automata, Turing machines), grammars (regular, context-free, and unrestricted), interplay among these concepts, Church-Turing thesis, and undecidability. Prerequisite(s): CPS 341.

CPS 483. Graph Algorithms. 3 Hours

Design and analysis of algorithms for problems based on graphs. Classical algorithms and efficient algorithms for restricted domains of graphs will be covered. Analysis of algorithms, complexity classes P, NP, and NP-complete, traversals, bi-connectedness, strongly-connectedness, 2-SAT, planarity testing, and algorithms for restricted classes of graphs. Prerequisite(s): CPS 341, CPS 350.

CPS 485. Evolutionary Computation. 3 Hours

The history and use of Evolutionary Computation (EC) are explored. Popular approaches to EC (genetic algorithms, genetic programming, evolution strategies, evolutionary programming) are defined and discussed. Coursework includes implementation of evolutionary techniques and review and analysis of literature in the field. Prerequisite(s): CPS 350.

CPS 490. Capstone I. 3 Hours

Examination of principles, practices, and methodology for development of large software systems using data flow and object-oriented methodologies. User interface design, software testing, and software project management. Selecting and planning a team project; this involves team formation, project selection, project planning, and proposal writing and presentation. Prerequisite(s): CPS 350.

CPS 491. Capstone II. 3 Hours

An exercise in the design, implementation, documentation, and deployment of a group project culminating in a presentation to the computer science faculty and industry representatives. Prerequisite(s): CPS 490.

CPS 496. Cooperative Education. 1-3 Hours

Computer science cooperative education work experience in an approved organization. Not open to students with credit in CPS 497. Credit does not apply to major requirements. Repeat to a maximum of three semester hours. Prerequisite(s): Twelve hours of upper-level CPS courses with a GPA of 3.0; total ninety semester hours with a GPA of 2.75; permission of the department in advance of the work.

CPS 497. Internship. 1-3 Hours

Computer science work experience in an approved organization. Not open to students with CPS 496 credit. Credit does not apply to major requirements. Repeat to a maximum of three semester hours. Prerequisite(s): Twelve semester hours of upper-level CPS courses with GPA of 3.0; total ninely semester hours and 2.75 GPA; permission of department in advance of the work.

CPS 498. Problems in Computer Science. 1-4 Hours

Individual readings and research in a specialized area. (See CPS 499.) By arrangement. May be taken more than once for additional credit. Prerequisite(s): Permission of department chairperson.

CPS 499. Special Topics in Computer Science. 1-4 Hours

Lectures or laboratory work in advanced topics from the various areas of computer science. By arrangement. May be taken more than once. Prerequisite(s): Permission of department chairperson.

CPS 501. Advanced Programming and Data Structures. 3 Hours

A bridge course for students who already have a programming background. Covers advanced data structures and programming techniques in a high level programming language.

CPS 509. Topics in Computer Science. 1-3 Hours

Lectures in special areas of interest determined by the department. May be taken more than once for additional credit when the topics or contents change. Prerequisite(s): Permission of department chairperson.

CPS 510. System Analysis. 3 Hours

Process-oriented, data-oriented, and object-oriented approaches for systems development; comparison of various systems development life cycles; DFD methodology for systems analysis using state-of-the-art CASE (Computer Aided Software Engineering) tools; logical and event analyses of DFD specifications; tools and techniques for modeling real-time systems; data modeling; introduction to object-oriented analysis methodologies. Prerequisite(s): CPS 350.

CPS 512. System Design. 3 Hours

Principles of design, introduction to software design methodologies; issues in transition from analysis to logical and physical designs; detailed discussion of structured design methodology (Yourdon, Constantine, Myers); design guidelines; transform analysis; Warnier/Orr design methodologies; designing methodologies for real-time systems; introduction to object-oriented design; CASE tools and code generators. Prerequisite(s): CPS 510.

CPS 518. Software Engineering. 3 Hours

No description available.

CPS 520. Object-Oriented Systems Development. 3 Hours

Unified Modeling Language (UML), use cases, class diagrams, sequence diagrams, collaboration diagrams, state charts, activity diagrams, component and deployment views, design patterns, and implementation of various UML models through team projects. Prerequisite(s): CPS 350, CPS 510.

CPS 522. Software Project Management. 3 Hours

Cost and effort estimation models for software projects, planning techniques, productivity metrics, risk management, maintenance, reuse, quality assurance, configuration management, Capability Maturity Models (CMM and P-CMM), and ISO 9001. Prerequisite(s): CPS 510 or CPS 518 or CPS 520.

CPS 530. Algorith Design. 3 Hours

The design and analysis of computer algorithms, including order notation, sorting, dynamic programming, graph algorithms, string matching, matrix multiplication, NP-completeness. Prerequisite(s): CPS 350.

CPS 534. Distributed Computing with Big Data. 3 Hours

This course introduces students to distributed computation frameworks (such as MapReduce) associated with massive datasets. Topics focus on parallel/distributed algorithms, data mining and machine learning algorithms for processing and analyzing very large amounts of data, and data visualization. Prerequisite(s): CPS 350.

CPS 536. Operating Systems I. 3 Hours

Models and algorithms pertinent to the design of computer operating systems; concurrent processes including synchronization, communication and deadlock problems, process and device scheduling policies, design of file systems, reliability and protection. Prerequisite(s): CPS 350.

CPS 542. Database Management Systems. 3 Hours

Physical and logical organization of data files; hierarchical, network, and relational database models; data definition language and data manipulation language of a commercial database management system; query languages. Prerequisite(s): CPS 350.

CPS 543. Advanced Concepts of Programming Languages. 3 Hours

This course involves the study of advanced programming language concepts and paradigms. Possible topics, covered at the discretion of the instructor, include metalinguistic abstraction and macros, fixed-point combinators, reflection and meta-object protocols, and generative and aspect-oriented programming with emphasis on applying these concepts in practical application domains. Prerequisite(s): CPS 352.

CPS 544. Systems Programming. 3 Hours

Analysis of compilers and their construction; programming techniques discussed in the current literature; advanced computer applications in both mathematical and nonnumeric areas. Prerequisite(s): CPS 350.

CPS 552. Discrete Event Simulation Techniques. 3 Hours

Simulation models; random number generation testing, special purpose simulation languages, statistical analysis of output; regenerative models; trace-driven models. Emphasis on models related to computer operating system design and performance evaluation. Prerequisite(s): CPS 350; statistics.

CPS 560. Computer Graphics. 3 Hours

Types of graphic hardware and their characteristics. Overview of software and techniques used in computer graphics. Two- and three-dimensional graphics displays. Prerequisite(s): CPS 350; programming ability in a procedure-oriented language.

CPS 561. Virtual Reality. 3 Hours

This course offers a broad introduction of virtual reality from fundamental theories to software/hardware technologies involved with the current state of the art in VR. Topics include 3D interaction techniques on virtual immersive systems, human pose/face/hands tracking, graphics and 3D animation collaborative networked virtual environment, augmented reality systems, and security. Some unforeseen security issues in many emerging VR systems are also addressed. Prerequisite(s): CPS 350.

CPS 562. Database Management Systems II. 3 Hours

Study of query execution and optimization, transaction management, concurrency control, recovery and security techniques. Advanced data models and emerging trends in database systems, like object-oriented database systems, distributed database systems, client-server architecture, multidatabase and heterogeneous systems. Other current database topics and emerging technologies will be discussed. Prerequisite(s): CPS 542.

CPS 566. Image Processing. 3 Hours

This course introduces students to a wide range of topics on digital image processing techniques. Topics includes image enhancement, 2D linear and nonlinear filtering, image compression and restoration, pattern recognition, big visual data analysis, and stochastic modeling on images. Prerequisite(s): CPS 350.

CPS 570. Data Communications. 3 Hours

The study of networks of interacting computers. The analysis of distributed processing and distributed databases. Prerequisite(s): CPS 350.

CPS 572. Computer Networking. 3 Hours

A unified view of the broad field of local area and long haul networks. A survey of the state of the art. Topics covered include networking theory, design approaches, standards, topologies and protocols. Prerequisite(s): CPS 536, CPS 570.

CPS 577. Computer System Design I. 3 Hours

Introduction to design and analysis of combinational and sequential circuits of MSI devices to design arithmetic and other computer functions. Analysis of a specific microcomputer architecture including usage of its machine and assembler language. Interfacing of various components with computers. Prerequisite(s): CPS 250.

CPS 580. Artificial Intelligence. 3 Hours

Presentation of theoretical concepts for artificial intelligence in the areas of knowledge representation and search techniques. These are examined in the context of applications for expert systems, semantic networks, and planning problems. Issues concerning functional programming and logic programming are also presented. Prerequisite(s): CPS 350.

CPS 581. Advanced Artificial Intelligence. 3 Hours

This course continues the studies pursued in Artificial Intelligence CPS 580. It delves more deeply into certain areas such as multiple agent systems and induction, and introduces new areas, such as neural networks and planning, not covered in CPS 580. As in CPS 580, each student shall complete a final project investigating some area of research in Artificial Intelligence. The project will encompass a literature search, paper, presentation, and implementation.

CPS 582. Automata Theory. 3 Hours

Finite automata, sequential machines. Turing machines, computability, existence of self-reproducing machines. Prerequisite(s): CPS 528.

CPS 583. Graph Algorithms. 3 Hours

Design and analysis of algorithms for problems based on graphs. Classical algorithms and efficient algorithms for restricted domains of graphs are covered. Analysis of algorithms, complexity classes P, NP, and NP-complete, traversals, bi-connectedness, strongly-connectedness, 2-SAT, planarity testing, and algorithms for restricted classes of graphs. Prerequisite(s): CPS 501.

CPS 591. Special Research Problems. 1-3 Hours

Individual readings and research in a specialized area. May be taken for at most six semester hours. Prerequisite(s): Permission of department chairperson.

CPS 592. Special Topics. 1-3 Hours

Lectures and/or laboratory experience in some areas determined by the department. Prerequisite(s): Permission of department chairperson.

CPS 595. Software Engineering Project I. 3 Hours

First of a two-course project sequence. Students, either individually or in teams, must propose a project, conduct background research, justify the adequacy of the work for a graduate project, complete analysis and design using appropriate methodologies and CASE tools, and write preliminary coding. Students are expected to write code and minimize the usage of visual or other development environments. A minimum of three class presentations is expected for project proposal, progress, and final analysis/design. Prerequisite(s): (CPS 510, CPS 530); permission of department chairperson.

CPS 596. Software Project II. 3 Hours

Continuation of CPS 595. Students are required to implement the analysis and design of their projects and make periodic presentations. Special attention needs to be given to the overall architecture of the system, usability, testing, and documentation. A minimum of two class presentations is expected for design and implementation. Prerequisite(s): CPS 595.

CPS 599. Thesis. 3-6 Hours

Thesis.