Computer Science (CS)

Courses numbered 500 to 799 = undergraduate/graduate. (Individual courses may be limited to undergraduate students only.); 800 to 999 = graduate.

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.

CS 805.  Compiler Theory   3 credit hours

Theory of compilation of programming languages. Finite state machines and lexical analysis. Context-free languages and recognizers. Theory of parsing, including recursive-descent, top-down, and bottom-up parsers. Formal description of semantics and code generation. Code optimization. Compiler-compilers. Prerequisites: CS 510, 720.

CS 810.  Programming Languages: Advanced Concepts   3 credit hours

An advanced study of programming language structures and design. Data and control structures and their abstraction. Concurrent programming structures. Formal specifications of syntax and semantics, including models for establishing program correctness. Criteria for language design. Prerequisites: CS 510, 720.

CS 834.  Advanced Routing and Switching   3 credit hours

Advanced course which provides an introduction to the Border Gateway Protocol (BGP), the main Internet routing protocol, and mobile all-IP-networks. Significant research topics regarding BGP and mobile IP networks are covered. Prerequisite: CS 764.

CS 835.  Ad Hoc and Sensor Networks   3 credit hours

Teaches the basic techniques, particularly algorithms and protocols used in sensor networks. Exposes students to various sensor network applications and the fundamental issues in designing and analyzing sensor networks. Provides students with a perspective on the active research areas in wireless ad hoc and sensor networks and enhances their potential to do research in this area. Focuses mainly on data intensive sensor networks. Prerequisite: CS 560.

CS 836.  Computer Performance Analysis   3 credit hours

Teaches the basic concepts in stochastic modeling of systems for analysis and for simulation. Analytic modeling techniques include discrete- and continuous-time Markov chains, queuing theory, and queuing networks, as well as approximate methods based on these techniques. Operational analysis presents a nonstochastic, measurement-based perspective to the analysis of computer systems. Also emphasizes discrete-event simulation, a widely-used technique in many areas of performance evaluation. Performance metrics taken from stochastic simulations are phantom variables, and are subject to the same types of statistical analysis as data obtained from real systems. Prerequisite: EE 754.

CS 837.  Energy Intelligent Computing and Communications   3 credit hours

3 Classroom hours; 1 Lab hour. Introduces various mobile computing scenarios, explores fundamental causes of energy wastage and addresses means to be more efficient. Looks at how computing can, in general, be carried out in an energy-intelligent manner and be applied to the broader area of cyber-physical systems. Topics covered include: energy as an issue, its relevance to computing and communications, battery technology and mobile device constraints, computing and its role toward achieving broader goals of environmental sustainability. Application areas targeted include mobile computing, cloud computing and smart grids. Course involves team-based research projects targeting these application areas. Prerequisite: CS 464 or 560.

CS 843.  Distributed Computing Systems   3 credit hours

A study of hardware and software features of online multiple computer systems emphasizing network design and telecommunication. Includes distributed databases, interprocessor communication and centralization versus distribution. Studies the use of microcomputers in representative configurations. Prerequisites: CS 540, 736.

CS 862.  Advanced Database Systems   3 credit hours

Covers recent developments and advances in database technology. Designed for students who have had a first database course and have a good background in the related computer science disciplines. Possible topics include: extended relational database management systems, object-oriented database management systems, deductive databases, database type systems and database programming language, persistent languages and systems, distributed databases. Prerequisite: CS 665.

CS 863.  Multimedia Database Systems   3 credit hours

Presents state-of-the-art techniques for representing and manipulating information in multimedia databases. Emphasizes image, audio, video and document data. Covers theoretical principles underlying storage, retrieval, querying and delivery of such data. Requires good prior knowledge of relational and/or object-oriented databases. Prerequisite: CS 665.

CS 864.  Database Query Processing and Optimization   3 credit hours

Covers concepts and techniques for efficient and accurate processing of queries for a variety of data forms, such as centralized and distributed relational databases as well as object-oriented, fuzzy and multimedia databases. Prerequisites: CS 560, 665.

CS 865.  Principles of DBMS Implementation   3 credit hours

