CS 101 - Computing & Algorithms I
Prerequisite: None
Minimum Class Standing: NA
An introduction to algorithmic problem solving, with emphasis on elementary program and software engineering techniques. Syntax and semantics of a modern programming language; programming and debugging at the file level; true object-orientation; Strings, arrays, sorting, inheritance, and exception handling. Terms Offered: All
CS 102 - Computing & Algorithms II
Prerequisite: CS-101
Minimum Class Standing: NA
A second course in algorithmic problem solving. Recursion, abstract data types, dynamic data structures, comparison- based sorting, elementary algorithm analysis, design of software projects of moderate size, and continuing development of programming skills. Terms Offered: All
CS 202 - System Programming Concepts
Prerequisite: CS-102
Minimum Class Standing: SO
Fundamental system programming concepts are examined using the C programming language. Topics include: machine organization, data representation, interrupt handling, I/O, file management, dynamic structures, parameter passing, memory management, system calls, process creation, process control, interprocess communication, and language interfaces. Terms Offered: All
CS 203 - Computing & Algorithms III
Prerequisites: CS-102, CS-211
Minimum Class Standing: SO
The design and analysis of advanced data structures and algorithms. Algorithm design techniques, algorithm analysis techniques, advanced data structures, advanced sorting, applications to various problem domains. Terms Offered: All
CS 211 - Discrete Mathematics
Prerequisite: None
Minimum Class Standing: NA
Propositional and first-order logic; logical equivalence and inference. Proof techniques, mathematical induction and principle of diagonalization. Set operations, relations, functions. Introduction to graphs and trees and their applications to computer science. Lattice structures and Boolean algebras. Truth tables and minimization of Boolean expressions. Terms Offered: All
CS 300 - The Computing Professional
Prerequisites: CE-210 or CS-102, COMM-101
Minimum Class Standing: SO
An examination of the profession of computing from historical and ethical perspectives. Overview of the history of computing, from the earliest computational devices and theoretical foundations to modern developments. Discussion of the social impact of computing on society and the ethical implications for computing professionals, including analysis of case studies. Terms Offered: Summer, Fall
CS 312 - Theory of Computation
Prerequisites: CS-102, CS-211
Minimum Class Standing: SO
Regular languages and grammars; finite-state machines and transducers; relationships between finite-state automata and regular languages. Context-free languages and grammars; language recognition with stack machines and parsers. Properties of formal languages. Computability and undecidability. Introduction to computational complexity. Terms Offered: All
CS 320 - Computer Graphics
Prerequisites: CS-102, MATH 101
Minimum Class Standing: SO
An introduction to computer graphics. Rendering and curve drawing techniques, clipping algorithms, light and reflection models, object transformations. Introduction to three-dimensional graphics. Terms Offered: Fall, Winter
CS 331 - Programming Language Design
Prerequisites: CS-203, CS-312
Minimum Class Standing: JR
A study of the principles behind the design of programming languages. Syntactical design, control structures, data structures, naming and environments, language design tools, historical development, implementation issues. Terms Offered: Summer, Fall
CS 341 - Web Software Tools
Prerequisite: CS-102
Minimum Class Standing: NA
World Wide Web programming tools. Introduction to web programming. Web development, client-side development using HTML and its extensions, server-side development. Complete web system. Computer technologies including several computer languages. Terms Offered: Summer, Fall
CS 385 - Introduction to Game Design
Prerequisite: CS-102
Minimum Class Standing: NA
In this course we will study the technology, science, and art involved in the creation and design of computer games. The course will emphasize hands-on development of games. We will consider a variety of software technologies relevant to games.
CS 415 - Cryptography
Prerequisite: CS-203
Minimum Class Standing: JR
A study of modern data security. Mathematical foundations of cryptography. Classical cryptographic systems and computer attacks on these systems. Cryptographic security over unsecure communication paths: cryptographic protocols, oblivious transfers, proofs of identity, signature schemes. Modern cryptographic systems: data encryption standards, public-key systems, key generation and management. External considerations are presented and discussed: security organizations role in security, privacy considerations, import/export issues. Terms Offered: Summer, Fall
CS 420 - Intro to Virtual Reality
Prerequisite: CS-320
Minimum Class Standing: NA
This course is an introduction to virtual reality systems. It reviews the development of the virtual reality technologies in the past and discusses the characteristics of a virtual reality system, its core components such as the input devices, the output devices and the computing architectures, the object modeling, programming toolkits, as well as the current and future applications of virtual reality.
CS 421 - Applied Graph Theory
Prerequisite: CS-203
Minimum Class Standing: JR
Topics in graph theory including subgraphs, trees, connectivity, graph traversal, directed graphs, planarity, graph matching and coloring, and advanced graph decomposition techniques. Emphasis will be on graph algorithms and their complexity. Graphs will be used to develop solutions to problems from various areas such as electrical engineering, operations research, and business applications. Terms Offered: Summer, Fall
CS 425 - Parallel Models & Algorithms
Prerequisite: CS-203
Minimum Class Standing: JR
An introduction to various models for parallel computation such as PRAM models, vector processors, interconnection networks, trees, meshes, hypercubes, and sorting networks. Performance measures for parallel models and for parallel algorithms. Parallel algorithms for searching, sorting, merging, trees, graphs, and the study of their efficiency, Implementation of some parallel algorithms are on a parallel machine. Terms Offered: Summer, Fall
CS 431 - Compiler Desgn & Constructn I
Prerequisites: CS-203, CS-312
Minimum Class Standing: JR
A study of compiler design techniques; scanning, parsing, error recovery and intermediate code generation and optimization; tools for compiler construction, including scanner generators and compiler-compilers. Construction of a working compiler front-end. Terms Offered: Winter, Spring
CS 432 - Compiler Desgn & Constructn II
Prerequisite: CS-431
Minimum Class Standing: JR
A continuation of the study of compiler design techniques; basic blocks, instruction selection and optimization, liveness analysis, register allocation, and code generation. Advanced topics including garbage collection, object- oriented and functional language compilation, pipelining and the memory hierarchy. Construction of a compiler back-end. Terms Offered: Summer, Fall
CS 451 - Operating Systems I
Prerequisites: CE-320, CS-202
Minimum Class Standing: JR
Operating system function and implementation; process and thread management, scheduling and synchronization; deadlock; real and virtual memory management, file- system structure and implementation. Case studies of historical and modern operating systems. Terms Offered: All
CS 452 - Operating Systems II
Prerequisite: CS-451
Minimum Class Standing: JR
Operating system function and implementation; input/ output systems, secondary and tertiary storage structure; distributed systems, networks and file systems; protection and security. Case studies of historical and modern operating systems. Terms Offered: Winter, Spring
CS 455 - Computer & Network Security
Prerequisite: CS-203
Minimum Class Standing: JR
A study of security in computing systems, including policies , audit, and protection. Physical and personnel security, security of network services, firewall construction and evaluation. Incident response. Terms Offered: Winter, Spring
CS 458 - Computer and Network Forensics
Corequisite: CS-202 Minimum Class Standing: NA
Forensic analysis, evidence collection and data reconstruction for computing systems and networks. Document preparation for use in the legal system.
CS 459 - Secure Software
Prerequisites: CS-202, CS-203
Minimum Class Standing: NA
Software security analysis. Construction of secure and re-engineering of insecure software. Secure code and cryptographic best practices. Operating system and compiler security interfaces. Documentation.
CS 461 - Database Systems
Prerequisite: CS-203
Minimum Class Standing: JR
Database design and implementation, entity-relationship model, relational model, object-oriented model, logical rules, relational algebra and logic, relational query languages, physical data organization, design theory for databases, distributed databases. Terms Offered: Summer, Fall
CS 465 - Info Retrieval & Data Mining
Prerequisite: CS-203
Minimum Class Standing: JR
Information retrieval and data mining topics, including information storage and retrieval, file structures, precision and recall, probabilistic retrieval, search strategies, automatic classification, automatic text analysis, decision trees, genetic algorithms, nearest neighbor method, and rule induction. Terms Offered: Winter, Spring
CS 471 - Software Engineering
Prerequisites: CS-203, CS-312
Minimum Class Standing: JR
Software life cycle including specification, design, coding, testing, and verification of a software project. Stepwise refinement and rapid prototyping. Software portability, reusability and maintenance in the team construction of a large software product. Software quality assurance. Terms Offered: Winter, Spring
CS 481 - Artificial Intelligence
Prerequisites: CS-203, CS-312
Minimum Class Standing: NA
Types of intelligence, knowledge representation, cognitive models. Goal-based systems, heuristic search and games, learning systems. Language understanding, robotics, theorem providing and deductive systems. Terms Offered: Summer, Fall
CS 485 - Advanced Game Development
Prerequisites: CS-385, CS-481
Minimum Class Standing: NA
This course contains essentials of developing a meaningful game play and its implementation. The contents include game-play design and its implementation using GUI elements, sound, terrains and rendering the end game.
CS 499 - CS Independent Study
Prerequisite: Permission of Instructor
A self-directed study project in an area of compute science selected by an individual student in conjunction with a faculty member. May be repeated for credit. Terms Offered: As Decided
Prerequisites At a Glance
CS = Computer Science
CE = Computer Engineering