105-3 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.
CS200B - Computer Concepts
200B-3 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.
CS201 - Problem Solving with Computers
201-3 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.
CS201B - Beauty and Joy of Computing
201B-3 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.
CS202 - Intro to Computer Science
202-4 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.
CS215 - Discrete Mathematics
215-4 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.
CS220 - Programming w/Data Structures
220-4 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.
CS221 - Internet & Mobile Computing
221-4 Introduction to Internet and Mobile Computing. Introduction to components, architecture and infrastructure of systems and services to support internet computing and mobile platforms. Linux/Unix systems and server-side infrastructure: tools, commands and scripting. Client-side interfaces and application development (Android and web), IDEs, debugging, utilizing resources and services. This course will have a strong hands-on component. Prerequisite: CS 202 with a grade of C or better. CS fee: $100.
CS280 - Computational Statistics I
280-3 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.
CS290 - Comm Skills & Ethics for CS
290-3 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.
CS300 - Introduction to Linux
300-3 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.
CS304 - Advnc Object-Oriented Progrmng
304-3 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.
CS305 - Software Development
305-3 Software Development Practices. Practices, tools and methodologies for development of software within the context of a team. Agile software practices and modern development tools are used to build an enhanced understanding of object-oriented design principles, implementation, and testing to meet customer requirements. A team project is an integral part of this course. Prerequisite: CS 220 with C or better.
CS306 - Linux/UNIX Programming
306-4 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.
CS311 - Theory Programming Languages
311-3 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.
CS315 - Computer Logic & Digital Desgn
315-3 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.
CS320 - Computer Organiztn & Architect
320-3 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.
CS330 - Intro Des & Analysis of Alg
330-3 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.
CS335 - Operating Systems
335-3 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.
CS350 - Web Application Development
350-3 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.
CS391 - Current Topics in CS
391-1 to 3 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.
CS393 - Internship in Comp Science
393-1 to 6 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.
CS401 - Computer Architecture
401-3 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.
CS404 - Autonomous Mobile Robots
404-3 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.
CS406 - Basic Linux System Admin
406-3 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.
CS407 - Adv Linux/UNIX Programming
407-3 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.
CS408 - Applied Cryptography
408-3 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.
CS409 - Ethical Hacking
409-3 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 or graduate standing.
CS410 - Computer Security
410-3 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.
CS412 - Programming Distributed Apps
412-3 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.
CS413 - Digital Forensics
413-3 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 410 or graduate standing.
CS415 - Network Forensics
415-3 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 410 or graduate standing.
CS416 - Compiler Construction
416-3 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.
CS420 - Distributed Systems
420-3 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 or graduate standing.
CS425 - Prin Virtual & Cloud Computing
425-3 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.
CS430 - Database Systems
430-3 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.
CS431 - Cyber-Physical Systems
431-3 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, smarts grids, and driverless cars is ushering in an era of sociality that transcends human social networks to machine to machine networks. Prerequisites: CS 306 with a grade of C or better or graduate standing.
CS434 - Learning From Data
434-3 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.
CS435 - Software Engineering
435-3 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.
CS436 - Artificial Intelligence I
436-3 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.
CS437 - Machine Learn & Soft Computing
437-3 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.
CS438 - Bioinformatics Algorithms
438-3 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.
CS440 - Computer Networks
440-3 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.
CS441 - Mobile & Wireless Computing
441-3 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.
CS447 - Introduction to Graph Theory
447-3 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.
CS449 - Intro to Combinatorics
449-3 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.
CS451 - Theory of Computing
451-3 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.
CS455 - Adv Alg Design & Analysis
455-3 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.
CS471 - Optimization Techniques
471-3 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.
CS472 - Linear Programming
472-3 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.
CS475 - Numerical Analysis I
475-3 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.
CS476 - Numerical Analysis II
476-3 Numerical Analysis II. (Same as MATH 476) Continuation of CS 475. Topics include: solution of ordinary differential equations; computation of eigenvalues and eigenvectors; and solution of partial differential equations. Students will use MATLAB to study the numerical performance of the algorithms introduced in the course. Prerequisites: MATH 305 and MATH 475 with C or better.
CS480 - Computational Statistics II
480-3 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.
CS484 - User Interface Dsgn & Devlpmnt
484-3 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.
CS485 - Computer Graphics
485-3 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.
CS487 - Software Game Development
487-3 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.
CS490 - Readings
490-1 to 6 (1 to 3 per semester) Readings. Supervised readings in selected subjects. Not for graduate credit. Mandatory Pass/Fail. Special approval needed from the instructor.
CS491 - Special Topics
491-1 to 6 (1 to 3 per topic) Special Topics. Selected advanced topics from the various fields of computer science.
CS492 - Special Problems
492-1 to 6 (1 to 3 per semester) Special Problems. Individual projects involving independent work. Special approval needed from the instructor.
CS493 - Seminar
493-1 to 4 Seminar. Supervised study. Preparation and presentation of reports. Special approval needed from the instructor.
CS498 - Senior Seminar in CS
498-2 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.
CS499 - Senior Project in CS
499-3 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.
CS499B - Senior Thesis in CS
499B-3 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.