Deals with two of the three main components of a relational Database Management System (DBMS): storage management, and query processing. The third component, transaction management, is covered as time permits. Prerequisites: CS 560, 665.

CS 866.  XML Databases   3 credit hours

Deals with modeling semi-structured Web databases as XML databases, their schema (DTD and XML schema), integrity constraints, and their query languages (XPath, XSLT and XQuery). Prerequisite: CS 665.

CS 868.  Database Transaction Management   3 credit hours

Topics covered include logging and recovery from system failures, concurrency control, serial and serializable schedules, schedulers, and deadlock detection and recovery. Prerequisite: CS 665.

CS 891.  Project   1-3 credit hours

An intensive project involving the analysis and solution of a significant practical problem which must be supervised by a CS graduate faculty advisor; it can be job-related. Students must write a report on the project and pass an oral final examination by an ad hoc faculty committee headed by the project advisor. Graded S/U. Prerequisite: departmental consent.

CS 892.  Thesis   1-6 credit hours

May be repeated for up to 6 hours of credit. Graded S/U. Prerequisite: departmental consent.

CS 893.  Individual Reading   1-5 credit hours

Graded S/U. Prerequisite: departmental consent.

CS 898.  Special Topics   2-3 credit hours

1-3 Classroom hours; 0-2 Lab hours. Topics of current interest to advanced students of computer science. Repeatable for credit with departmental consent. Prerequisite: departmental consent.

CS 898AG.  Software Visualization   3 credit hours

Software products are constantly growing in terms of size, complexity, and application domains, among other things. To match the enormity of the problem of evolving software, a likewise support is needed for software developers and maintainers. Software visualization encompasses the study of graphical metaphors, techniques, and tools to represent several aspects of software products, processes, and projects. The visual representations include 2D and 3D. The represented aspects include structural, behavioral, and evolutionary. The course is organized in the form of a research seminar. Students are required to read, present, and review papers from the reading list prepared for the course. The instructor provides the paper review format. Additionally, students need to do a term project (e.g., software prototype development and in-depth literature survey) and submit a 10-page project report in the form of an IEEE two-column proceedings format. Active participation in the class discussion on papers is also an integral part of the class.

CS 898AI.  Alternative Computing Paradigm   3 credit hours

Computing has been changing its paradigms to fulfill various computation needs. Students learn to understand the present computing systems and then explore some alternative computing paradigms. Topics should include: modern computer systems, optimization techniques for serial code, parallelism and concurrency, parallel computers, parallel computing, quantum computing, chaotic computing and research projects. Students are expected to have adequate knowledge in computer architecture. By continued enrollment in this class, students are certifying that they have met the prerequisite. Prerequisite: at least one of the following: CS 694, CS 738, CS 794, or equivalent.

CS 898AO.  Mobile Computing   3 credit hours

Covers various research topics in the broad area of mobile computing. Students are exposed to several research challenges faced by mobile computing platforms and associated applications such as intermittent network connectivity, battery and performance constraints, indoor localization and navigation. Each student is expected to work in groups to complete a research project at the end of the class that addresses an outstanding research challenge in the area of mobile computing. Students are also expected to read, present and critique existing research literature in the area. Prerequisites: CS 560, and prior experience programming with Android Studio.

CS 898AR.  Machine Learning in Computational Biology   3 credit hours

Introduces statistical machine learning algorithms and their applications in computational biology. Intends to achieve two major goals: first, to help students understand the theories of advanced machine learning algorithms; second, to teach students how to apply these cutting-edge machine learning methods to solve problems in life sciences and biomedical research. Students are asked to read and present some selected research papers. They are also required to apply machine learning algorithms to solve real, biological problems in the context of course projects, present the results and document the findings in the form of a final report.

CS 898AS.  Deep Learning: Theory, Algorithms and Applications   3 credit hours

