CS - Computer Science

For a computer science course to be used as a prerequisite, it must have been passed with a C- or better.

Courses numbered 100 to 299 = lower-division; 300 to 499 = upper-division; 500 to 799 = undergraduate/graduate.

CS 194.  Introduction to Digital Design   (4).

3 Classroom hours; 2 Lab hours. Introduces digital design concepts. Includes number systems, Boolean algebra, Karnaugh maps, combinational circuit design, adders, multiplexers, decoders, sequential circuit design, state diagram, flip flops, sequence detectors and test different combinational and sequential circuits. Uses CAD tools for circuit simulation. Prerequisite: MATH 111 or equivalent. Corequisite: CS 194L.

CS 210.  Introduction to Computer Science   (3).

General education math and natural sciences introductory course. Broad introduction to the discipline of computer science. Covers algorithms, computer hardware, operating systems, introduces high-level language programming, databases, artificial intelligence and other applications, and social issues. Prerequisite: MATH 111.

CS 211.  Introduction to Programming   (4).

3 Classroom hours; 2 Lab hours. First course in computer programming in a high-level language. Emphasizes analyzing problems, designing solutions and expressing them in the form of a well-structured program using the procedural aspects of C++. Prerequisite: MATH 111. Corequisite: CS 211L.

CS 238.  Assembly Language Programming   (3).

Introduces basic concepts of computer organization and operation. Studies machine and assembly language programming concepts that illustrate basic principles and techniques. Laboratory exercises given for experience using personal computers. Prerequisite: CS 211.

CS 281I.  Noncredit Internship   (0).

Complements and enhances the student's academic program by providing an opportunity to apply and acquire knowledge in a workplace environment as an intern. Prerequisite: departmental consent.

CS 311.  Object-Oriented Programming   (4).

3 Classroom hours. 2 Lab hours. Concepts of object-oriented programming. Covers data abstractions, classes and objects, methods, inheritance, polymorphism, dynamically-bound method calls and data encapsulation. Includes programming assignments in C++. Prerequisite: CS 211. Corequisite: CS 311L.

CS 321.  Discrete Structures I   (3).

Cross-listed as MATH 321. Provides a mathematical foundation essential to the entire computer science curriculum. Includes propositional and predicate logic, induction, recursion and counting techniques. Prerequisite: MATH 242 or equivalent with a grade of 2.000 or better.

CS 322.  Discrete Structures II   (3).

Cross-listed as MATH 322. Continuation of Discrete Structures I. Includes relations, graphs, trees, Boolean algebra and automata. Prerequisites: CS 321 or MATH 321.

CS 338.  FPGA-Based System Design   (4).

3 Classroom hours; 2 Lab hours. Introduces digital design concepts using field programmable gate arrays (FPGAs). Includes programmable logic devices, FPGA architecture, interconnect, digital design challenges, digital design process, and integrated circuit fabrication process. Presents digital design flow using FPGAs, and other technologies associated with field programmable gate arrays. Introduces the concept of Verilog programming. Uses CAD tool for circuit simulation. Prerequisites: CS 194 and CS 211. Corequisite: CS 338L.

CS 350.  Computer Science Workshop   (1-5).

Short-term courses with special computer science emphases. Repeatable for credit. No credit toward the major or minor in computer science. Prerequisite: departmental consent.

CS 394.  Introduction to Computer Architecture   (3).

Introduces multilevel approach to computer systems, with an emphasis on micro architecture and instruction set architecture levels. Also introduces techniques to improve performance such as cache memory and instruction level parallelism. Prerequisites: CS 194, 211.

CS 400.  Data Structures   (4).

3 Classroom hours; 2 Lab hours. Introduces basic data structures and covers their implementations using classes in C++. Includes lists, stacks, queues, binary trees and hash tables. Prerequisite: CS 311 with a C- grade or better.

CS 410.  Programming Paradigms   (3).

Overview of different programming paradigms, including their philosophies, uses and relative advantages/disadvantages. Covers the procedural/imperative, functional, logic and object-oriented paradigms. Includes programming assignments in the functional and logic paradigms. Prerequisite: CS 311.

CS 444.  Linux Essentials   (3).

Fundamentals of the Unix/Linux operating system. Topics include Linux file systems, essential commands, best security practices, and introduces shell programming. Prerequisite: CS 211.

CS 460.  Algorithm Design Methodologies   (3).

Advanced course on problem modeling and techniques for designing algorithms for real world problems. Projects emphasize program design and development. Prerequisite: CS 400.

CS 464.  Computer Networks   (3).

First course on computer networking. Introduces OSI layers, direct link networks, packet switching, routing, end-to-end protocols and network applications. Prerequisites: IME 254, CS 311.

CS 480.  Introduction to Software Engineering   (3).

Introduces the processes, methods and tools used in software development and maintenance. Topics include software development life cycle and processes, configuration management, requirements gathering, OOA/D with UML, cohesion and coupling, and unit testing. Prerequisite: CS 311.

