- CS105 - Introduction to Application Software
This course is designed to provide a detailed exposure to various computer applications software including word processing, database management, spreadsheet, presentation, Web design software, and programming concepts. The course is designed to help students to better use the computer as a tool in their own fields and to help prepare students for Microsoft Office Specialist Certification examinations.
Credit Hours: 3
- CS200B - Computer Concepts
[IAI Course: BUS 902] The course is designed to provide participants with a broad overview of computer concepts including key terminology and components of computer hardware, software, and operating systems. Topics will include, but are not limited to computer architecture, peripheral devices, networking components, system software, information system analysis, application software including word processing, database management, spreadsheet, and presentation software. Discussion will also include the Internet and Web page development.
Credit Hours: 3
- CS201 - Problem Solving with Computers
This course provides an introduction to problem solving using computers. It goes beyond basic computer literacy and application software experiences, but is less intensive than a first course devoted solely to programming. The course focuses on problem solving in the context of an introduction to computer programming and includes coverage of topics from computer literacy, word processing, spreadsheet and database packages. A preliminary treatment of the Internet and World Wide Web is also included. Students cannot get credit for both CS 201 and CS 201B. Course fee: $60.
Credit Hours: 3
- CS201B - The Beauty and Joy of Computing
This course serves as an introductory course to the beauty and joy of computing for non-CS majors as well as first year CS majors. The history, social implications, principles, and applications of computing in addition to programming basics will be discussed. The joy of programming a computer will be delivered to the students using a friendly, visual programming language that does not require keyboard instead a simple drag-and-drop window interface. There will be many fun programming assignments and one team project related to student's interests. Students cannot get credit for both CS 201 and CS 201B.
Credit Hours: 3
- CS202 - Introduction to Computer Science
[IAI Course: CS 911] An introduction to computers and programming using a high-level structured language including a discussion of programming constructs and data representation. Primary emphasis will be given to problem solving, algorithm design, and program development. Three one-hour lectures and one two-hour lab per week. Prerequisite: Mathematics 111 or equivalent with a grade of C or better. Course fee: $60.
Credit Hours: 4
- CS215 - Discrete Mathematics
[IAI Course: M1 905] Introduction to topics relevant to the study of computer science including: number systems, sets, sequences, summations, logic and truth tables, proofs, functions, relations, matrix operations, combinations, permutations, counting techniques, discrete probability, algorithmic complexity, recurrence relations, Boolean algebra, simple combinational circuits, simplification techniques. Prerequisites: MATH 111 or equivalent with grade of C or better. Course fee: $60.
Credit Hours: 4
- CS220 - Programming with Data Structures
[IAI Course: CS 912] Advanced programming, data structures and algorithm design. Topics included advanced language features, data abstraction and object-oriented programming, recursion, stacks, queues, linked lists, trees and graphs, sorting and searching. The course meets for three lecture hours and two laboratory hours per week. Prerequisites: CS 202 and CS 215 each with a grade of C or better. Course fee: $60.
Credit Hours: 4
- CS221 - Introduction to Internet and Mobile Computing
As a preparation course for students to prepare for higher level core curricula, this course provides a comprehensive introduction to a broad range of fundamental computer system concepts and principles. Coverage includes operating system concepts; fundamentals of network, internet, and world-wide-web; C programming; core Linux/Unix systems concepts and tools; and a little taste of Android App development. Prerequisite: CS 202 with a grade of C or better. CS fee: $100.
Credit Hours: 4
- CS280 - Computational Statistics I
This course provides a basic introduction to probability and statistics as well as related computational approaches. Topics include basic probability models, combinatorics, random variables, discrete and continuous probability distributions, statistical estimation and hypotheses testing, confidence intervals and linear regression. Some selected computational approaches for statistical problems such as simulation of random variables from probability distributions, the visualization of multivariate data, Monte Carlo integration and methods in inference will also be discussed. The R language will be used for programming assignments. Prerequisite: MATH 108 with a grade of C or better.
Credit Hours: 3
- CS290 - Communication Skills and Ethics for Computer Science
Effective writing, reading, presentation and oral communication skills for computer science professionals. Evaluation and analysis of technical material. Communicating with stakeholders and team members. Professional ethics and responsibilities in society and industry. Legal and sustainability impact. Discussions and assignments utilizing technical materials and case studies pertaining to history, research, practice and ethics in the discipline. Prerequisites: CS 201 or CS 202 with a grade of C or better or consent of the instructor.
Credit Hours: 3
- CS300 - Introduction to Linux
A gentle introduction to the Linux operating system. Computer programming experience is not required. Students will gain the knowledge and hands-on experience needed to install, configure, and use Linux. Emphasis will be placed on administration skills and security. Software for Linux will be surveyed, particularly to identify replacements for standard Windows applications. Prior experience with Windows or Macintosh operating systems is assumed.
Credit Hours: 3
- CS304 - Advanced Object-Oriented Programming
Advanced features of object-oriented programming are covered in depth. The topics covered include, but are not limited to, the following: polymorphism, inheritance, overloading, generic programming, exception handling, file I/O, GUI development. A group project is an integral part of the course. Prerequisite: CS 220 with a grade of C or better.
Credit Hours: 3
- CS305 - Software Development Practices
Agile software development approach, tools, methodologies, and technical writing are addressed. Understanding of object-oriented design principles, implementation, and testing to meet customer requirements are enhanced through agile practices using modern development tools. A team project is an integral part of this course. Prerequisite: CS 220 with a grade of C or better.
Credit Hours: 3
- CS306 - Linux/UNIX Programming
This course will prepare students to develop software in and for Linux/UNIX environments. Topics to be covered include basic operating system concepts, effective command line usage, shell programming, the C language, programming development tools, system programming, network programming (client-server model and sockets), and GUI programming. Prerequisites: CS 220 and CS 221 with a grade of C or better. CS fee: $60.
Credit Hours: 4
- CS311 - The Theory and Implementation of Programming Languages
Introduction to the theory and implementation of programming languages including finite automata, regular grammars, lexical analysis, parsing, syntax-directed translation, semantic analysis, binding variables, data types, static and dynamic scope, subprograms, abstraction, and concurrency. Study of object-oriented, functional, and logic programming languages. Lab work is essential. Prerequisite: CS 220 with a grade of C or better.
Credit Hours: 3
- CS315 - Computer Logic and Digital Design
Introduction to switching algebra and its applications. Combinational logic and combinational circuit components. Sequential logic and sequential circuit components. Asynchronous sequential circuits. Prerequisite: CS 215 with a grade of C or better.
Credit Hours: 3
- CS320 - Computer Organization and Architecture
Overview of the basic logic circuits needed in constructing a computer. Fundamental computer operations: machine and assembly language instructions, stacks, procedures and macros. The translation process: assembly, linking and loading. Hardware elements for processing, transferring, and storing information. Data path and control unit for a simple processor. Prerequisite: CS 220 with grade of C or better.
Credit Hours: 3
- CS330 - Introduction to the Design and Analysis of Algorithms
A detailed treatment of the design, analysis, and complexity of algorithms, including greedy algorithms, divide and conquer, dynamic programming, and limitations of algorithms as problems get larger or more complex. Prerequisite: CS 220 with a grade of C or better.
Credit Hours: 3
- CS335 - Operating Systems
An extended treatment of the components of operating systems including process management, concurrency, memory management, device management, file management, and security. Prerequisites: CS 220 and CS 221 with a grade of C or better.
Credit Hours: 3
- CS350 - Web Application Development
A comprehensive introduction to languages and tools used to create client side and server side Web applications. Topics include, but are not limited to, markup languages, server-side and client-side scripting languages, web programming languages, web development architectures, frameworks and technologies, and database access. Prerequisites: CS 202 and CS 221 with a grade of C or better or consent of instructor.
Credit Hours: 3
- CS391 - Current Topics in Computer Science
Selected current topics from various fields of computer science. Only maximum of 6 credit hours can be counted toward degree.
Credit Hours: 1-3
- CS393 - Internship in Computer Science
Credit for participation in a formalized internship program involving computer science related work. Hours do not count toward requirements for computer science major. Mandatory Pass/Fail. Prerequisite: Prior approval of the sponsoring agency and the School of Computing. Restricted to Computer Science major.
Credit Hours: 1-6
- CS401 - Computer Architecture
Review of logical circuit design. Hardware description languages. Algorithms for high-speed addition, multiplication and division. Pipelined arithmetic. Implementation and control issues using PLA's and microprogramming control. Cache and main memory design. Input/Output. Introduction to interconnection networks and multiprocessor organization. Prerequisite: CS 320 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS404 - Autonomous Mobile Robots
This course is a comprehensive introduction to modern robotics with an emphasis on autonomous mobile robotics. Fundamentals of sensors and actuators as well as algorithms for top level control are discussed. Multi-robotics and human-robot interaction issues are explored. A group project is an integral part of this course. Prerequisite: CS 330 with a grade of C or better or graduate standing. CS fee: $125.
Credit Hours: 3
- CS406 - Basic Linux System Administration
This course will be an introduction to the administration of Linux systems, with emphasis on security for networked systems. Topics to be covered include: installation and configuration of Linux distributions, typical maintenance activities, and security measures for networked systems. Students will have access to lab machines for hands on practice. Prerequisite: CS 306 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS407 - Advanced Linux/UNIX Programming
This course builds on the knowledge gained in CS 306, to prepare students to do advanced development on Linux/UNIX platforms. The topics studied are critical for achieving high performance in large-scale, high-load networked software systems. These topics include development techniques such as profiling, concurrent programming and synchronization, network programming for high-load servers, advanced I/O alternatives, and IPC such as shared memory. The course will involve the study of code from Open Source projects like Apache and Nginx. The focus will be on the C language, but other languages will also be considered. Students must complete a significant network software project. Prerequisites: CS 306 and CS 335, with grades of C or better, or graduate standing with C language and Linux system programming experience.
Credit Hours: 3
- CS408 - Applied Cryptography
This course is a comprehensive introduction to modern cryptography, with an emphasis on the application and implementation of various techniques for achieving message confidentiality, integrity, authentication and non-repudiation. Applications to Internet security and electronic commerce will be discussed. All background mathematics will be covered in the course. Prerequisite: CS 330 with a grade of C or better and MATH 221 or graduate standing.
Credit Hours: 3
- CS409 - Ethical Hacking
This course will explore the various means that an intruder has available to gain access to computer resources. We will investigate weaknesses by discussing the theoretical background, and whenever possible, actually performing the attack. We will then discuss methods to prevent/reduce the vulnerabilities. This course is targeted specifically for Certified Ethical Hacking (CEH) exam candidates, matching the CEH exam objectives with the effective and popular Cert Guide method of study. Prerequisite: CS 202 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS410 - Computer Security
A broad overview of the principles, mechanisms, and implementations of computer security. Topics include cryptography, access control, software security and malicious code, trusted systems, network security and electronic commerce, audit and monitoring, risk management and disaster recovery, military security and information warfare, physical security, privacy and copyrights, and legal issues. Prerequisite: CS 306 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS412 - Programming Distributed Applications
This course uses advanced features of the Java programming language to develop networked, distributed, and web-based applications. Topics covered include, but are not limited to, sockets, datagrams, the Java security model, threads, multi-tier architectures, Java RMI, Java database connectivity, and Java-based mobile agents. Prerequisite: CS 306 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS413 - Digital Forensics
Cybersecurity has become a ubiquitous concern well beyond finding solutions to post-mortem threat analysis. The course provides a broad overview of security objectives and will cover fundamentals in confidentiality, integrity, and availability. Lectures will offer a broad range of topics on digital forensics. Students will be trained for an investigation mindset. Contemporary tools and techniques for digital forensics and investigations are reviewed. Security for stationary and mobile platforms are foci of current course in both forensic and active modes. There will be multiple hands-on homework and laboratories as well as a practical project as an integral part of this course. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS415 - Network Forensics
With the proliferation of wireless networks, security is at odds with privacy and integrity. The course provides a broad overview of security strategies for wireless networks. Topics will range from intrusion detection and network security protocols to collaborative computing. Contemporary tools and techniques for wireless network security are reviewed. A hands-on project will be an integral part of this course. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS416 - Compiler Construction
Introduction to compiler construction. Design of a simple complete compiler, including lexical analysis, syntactical analysis, type checking, and code generation. Prerequisite: CS 306 and 311 each with a grade of C or better or graduate standing.
Credit Hours: 3
- CS420 - Distributed Systems
A top-down approach addressing the issues to be resolved in the design of distributed systems. Concepts and existing approaches are described using a variety of methods including case studies, abstract models, algorithms and implementation exercises. Prerequisite: CS 335 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS425 - Principles of Virtualization and Cloud Computing
Cloud Computing (CC) represents a recent major strategic shift in computing and Information Technology. This course explores fundamental principles, foundational technologies, architecture, design, and business values of CC. Understanding will be reinforced through multiple angles including: analysis of real world case studies, hands-on projects and in-depth study of research developments. Prerequisites: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS430 - Database Systems
The course concentrates on the relational model, database design, and database programming. Topics include relational model, relational algebra, SQL, constraints and integrity, transaction support, concurrency control, database design, normalization, backup, recovery, and security. A comprehensive product-like project is an integral part of the course. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS431 - Cyber-Physical Systems
The goal of this course is to introduce and develop an understanding of the computing and communication for Internet of Things as a subset of Cyber-Physical systems. Connectivity among devices in our daily lives such as WiFi-enabled thermostats, smart grids, and driverless cars is ushering in an era of sociality that transcends human social networks to machine to machine networks. Prerequisites: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS434 - Learning From Data
An introduction to classical machine learning theory and practical techniques. Topics to be covered include computational learning theory (VC theory), linear classification and regression models, SVMs and kernel methods, decision trees, the bias-variance tradeoff, overfitting, and regularization. Prerequisites: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS435 - Software Engineering
Principles, practices and methodology for development of large software systems. Object-oriented principles, design notations, design patterns and coping with changing requirements in the software process. Experiences with modern development tools and methodologies. A team project is an integral part of this course. Prerequisite: CS 330 with a grade of C or better or graduate standing; CS 306 with a grade of C or better recommended.
Credit Hours: 3
- CS436 - Artificial Intelligence I
Search and heuristics, problem reduction. Predicate calculus, automated theorem proving. Knowledge representation. Applications of artificial intelligence. Parallel processing in artificial intelligence. Prerequisite: CS 311 and 330 each with a grade of C or better or graduate standing.
Credit Hours: 3
- CS437 - Machine Learning and Soft Computing
An introduction to the field of machine learning and soft computing. It covers rule-based expert systems, fuzzy expert systems, artificial neural networks, evolutionary computation, and hybrid systems. Students will develop rule-based expert systems, design a fuzzy system, explore artificial neural networks, and implement genetic algorithms. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS438 - Bioinformatics Algorithms
This course is an introductory course on bioinformatics algorithms and the computational ideas that have driven them. The course includes discussions of different techniques that can be used to solve a large number of practical problems in biology. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS440 - Computer Networks
Design and analysis of computer communication networks. Topics to be covered include queuing systems, data transmission, data link protocols, topological design, routing, flow control, security and privacy, and network performance evaluation. Prerequisite: CS 330 with a grade of C or better or graduate standing; CS 306 recommended.
Credit Hours: 3
- CS441 - Mobile and Wireless Computing
Concepts of mobile and wireless systems are presented. These concepts include, but are not limited to, Routing and Medium Access for Mobile Ad hoc and Wireless Sensor Networks, Mobile IP, Wireless LAN and IEEE 802.11. Hands-on group lab experience is an integral component in the course. Prerequisite: CS 330 with a grade of C or better, or graduate standing or consent of the instructor.
Credit Hours: 3
- CS447 - Introduction to Graph Theory
(Same as MATH 447) Graph theory is an area of mathematics which is fundamental to future problems such as computer security, parallel processing, the structure of the World Wide Web, traffic flow and scheduling problems. It also plays an increasingly important role within computer science. Topics include: trees, coverings, planarity, colorability, digraphs, depth-first and breadth-first searches. Prerequisite: MATH 349 with C or better.
Credit Hours: 3
- CS449 - Introduction to Combinatorics
(Same as MATH 449) This course will introduce the student to various basic topics in combinatorics that are widely used throughout applicable mathematics. Possible topics include: elementary counting techniques, pigeonhole principle, multinomial principle, inclusion and exclusion, recurrence relations, generating functions, partitions, designs, graphs, finite geometry, codes and cryptography. Prerequisite: MATH 349 with C or better.
Credit Hours: 3
- CS451 - Theory of Computing
The fundamental concepts of the theory of computation including finite state acceptors, formal grammars, Turing machines, and recursive functions. The relationship between grammars and machines with emphasis on regular expressions and context-free languages. Prerequisite: CS 311 and 330 each with a grade of C or better or graduate standing.
Credit Hours: 3
- CS455 - Advanced Algorithm Design and Analysis
An in-depth treatment of the design, analysis and complexity of algorithms with an emphasis on problem analysis and design techniques. Prerequisites: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS471 - Optimization Techniques
(Same as MATH 471) Introduction to algorithms for finding extreme values of nonlinear multivariable functions with or without constraints. Topics include: convex sets and functions; the arithmetic-geometric mean inequality; Taylor's theorem for multivariable functions; positive definite, negative definite, and indefinite matrices; iterative methods for unconstrained optimization. Prerequisite: MATH 221 and MATH 250 with C or better.
Credit Hours: 3
- CS472 - Linear Programming
(Same as MATH 472) Introduction to finding extreme values of linear functionals subject to linear constraints. Topics include: recognition, formulation, and solution of real problems via the simplex algorithm; development of the simplex algorithm; artificial variables; the dual problem and duality theorem; complementary slackness; sensitivity analysis; and selected applications of linear programming. Prerequisite: MATH 221 with C or better.
Credit Hours: 3
- CS475 - Numerical Analysis I
(Same as MATH 475) Introduction to theory & techniques for computation with digital computers. Topics include: solution of nonlinear equations; interpolation & approximation; solution of systems of linear equations; numerical integration. Students will use MATLAB to study the numerical performance of the algorithms introduced in the course. Prerequisites: MATH 221 and MATH 250 with C or better.
Credit Hours: 3
- CS480 - Computational Statistics II
This course utilizes computational and graphical approaches to solve statistical problems. A comprehensive coverage on modern and classical methods of statistical computing will be given. Case studies in various disciplines such as science, engineering and education will be discussed. Various topics such as numerical integration and simulation, optimization and maximum likelihood estimation, density estimation and smoothing as well as re-sampling will be presented. Students will be able to create graphical and numerical display based on their data analysis results using R programming language. Prerequisite: MATH 250 and CS 306 or CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS484 - User Interface Design and Development
Problems and processes in the design of highly usable systems. Understanding stakeholders, requirements, tasks, prototyping, evaluation, guidelines and design process and heuristics. Interactive software concepts and implementation considerations. A group project is an integral part of this course. Prerequisite: CS 306 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS485 - Computer Graphics
Principles and techniques of computer graphics. Interactive graphics software development using a modern graphics standard. Topics include: primitives, transforms, clipping, modeling, viewing, rendering, texture, animation and ray tracing. A group project is an integral part of this course. Prerequisite: CS 306 with a grade of C or better or graduate standing; MATH 150 and 221 are recommended.
Credit Hours: 3
- CS487 - Software Aspects of Game Development
This course focuses on software implementation and development aspects of game production including: software process, system architecture, frameworks, entity management and interaction design, game design, production and business issues as well as technical foundations in graphics modeling and rendering, collision detection, physics, artificial intelligence, and multiplayer techniques. Prerequisite: CS 330 with a grade of C or better or graduate standing.
Credit Hours: 3
- CS490 - Readings
Supervised readings in selected subjects. Not for graduate credit. Mandatory Pass/Fail. Special approval needed from the instructor.
Credit Hours: 1-3
- CS491 - Special Topics
Selected advanced topics from the various fields of computer science.
Credit Hours: 1-6
- CS492 - Special Problems
Individual projects involving independent work. Special approval needed from the instructor.
Credit Hours: 1-6
- CS493 - Seminar
Supervised study. Preparation and presentation of reports. Special approval needed from the instructor.
Credit Hours: 1-6
- CS498 - Senior Seminar in Computer Science
This course consists of diverse presentations by faculty, students, and invited speakers from industry, and prepares students for CS 499 (Senior Project in Computer Science) or CS 499B (Senior Thesis in Computer Science). Students in CS project track will select and plan a real world team project, while students in CS thesis track will select a research topic, under advisement of a Computer Science faculty, and will present a research proposal. Prerequisite: completion of or concurrent enrollment in at least two other 400-level Computer Science courses. Restricted to senior standing in Computer Science.
Credit Hours: 2
- CS499 - Senior Project in Computer Science
A continuation of CS 498, performing exercise in the design, implementation, documentation, and deployment of a group project culminating in a presentation to the Computer Science faculty. Prerequisite: CS 498.
Credit Hours: 3
- CS499B - Senior Thesis in Computer Science
A continuation of CS 498, carrying out the approved research under the supervision of a Computer Science faculty culminating in a written thesis and presentation to the Computer Science faculty, evaluated by a committee consisting of the Undergraduate Curriculum Committee, the advisor, and the instructor of the course. Prerequisite: CS 498.
Credit Hours: 3