Deep learning is one of the hottest areas in machine learning and is at the core of many recent advances in artificial intelligence, particularly in audio, image, video, and language analysis and understanding. Deep learning is widely deployed by such companies as Google, Facebook, Microsoft, IBM, Baidu, Apple and others for audio/speech, image, video, and natural language processing. Course covers a wide variety of topics in deep learning architectures, feature learning and neural computation, including restricted Bolzman machines, autoencoders, convolutional neural networks etc. Covers mathematical methods and theoretical aspects as well as algorithmic and practical issues. Students have the opportunity to build practical deep neural network architectures and test them on real life datasets in the form of a class project. Prerequisites: CS 560, CS 697AB and good Python programming skills.

CS 898AT.  Bitcoins and Cryptocurrencies   3 credit hours

Bitcoin is a new and exciting form of cryptocurrency technology that has the potential of altering payments and economics around the world. In between the optimism surrounding Bitcoin’s evolution as an alternate form of currency and the pessimism related to its security, success and adoptability, there is significant confusion and lack of understanding at the technical level about the precise architecture and operation of Bitcoin. This advanced graduate-level course attempts to bridge this gap in the technical understanding of Bitcoin and its operation. Specifically addresses the following fundamental questions: How does Bitcoin work and what makes it different? How secure is Bitcoin? How anonymous are Bitcoin users? What applications can be built using Bitcoin as a platform? Can cryptocurrencies be regulated? What is the future of Bitcoin and cryptocurrencies in general? Prerequisite: CS 767 (strictly enforced). If prerequisite is not met, seek the instructor's explicit permission before registering.

CS 898AU.  Assistive Mobile Computing   3 credit hours

Covers various research topics in the broad area of mobile computing as it applies to assistive technologies. Assistive technology is an umbrella term that includes assistive, adaptive and rehabilitative devices for people with special needs, and also includes the process used in selecting, locating and using them. Assistive technology promotes greater independence by enabling people to perform tasks that they were formerly unable to accomplish, or had great difficulty accomplishing, by providing enhancements to, or changing methods of interacting with, the technology needed to accomplish such tasks. Mobile devices present new opportunities in the field of assistive technologies through their portability and by providing ubiquitous connectivity. A fundamental advantage of using mobile devices to deliver assistive technologies is the unobtrusive nature of many of the platforms. Furthermore, assistive systems are typically adaptable across multiple mobile platforms and can support multiple special needs. Students are exposed to several interdisciplinary research challenges in the design and application of mobile computing platforms when they are used as assistive technologies. These include intermittent network connectivity, battery and performance constraints, indoor localization and navigation, human computer interfaces, biomechanics and human factors. Each student is expected to acquire and apply technical skills to solve some of these research challenges working in groups to complete a research project at the end of the class. Students are also expected to read, present and critique existing research literature in the area. Prerequisites: CS 560, and prior experience creating mobile applications with Android or iOS.

CS 898AV.  Software Defined Networking   3 credit hours

SDN has been widely envisioned to be the next-generation networking paradigm for both wired and wireless networks (e.g., Google B4 SDN data center networks and AT&T SDN cellular systems). The main ideas of SDN are (1) to separate the data plane from the control plane; and (2) to introduce novel network control functionalities based on an abstract representation of the network. The key advantages of SDN, including programmability and virtualizability can lead to extremely flexible computing, networking and storage infrastructure, which dramatically improves network resource use, simplifies network management, reduce operating costs, and promotes innovation and evolution. Students are first introduced to SDN development history, SDN architectural design, SDN traffic engineering, and SDN development tools, (e.g., SDN management protocols Openflow and FlowVisor), network controllers (e.g., Floodlight and RYU), and software programmable switches (e.g., Open vSwitches). Then, students are instructed on how these technologies are applied to some emerging applications (e.g., data center networks, cloud-computing environments, internet, and cellular systems). Finally, the group lab assignment is implemented on the OpenFlow-Mininet simulators as well as on a state-of-the-art wireless SDN testbed. Prerequisite: CS 764 or CS 835 or CS 898AF (Cognitive Radio Networks).

CS 898B.  Information Retrieval   3 credit hours

Course deals with information retrieval on the web. Roughly, it deals with how search engines select the desired documents, based on the query. Topics include Boolean retrieval, inverted indexes, and their construction; ranked retrieval, term weighting, and relevance ranking. Prerequisite: CS 560.