CS 481.  Cooperative Education   (1-3).

Provides a field placement that integrates theory with a planned and supervised professional experience designed to complement and enhance the student's academic program. Individualized programs must be formulated in consultation with, and approved by, appropriate faculty sponsors. Repeatable for credit. Prerequisite: departmental consent.

CS 481I.  Noncredit Internship   (0).

Complements and enhances the student's academic program by providing an opportunity to apply and acquire knowledge in a workplace environment as an intern. Prerequisite: departmental consent.

CS 481N.  Internship   (1-3).

Complements and enhances the student's academic program by providing an opportunity to apply and acquire knowledge in a workplace environment as an intern. Prerequisite: departmental consent.

CS 497.  Special Topics   (1-3).

1-3 Classroom hours; 0-2 Lab hours. Special topics of current interest in computer science. Prerequisite: departmental consent.

CS 498.  Individual Projects   (1-3).

Repeatable for a total of 6 credit hours. Prerequisite: departmental consent.

CS 510.  Programming Language Concepts   (3).

Theoretical concepts in the design and use of programming languages. Formal syntax, including Backus Normal Form (BNF), Extended Backus-Naur Form (EBNF), and syntax diagrams. Semantics, including declaration, allocation and evaluation, symbol table and runtime environment; data types and type checking, procedure activation and parameter passing, modules and abstract data types. Prerequisites: CS 311, MATH 322.

CS 540.  Operating Systems   (3).

Fundamental principles of modern operating systems. CPU management including processes, threads, scheduling, synchronization, resource allocation and deadlocks. Memory management including paging and virtual memory. Storage management and file systems. Prerequisites: CS 238, 311.

CS 560.  Design and Analysis of Algorithms   (3).

Design of various algorithms including several sorting algorithms. Analysis of their space and time complexities. Data structures include heaps, hash tables and binary search trees. Prerequisites: CS 322, 400; STAT 460 or IME 254.

CS 594.  Microprocessor-Based System Design   (4).

3 Classroom hours; 2 Lab hours. Presents knowledge and skills required to design and program microprocessor-based systems. Introduces vendor-supplied special-purpose chips such as interrupt controllers and programmable input/output devices. Laboratory activities give hands-on experience. Prerequisites: CS 238, 394. Corequisite: CS 594L.

CS 665.  Introduction to Database Systems   (3).

Fundamental aspects of relational database systems, conceptual database design and entity-relationship modeling; the relational data model and its foundations, relational languages and SQL, functional dependencies and logical database design; views, constraints and triggers. Course includes a group project involving the design and implementation of a relational database and embedded SQL programming. Prerequisites: CS 311, MATH 322.

CS 697.  Selected Topics   (1-3).

1-3 Classroom hours; 0-2 Lab hours. Selected topics of current interest. Repeatable for credit with departmental consent. Prerequisite: departmental consent.

CS 697AG.  Introduction to Intelligent Robotics   (3).

The study of intelligent robotics allows robots to gather information from surrounding environments and take actions autonomously. Course introduces the fundamental principles and methods of manipulation, navigation and perception for intelligent robotics. Topics covered include geometry transformations, kinematics, dynamics, localization, navigation, mapping, motion planning, intelligent processing, smart sensing, decision making, and robotic intelligence. Explores the robot concepts and algorithms, such as dexterous manipulation, simultaneous localization and mapping (SLAM), and autonomy, while working with Nao humanoid robots and Sawyer collaborative robots. Prerequisites: CS 300, MATH 511, IME 254.

CS 697AN.  Hardware-Based Computer Security   (3).

Intended for seniors and graduate students who want to study and explore the role of hardware in improving computer security. Topics covered may include (1) elements of computer security, (2) secure coprocessor, (3) secure bootstrap loading, (4) secure memory management, (5) hardware-based authentication, (6) hardware-based virus detection, (7) hardware as a cybersecurity solution, (8) security engineering, (9) managing the development of secure systems, and (10) system evaluation and assurance. Prerequisites: CS 394 and a desire to learn more about both computer architecture and security.

CS 697AP.  Applied Parallel Computing   (3).

This course is to teach how to program parallel computers to efficiently analyze challenging problems with enormous datasets. Two distinct approaches will be introduced which can be used to solve problems in all manner of domains including data analytics and machine learning. The first approach to be studied will be embarrassingly parallel in nature while the second approach will leverage fine-grain parallelism. Prerequisites: CS 394 or Instructor’s consent.

CS 715.  Compiler Construction   (3).

First compiler course for students with a good background in programming languages and sufficient programming experience. Covers compiler design, lexical analysis, parsing techniques, symbol tables, scope analysis, type checking and conversion; run-time organization, code generation and optimization. Project-oriented course involves implementation of a full compiler for a simplified but nontrivial procedural language. Prerequisites: CS 238, 510.

CS 720.  Theoretical Foundations of Computer Science   (3).

