Computer Science (COMP)
COMP 3001 Bridge Course: Theory Basics (1-4 Credits)
Bridge Course I: Computer Science Theory Basics This accelerated course covers the basics of discrete mathematics including functions, relations, counting, logic, proofs etc that is necessary to attend CS graduate school. In addition, it includes an introduction to programming and algorithm analysis. 4.000 Credit hours 4.000 Lecture hours.
COMP 3002 Bridge Course: Theory Advanced (1-4 Credits)
This accelerated course continues to build on the basics of discrete mathematics by covering material including advanced counting, recurrences, graphs, trees, traversals, automata etc. that is necessary to attend Computer Science graduate school. In addition, it includes an introduction to additional algorithms and data structures.
Prerequisite: COMP 3001.
4.000 Credit hours
4.000 Lecture hours.
COMP 3003 Bridge Course: Systems Basics (1-4 Credits)
This accelerated course covers the basics of computer systems including assembly language programming, addressing modes, logic design, etc. necessary to attend CS graduate school. In addition, it includes an introduction to C programming language. In particular, standard I/O, data manipulation, pointers, and dynamic memory management. 4.000 Credit hours 4.000 Lecture hours.
COMP 3004 Bridge Course: Systems Advance (1-4 Credits)
This accelerated course continues to build on the basics of computer systems by covering material including UNIX tools, version control, process creation, concurrent programming etc that is necessary to attend Computer Science graduate school. In addition, it includes an introduction to a scripting language.
Prerequisites: COMP 3003.
4.000 Credit hours
4.000 Lecture hours.
COMP 3005 Data Science Bridge Course 2: Computer Science Programming Basics (4 Credits)
This accelerated course covers the basics of Python programming. Course Objectives: be able to develop, design and implement simple computer programs. • appreciate the difference between data types. • understand basics of object•oriented programming including classes, subclasses, polymorphism, abstract classes/methods • learn to read from and write to files • understand and use arrays • understand and use recursion • and be able to design, implement, debug, and test relatively large Python programs.
COMP 3006 Data Science Bridge: Advanced Python (4 Credits)
This accelerated course covers advanced Python programming. Course Objectives: understand and be able to use data structures including stacks, queues, lists, trees, sets, and graphs • understand search and sorting algorithms.
COMP 3007 Data Science Bridge 4: Data Science Theory Basics - Calculus and Linear Algebra (4 Credits)
This course presents the elements of calculus essential for work in data science. Students will study differentiation and integration in the context of probability density and of optimization.
COMP 3008 Discrete Math and Linear Algebra for Data Science (4 Credits)
This course presents the elements of linear algebra and discrete math essential for subsequent coursework in data science.
COMP 3200 Discrete Structures (4 Credits)
Discrete mathematical structures and non-numerical algorithms; graph theory, elements of probability, propositional calculus, Boolean algebras; emphasis on applications to computer science. Cross-listed as MATH 3200. Prerequisites: MATH 2200 or COMP 2300 and COMP 1672 or COMP 1771.
COMP 3341 Multimedia Systems (4 Credits)
This course covers fundamental issues in design and implementation of multimedia applications. This course also covers technologies in multimedia systems such as multimedia data representation, compression, coding, networking, data management, and I/O technologies. Prerequisite: COMP 3361.
COMP 3351 Programming Languages (4 Credits)
Programming language as a component of software development environment; binding, scope, lifetime, value and type of a variable; run-time structure--static, stack-based and dynamic languages; parameter passing--call by reference, value, result, value-result and name; subprogram parameters; role played by side effects, dangling pointers, aliases and garbage; garbage collection; data abstraction - study of object-oriented, functional, and logic languages. Prerequisites: COMP 2370, COMP 2691, and COMP 2355.
COMP 3353 Compiler Construction (4 Credits)
Design and implementation of a major piece of software relevant to compilers. Prerequisite: COMP 3352.
COMP 3361 Operating Systems I (4 Credits)
Operating systems functions and concepts; processes, process communication, synchronization; processor allocation, memory management in multiprogramming, time sharing systems. Prerequisites: COMP 2355, COMP 2370, and COMP 2691.
COMP 3371 Advanced Data Structures & Algorithms (4 Credits)
Design and analysis of algorithms; asymptotic complexity, recurrence equations, lower bounds; algorithm design techniques such as incremental, divide and conquer, dynamic programming, randomization, greedy algorithms, etc. Prerequisites: COMP 2370, MATH 3200.
COMP 3381 Software Engineering I (4 Credits)
An introduction to software engineering. Topics include software processes, requirements, design, development, validation and verification and project management. Cross listed with COMP 4381. Prerequisite: COMP 2370.
COMP 3382 Software Engineering II (4 Credits)
COMP 3400 Advanced Unix Tools (4 Credits)
Design principles for tools used in a UNIX environment. Students gain experience building tools by studying the public domain versions of standard UNIX tools and tool- building facilities. Prerequisites: COMP 2400 and knowledge of C and csh (or another shell), and familiarity with UNIX.
COMP 3410 World Wide Web Programming (4 Credits)
Creating WWW pages with HTML, accessing user-written programs via CGI scripts, creating forms, imagemaps and tables, and Java programming principles and techniques. Prerequisite: COMP 2355.
COMP 3421 Database Organization & Management I (4 Credits)
An introductory class in databases explaining what a database is and how to use one. Topics include database design, ER modeling, database normalization, relational algebra, SQL, physical organization of records and clocks, heap files, sorted files, hashing, extendible hashing, linear hashing and B trees. Each student will design, load, query and update a nontrivial database using the Oracle DMBS. Prerequisite: COMP 2370.
COMP 3431 Data Mining (4 Credits)
Data Mining is the process of extracting useful information implicitly hidden in large databases. Various techniques from statistics and artificial intelligence are used here to discover hidden patterns in massive collections of data. This course is an introduction to these techniques and their underlying mathematical principles. Topics covered include: basic data analysis, frequent pattern mining, clustering, classification, and model assessment. Prerequisites: COMP 2370.
COMP 3501 Introduction to Artificial Intelligence (4 Credits)
Programming in LISP and Prolog with applications to artificial intelligence; fundamental concepts of artificial intelligence; emphasis on general problem-solving techniques including state-space representation, production systems, and search techniques. Prerequisites: MATH 2200, COMP 2370.
COMP 3621 Computer Networking (4 Credits)
An introduction to computer networks with an emphasis on Internet protocols. Topics include; network topologies, routing, Ethernet, Internet protocol, sockets, operating system impact and client/server implementations. Prerequisites: COMP 2355 and COMP 2370. Corequisite: COMP 3361.
COMP 3681 Networking for Games (4 Credits)
Implementing the networking code for multiplayer games is a complex task that requires an understanding of performance, security, game design, and advanced programming concepts. In this course, students are introduced to the networking stack and how this is connected to the Internet, learn how to write protocols for games, and implement several large games using a game engine that demonstrate the kind of networking and protocols required by different genres of games. In addition, tools are introduced that help understand and debug networking code, simplify the creation of protocols, and make the development of networking code easier.
COMP 3701 Topics in Computer Graphics (4 Credits)
COMP 3702 Topics in Database (4 Credits)
COMP 3703 Topics-Artificial Intelligence (4 Credits)
COMP 3704 Advanced Topics: Systems (4 Credits)
COMP 3705 Topics in Computer Science (1-4 Credits)
COMP 3731 Computer Forensics (4 Credits)
Computer Forensics involves the examination of information contained in digital media with the aim of recovering and analyzing latent evidence. This course will provide students an understanding of the basic concepts in preservation, identification, extraction and validation of forensic evidence in a computer system. The course covers many systems level concepts such as disk partitions, file systems, system artifacts in multiple operating systems, file formats, email transfers, and network layers, among others. Students work extensively on raw images of memory and disks, and in the process, build components commonly seen as features of commercial forensics tools (e.g. file system carver, memory analyzer, file carver, and steganalysis). Prerequisites: COMP 2355.
COMP 3801 Introduction Computer Graphics (4 Credits)
Fundamentals of graphics hardware, scan conversion algorithms, 2D and 3D viewing transformations, windows, viewports, clipping algorithms, mathematics for computer graphics, graphics programming using a standard API. Prerequisites: COMP 2370, MATH 1952 or 1962, and MATH 2060.
COMP 3821 Game Programming I (4 Credits)
An introduction to computer game programming. Use of a game engine to create 3D computer games. Topics to include game scripting, simple 3D asset creation, incorporation of assets, keyboard/mouse event handling, animation, game phases and score keeping. Prerequisite: COMP 2370.
COMP 3822 Game Programming II (4 Credits)
An introduction to computer game engine programming. Major class goal is to understand how game engines are created by building subsets of a game engine. Non-exhaustive set of topics include how terrains are generated, how animations are supported, how particle systems are implemented, how physics systems are coded, and how support is provided for higher level scripting languages. All coding will be done in low-level graphics languages. Prerequisites: COMP 3801 and COMP 3821.
COMP 3904 Internship/Co-Op in Computing (0-10 Credits)
Practical experience in designing, writing and/or maintaining substantial computer programs under supervision of staff of University Computing and Information Resources Center. Prerequisites: COMP 2370 and approval of internship committee (see department office).
COMP 3991 Independent Study (1-10 Credits)
Cannot be arranged for any course that appears in the regular course schedule for that particular year.
COMP 3992 Directed Study (1-10 Credits)
COMP 4333 Parallel and Distributed Computing (4 Credits)
Current techniques for effective use of parallel processing and large scale distributed systems. Programming assignments will give students experience in the use of these techniques. Specific topics will vary from year to year to incorporate recent developments. This course qualifies for the Computer Science "Advanced Programming" requirement. Prerequisites: COMP2370 and COMP2355, or equivalent.
COMP 4362 Operating Systems II (4 Credits)
COMP 4372 Theory of Algorithms (4 Credits)
NP-completeness; lower bound theory; approximation algorithms; amortized complexity and data structures, randomized algorithms. Assorted topics such as string algorithms, graph algorithms, linear programming, computational geometry.
Prerequisite: COMP 3371.
COMP 4384 Secure Software Engineering (4 Credits)
This course is concerned with systematic approaches for the design and implementation of secure software. While topics such as cryptography, networking, network protocols and large scale software development are touched upon, this is not a course on those topics. Instead, this course is on identification of potential threats and vulnerabilities early in the design cycle. The emphasis in this course is on methodologies and paradigms for identifying and avoiding security vulnerabilities, formally establishing the absence of vulnerabilities, and ways to avoid security holes in new software. There are programming assignments designed to make students practice and experience secure software design and development. Prerequisites: COMP 3381 & COMP 4555. COMP 3621 is highly recommended. Students must be able to implement complex programs in C, C++ and Java.
COMP 4431 Data Mining (4 Credits)
Data Mining is the process of extracting useful information implicitly hidden in large databases. Various techniques from statistics and artificial intelligence are used here to discover hidden patterns in massive collections of data. This course is an introduction to these techniques and their underlying mathematical principles. Topics covered include: basic data analysis, frequent pattern mining, clustering, classification, and model assessment.
COMP 4432 Machine Learning (4 Credits)
This course will give an overview of machine learning techniques, their strengths and weaknesses, and the problems they are designed to solve. This will include the broad differences between supervised/unsupervised and reinforcement learning as well as associated learning problems such as classification and regression. Techniques covered, at the discretion of the instructor, may include approaches such as linear and logistic regression, neural networks, support vector machines, kNN, decision trees, random forests, Naive Bayes, EM, k-Means, and PCA. After course completion, students will have a working knowledge of these approaches and experience applying them to learning problems. Enforced Prerequisites: COMP 4442.
COMP 4441 Introduction to Probability and Statistics for Data Science (4 Credits)
The course introduces fundamentals of probability for data science. Students survey data visualization methods and summary statistics, develop models for data, and apply statistical techniques to assess the validity of the models. The techniques will include parametric and nonparametric methods for parameter estimation and hypothesis testing for a single sample mean and two sample means, for proportions, and for simple linear regression. Students will acquire sound theoretical footing for the methods where practical, and will apply them to real-world data, primarily using R.
Enforced Prerequisites and Restrictions:
COMP 1671, MATH 1951, MATH 1952, or Data Science Bridge Courses I-IV, or equivalent experience.
COMP 4442 Advanced Probability and Statistics for Data Science (4 Credits)
This course builds on material in Probability and Statistics 1. Students will carry out model fitting and diagnostics for multiple regression, ANOVA, ANCOVA, and generalized linear models. Dimension reductions techniques such as PCA and Lasso are introduced, as are techniques for handling dependent data. The course introduces the principles of resampling and Bayesian Analysis. Students will acquire sound theoretical footing for the methods where practical, and will apply them to real-world data, primarily using R.
COMP 4447 Data Science Tools 1 (4 Credits)
Students will work through internships or team projects applying course-work to the full data life cycle within a particular domain. This course counts towards the MS in Data Science experiential learning requirement. Enforced Prerequisites: COMP 3006 and COMP 3007 or equivalent tested proficiency.
COMP 4448 Data Science Tools 2 (4 Credits)
Students will work through internships or team projects applying course-work to the full data life cycle within a particular domain. This course is a continuation of the project started in Data Science Tools 1. Enforced Prerequisites: COMP 4447.
COMP 4449 Data Science Capstone (4 Credits)
Students identify and fill a demand for an innovative data science product, such as a data base tool, analytical software, or domain specific analysis. The product is defined, implemented, documented, tested, and presented by the student or student team with the instructor and other stakeholders acting as a project supervisors to verify that goals are met through the 10-week development process.
Enforced Prerequisites : COMP 3421, COMP 4581, COMP 4442, COMP 4431, COMP 4448.
COMP 4581 Algorithms for Data Science (4 Credits)
This course introduces the design and analysis of algorithms within the context of data science. Topics include; asymptotic complexity and algorithm design techniques such as incremental, divide and conquer, dynamic programming, randomization, greedy algorithms, and advanced sorting techniques. Examples to illustrate techniques are drawn from multi-dimensional clustering (k-means and probabilistic), regression, decision trees, order statistics, data mining using apriori algorithms, and algorithms for generating combinatorial objects.
Enforced Prerequisites: COMP 3001 and COMP 3006.
COMP 4600 Seminar in Computer Science (0-4 Credits)
Preparation and presentation of lectures on some aspect of current research in computer science; topics not generally encountered in formal courses, may include robotics, pattern recognition, parallel processing, computer applications. 10- to 15- page paper with bibliography required.
COMP 4621 Computer Networking (1-4 Credits)
COMP 4701 Special Tpcs-Computer Graphics (1-4 Credits)
COMP 4702 Advanced Topics-Database (3 Credits)
COMP 4703 Adv Topics-Artificial Intell (1-4 Credits)
COMP 4704 Advanced Topics-Systems (3-4 Credits)
COMP 4705 Advanced Topics-Programming (1-4 Credits)
COMP 4708 Special Topics-VLSI (3 Credits)
COMP 4709 Special Tpcs-Computer Security (3 Credits)
COMP 4720 Applied Cryptography (4 Credits)
Block ciphers, one-way hashes, symmetric and asymmetric encryption, public-key infrastructure, digital signatures, security protocols, anonymity, and digital cash.
COMP 4721 Computer Security (4 Credits)
This course gives students an overview of computer and system security along with some cryptography. Some network security concepts are also included. Other concepts include coverage of risks and vulnerabilities, policy formation, controls and protection methods, role-based access controls, database security, authentication technologies, host-based and network-based security issues. Prerequisite: COMP 3361.
COMP 4722 Network Security (4 Credits)
Network Security covers tools and techniques employed to protect data during transmission. It spans a broad range of topics including authentication systems, cryptography, key distribution, firewalls, secure protocols and standards, and overlaps with system security concepts as well. This course will provide an introduction to these topics, and supplement them with hands-on experience. In addition, students will perform an extensive analysis, or development of a security related product independently.
Prerequisites: (COMP 3721 or COMP 4721) or permission of instructor.
COMP 4723 Ethical Hacking (4 Credits)
Ethical hacking is the process of probing computer systems for vulnerabilities and exposing their presence through proof-of-concept attacks. The results of such probes are then utilized in making the system more secure. This course will cover the basics of vulnerability research, foot printing targets, discovering systems and configurations on a network, sniffing protocols, firewall hacking, password attacks, privilege escalation, rootkits, social engineering attacks, web attacks, and wireless attacks, among others.
Prerequisites: COMP3361 or Permission of Instructor.
COMP 4799 Capstone Project in Cybersecurity (4 Credits)
The purpose of the cybersecurity capstone project is to provide an integrative experience that ties together the learning outcomes from academic coursework undertakings and industry skills necessary to be productive in delivering an end product. Students will engage in one of many options available, such as involvement in a research project, a case study, a product development project, or an extensive survey paper. Capstone projects are presented at the end of the quarter in front of a representative group.
COMP 4991 Independent Study (1-10 Credits)
Cannot be arranged for any course that appears in regular course schedule for that particular year.
COMP 4992 Directed Study (1-10 Credits)
COMP 4995 Independent Research (1-17 Credits)
Research projects undertaken in conjunction with a faculty member.
COMP 5991 Independent Study (1-17 Credits)
COMP 5995 Independent Research (1-17 Credits)