Computer Science (CS)

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 credit hours

3 Classroom hours; 2 Lab hours. An introduction to 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.

CS 210.  Introduction to Computer Science   3 credit hours

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

CS 211.  Introduction to Programming   4 credit hours

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.

CS 238.  Assembly Language Programming   3 credit hours

An introduction to 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.  Non-Credit Internship   0 credit hours

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 300.  Data Structures   4 credit hours

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 211 with a C- grade or better.

CS 300L.  Data Structures Lab I   0 credit hours

General education advanced further study course.

CS 321.  Discrete Structures I   3 credit hours

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 with a grade of 2.000 or better.

CS 322.  Discrete Structures II   3 credit hours

A continuation of CS 321. Includes relations, graphs, trees, Boolean algebra and automata. Prerequisite: CS 321.

CS 350.  Computer Science Workshop   1-5 credit hours

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 credit hours

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 410.  Programming Paradigms   3 credit hours

An 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 300.

CS 411.  Object-Oriented Programming   3 credit hours

Concepts of object-oriented programming. Covers data abstraction, classes and objects, methods, inheritance, polymorphism, dynamically-bound method calls, and data encapsulation. Includes programming assignments in C++. Prerequisite: CS 300.

CS 420.  Automata and Formal Languages   3 credit hours

Introduces theory of formal languages. Includes finite automata and regular expressions/languages; push-down automata and context-free grammars/languages; Turing machines. Prerequisite: CS 322 or MATH 322.

CS 444.  Introduction to Unix   3 credit hours

Learn the fundamentals of the Unix operating system. Topics include the Unix file system, essential commands and utilities of Unix, and shell programming. Prerequisite: any high-level programming language.

CS 460.  Algorithm Design Methodologies   3 credit hours

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

CS 464.  Computer Networks   3 credit hours

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 300.

CS 465.  Oracle Development Environment   3 credit hours

Oracle is the most widely used database management system in the world. Course covers basic relational database concepts, the SQL query language, PL/SQL; object creation, including indexes, tables, triggers and stored procedures; Oracle Forms, SQL Loader in the transition of legacy systems, and web-enabled applications. Students work with real-life projects. Prerequisite: CS 211.

CS 481.  Cooperative Education in Computer Science   1-3 credit hours

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. Graded Cr/NCr. Prerequisite: departmental consent.

CS 481A.  Cooperative Education   1-3 credit hours

Introduces the student to professional practice by working in industry in an academically-related job and provides a planned 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 and cooperative education coordinators. Intended for students who will be working full time on their co-op assignment and need not be enrolled in any other course. Graded Cr/NCr unless student has received permission before enrolling for course to be used as an elective. May be repeated. Prerequisites: junior standing and approval by the appropriate faculty sponsor.

CS 481I.  Noncredit Internship   0 credit hours

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 credit hours

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

CS 497.  Special Topics   1-3 credit hours

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 credit hours

Repeatable for a total of 6 hours of credit. Graded Cr/NCr. Prerequisite: departmental consent.

CS 510.  Programming Language Concepts   3 credit hours

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 300, MATH 322.

CS 540.  Operating Systems   3 credit hours

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, 300.

CS 560.  Design and Analysis of Algorithms   3 credit hours

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 300, 322; STAT 460 or IME 254.

CS 580.  Introduction to Software Engineering   3 credit hours

Introduction to 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 411.

CS 594.  Microprocessor-Based System Design   4 credit hours

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.

CS 644.  Advanced Unix Programming   3 credit hours

Improves skills in C programming under the Unix environment. Covers file I/O, both buffered and unbuffered, working with the Unix file system, concurrent programming with multiple processes and process control. Also includes the use of signals and concepts of interprocess communication with pipes and FIFOs. Students must have prior knowledge of C language and its use in structures and pointers. Prerequisite: CS 540.

CS 655.  Information Delivery on the Internet   3 credit hours

Explores the capabilities of providing information on the World Wide Web. Information is typically provided through some sort of website that incorporates static text and the dynamic capabilities of the Web. Learn how to create an interactive website through the use of CGI and Java programming and how to interconnect a website to databases and generate images on the fly. Java portion covers a wide range of Java language and the Applet interface and utilities. Prerequisite: CS 300.

CS 665.  Introduction to Database Systems   3 credit hours

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 300, MATH 322.

CS 697.  Selected Topics   1-3 credit hours

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

CS 697AN.  Hardware-Based Computer Security   3 credit hours

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 715.  Compiler Construction   3 credit hours

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 credit hours

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 credit hours

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 credit hours

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 credit hours

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. Prerequisites: CS 300, IME 254.

CS 737.  Wireless Networking   3 credit hours

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 credit hours

Studies the requirements and design of embedded software systems. Application of the C programming language in the implementation of 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 credit hours

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

CS 764.  Routing and Switching I   4 credit hours

3 Classroom hours; 2 Lab hours. An 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 credit hours

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 credit hours

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 credit hours

Introduction to 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. Prerequisites: CS 300, MATH 322.

CS 780.  Advanced Software Engineering   3 credit hours

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 580.

CS 781.  Cooperative Education in Computer Science   1-3 credit hours

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

CS 794.  Multicore Architectures and Programming   3 credit hours

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 credit hours

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

CS 798.  Individual Projects   1-3 credit hours

Allows beginning graduate students and mature undergraduate students to pursue individual projects of current interest in computer science. Graded S/U. Prerequisite: departmental consent.