Provides an advanced level introduction to the theoretical bases of computer science. Computer science theory includes the various models of finite state machines, both deterministic and nondeterministic, and concepts of decidability, computability and formal language theory. Prerequisite: CS 322.

CS 721.  Advanced Algorithms and Analysis   (3).

Topics include height-balanced trees, graph algorithms, greedy algorithms, dynamic programming, hard problems and approximation algorithms. Prerequisite: CS 560.

CS 731.  Mathematical Foundations for Computer Networking   (3).

Introductory class on applying various mathematical tools to the field of computer networks and related areas. Divided into three phases: phase one covers the fundamentals of probability, statistics and linear algebra required for understanding the core topics to follow. Phase two covers the core topics of optimization and queuing theory. Phase three briefly covers the advanced topics of game theory and information theory. The depth of coverage is sufficient to allow students to read and understand research papers in computer networking and related areas that use these standard techniques. Ideas are taught through intuition, mathematically correct formalization and detailed numerical examples. Prerequisite: MATH 243. Corequisite: CS 464.

CS 736.  Data Communication Networks   (3).

Presents a quantitative performance evaluation of telecommunication networks and systems. Includes fundamental digital communications system review; packet communications, queuing theory, OSI, s.25 and SNA layered architectures, stop-and-wait protocol, go-back-N protocol, and high-level data link layer; network layer flow and congestion control, routing, polling and random access, local area networks (LAN); integrated services digital networks (ISDN), and broadband networks. Prerequisite: CS 464.

CS 737.  Wireless Networking   (3).

Covers topics ranging from physical layer to application layer in the wireless and mobile networking fields. Explores physical layer issues of wireless communications, wireless cellular telephony, ad-hoc networks, mobile IP and multicast, wireless LAN (IEEE 802.11), security, Bluetooth and WAP, etc. Imparts general knowledge about wireless communication technologies and ongoing research activities. Prerequisite: CS 736.

CS 738.  Embedded Systems Programming   (3).

Studies the requirements and design of embedded software systems. Application of the C programming language in implementing embedded systems emphasizing real-time operating systems, interfacing to assembly and high-level languages, control of external devices, task control and interrupt processing. Prerequisite: CS 594.

CS 750.  Workshop in Computer Science   (1-5).

Short-term courses with special focus on introducing computer science concepts. Repeatable for credit. Prerequisite: departmental consent.

CS 764.  Routing and Switching I   (4).

3 Classroom hours; 2 Lab hours. Introductory course which studies different hardware technologies, like Ethernet and token ring. Discusses VLSM. Introduces different routing protocols. Includes hands-on experience in the CS department's routing and switching lab. Prerequisite: CS 464 or 736.

CS 766.  Information Assurance and Security   (3).

Provides basic concepts in information assurance and security including encryption, digital certificates, security in networks, operating systems and databases. Topics in intrusion detection, legal and ethical issues in security administration are also discussed. Prerequisite: CS 464 or 736 or 764.

CS 767.  Foundations of Network Security   (3).

Presents fundamental concepts in cryptography and network security, and discusses applications and protocols for providing confidentiality, authentication, integrity, and availability in networking services and systems. Includes review of symmetric-key cryptographic schemes such as DES and AES, public-key cryptographic schemes such as RSA and Diffie-Hellman key exchange protocol, cryptographic hash functions such as SHA, message authentication codes such as HMAX digital signature schemes such as El-Gamal and DSS, kerberos and user authentication protocols, transport layer security and TLS, IP layer security and IPSec, and wireless security principles. CS 766 is highly preferred, but not required. Prerequisite: CS 464 or 736.

CS 771.  Artificial Intelligence   (3).

Introduces some of the fundamental concepts and techniques underlying artificial intelligence. Topics covered include state spaces, heuristic search, game playing, knowledge representation, and resolution in propositional and first-order predicate logic. Prerequisite: CS 560.

CS 780.  Advanced Software Engineering   (3).

Discusses advanced topics in software development, maintenance and evolution. Topics include software design patterns, architecture and architectural styles, frameworks, refactorings, and static and dynamic analyses. Includes a group project. Prerequisite: CS 480.

CS 781.  Cooperative Education   (1-3).

Practical experience in a professional environment to complement and enhance the student's academic program. For master's level CS students. Repeatable for credit, but may not be used to satisfy degree requirements. Prerequisites: departmental consent and graduate GPA of 3.000 or above.

CS 794.  Multicore Architectures and Programming   (3).

3 Classroom hours. Introduces state-of-the-art concepts and techniques to design and program modern computer systems. Particular attention is given to the following areas: multicore architecture, parallel programming and advanced research. Labs give hands-on experience. Prerequisites: CS 211, 394.

CS 797.  Special Topics in Computer Science   (1-4).

New or special courses presented on sufficient demand. Repeatable for credit. Prerequisite: departmental consent.

CS 798.  Individual Projects   (1-3).

Allows beginning graduate students and mature undergraduate students to pursue individual projects of current interest in computer science. Repeatable for credit with advisor approval. Prerequisite: departmental consent.