Computer Science (COMP)
COMP 1101 Analytical Inquiry I (4 Credits)
Students explore the use of mathematics and computer programming in creating animations. Students create animations on their laptop computers using animation software. This course counts toward the Analytical Inquiry: The Natural and Physical World requirement.
COMP 1571 Procedural Programming I (3 Credits)
The C programming language is used to introduce fundamental procedural programming including engineering applications. Programming topics include an overview of computers and programming languages, variables and data types, arithmetic operators, input/output, comments, control structures, user-defined functions, scope, constants, file I/O, and pointers. Prerequisite: high school algebra.
COMP 1572 Procedural Programming II (3 Credits)
The Java programming language is used to introduce object-oriented programming. Topics include fundamental object-oriented concepts, class design and implementation, inheritance, polymorphism, exceptions, and event-driven programming. Prerequisite: COMP 1571.
COMP 1670 Introduction to Computing (4 Credits)
Overview of computing, including history and impact, use of computer as a tool in various disciplines, logical process of problem solving, and concepts of programming using a high-level language. Appropriate for students who wish to learn more about computers but are not planning to continue in computer science. This course counts toward the Analytical Inquiry: The Natural and Physical World requirement.
COMP 1671 Introduction to Computer Science I (4 Credits)
Characteristics of modern computers and their applications; analysis and solution of problems; structure programming techniques; introduction to classes, abstract data types and object-oriented programming. This course counts toward the Analytical Inquiry: The Natural and Physical World requirement. Prerequisite: high school algebra.
COMP 1672 Introduction to Computer Science II (4 Credits)
Advanced programming techniques; arrays, recursion, dynamic data structures, algorithm abstraction, object-oriented programming including inheritance and virtual functions. Prerequisite: COMP 1671.
COMP 1771 Introduction to Computer Science 1 - Honors (4 Credits)
This is an honors section of Introduction to Computer Science 1 meant for incoming freshman who are already experienced in computer programming. This course is meant to be faster paced than its counterpart COMP 1672/1671. This course counts toward the Analytical Inquiry: The Natural and Physical World requirement. Prerequisite: AP credit in Java, at least one quarter of programming, or permission of instructor.
COMP 1991 Independent Study (1 Credit)
COMP 1992 Directed Study (1-10 Credits)
COMP 2001 Bridge Course I: Computer Science Theory Basics (4 Credits)
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 additon, it includes an introduction to programming and algorithm analysis.
COMP 2002 Bridge Course II: Computer Science Theory Advanced (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 2001.
COMP 2003 Bridge Course III: Computer Science Systems Basics (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 additon, it includes an introduction to C programming language. In particular, standard I/O, data manipulation, pointers, and dynamic memory management.
COMP 2004 Bridge Course IV: Computer Science Systems Advanced (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 2003.
COMP 2300 Discrete Structures in Computer Science (1-4 Credits)
Number systems and basic number theory, propositional and predicate logic, proof techniques, mathematical induction, sets, counting and discrete probability, case studies with applications from computer science, such as data representation, algorithm analysis and correctness, and system design.
COMP 2355 Intro to Systems Programming (4 Credits)
The prerequisites for this class are a good understanding of imperative and object-oriented programming in Java. The prerequisites for this class include a good understanding of basic programming constructs, such as branches (if, switch), loops (for, while, do), exceptions (throw, catch), functions, objects, classes, packages, primitive types (int, float, boolean), arrays, arithmetic expressions and boolean operations.
Computer organization is a parallel prerequisite; if possible, students should register for both this course and COMP 2691. You must have a good understanding of basic data structures such as arrays, lists, sets, trees, graphs and hash-tables. This is a class on systems programming with focus on the C programming language and UNIX APIs. There will be programming assignments designed to make you use various Debian GNU/Linux system APIs. Programming assignments involve writing code in C or C++. Prerequisite: COMP 2673.
COMP 2370 Introduction to Algorithms & Data Structures (4 Credits)
Performance analysis of algorithms; data structures and their physical storage representation; recursive techniques; stacks, queues, lists, trees, sets, graphs; sorting and searching algorithms. Prerequisites: MATH 2200 or COMP 2300 and COMP 2673.
COMP 2400 Software Tools (4 Credits)
Introduction to tools for program development and efficient use of a workstation environment. Topics include UNIX commands, emacs environment, X-windows, separate compilation of large projects, user-defined libraries, makefiles, intelligent debugging, perl, HTML, rcs/sccs, tcl/tk and assorted additional topics. Prerequisite: COMP 2370 or instructor's permission.
COMP 2555 Principles of Computer Forensics (4 Credits)
Data recovery techniques, auditing methods and services, data seizure, preservation of computer evidence, reconstruction of events, and information warfare. Prerequisite: COMP 1672 or programming experience.
COMP 2673 Introduction to Computer Science III (4 Credits)
An introduction to several advanced topics in computer science. Topics vary from year to year and may include any of the following: theory of computing, cryptography, databases, computer graphics, graph theory, game theory, fractals, mathematical programming, wavelets, file compression, computational biology, genetic algorithms, neural networks, simulation and queuing theory, randomized algorithms, parallel computing, complexity analysis, numerical methods. Prerequisite: COMP 1672 or COMP 1771.
COMP 2691 Introduction to Computer Organization (4 Credits)
This course covers basic topics in Computer Organization and is a required course in the BS in Computer Science, BS in Game Development, and BS in Computer Engineering degrees. Topics include: instruction set architectures, integer and floating point arithmetic, processors, memory systems, and topics in storage and Input/Output.
COMP 2701 Topics in Computer Science (1-5 Credits)
COMP 2821 Introductory Game Design (4 Credits)
Learn the fundamental game design practices and how to transition from a design, to a prototype, to a final game. This course covers theory, design, 2D game art, and culminates in the creation of a (simple) 2D computer game. Prerequisites: COMP 1672 or COMP 1771 or DMST 2100.
COMP 2901 Computing and Society (4 Credits)
This course is designed to explore the social implications of computing practices, organization and experience. These topics and other issues are correlated with examples from the older and modern history of technology and science. Some formal experience with computing is assumed, but students who have a good familiarity with ordinary computing practice should be ready. Students are also expected to contribute their expertise in one or more of the areas of their special interest. Cross listed with DMST 3901.
COMP 2992 Directed Study (1-10 Credits)
COMP 3000 Seminar: The Real World (1 Credit)
Series of lectures by alumni and others on surviving culture shock when leaving the University and entering the job world. Open to all students regardless of major. Cross listed with MATH 3000.
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 3432 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 and 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 taking the course, students will have a working knowledge of these approaches and experience applying them to learning problems.
Enforced Prerequisites: COMP 2370 and COMP 2355.
COMP 3441 Introduction to Probability and Statistic 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.
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 3721 Computer Security (4 Credits)
This course gives students an overview of computer 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 3722 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. Prerequisites: COMP2355 and COMP3721, or permission of instructor.
COMP 3723 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.
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 3831 Game Capstone I (2-4 Credits)
Students design, build, test and debug a fully working game from scratch. Both art and programming are developed by the student teams with the instructor acting as a project manager to ensure that goals are met through the 10-week development process through various milestones. In addition to building the game, students learn group collaboration, software processes, testing, and the methodology for researching new game concepts to implement in their final project. Prerequisite: COMP 3821.
COMP 3832 Game Capstone II (2-4 Credits)
Students design, build, test and debug their existing game from Game Capstone I. Both art and programming are developed by the student teams with the instructor acting as a project manager to ensure that goals are met through the 10-week development process through various milestones. In addition to building the game, students alter their game design document to add new features, making corrections to prior design issues, and focus on making the game playable and "fun." Prerequisite: COMP 3831.
COMP 3833 Game Capstone III (2-4 Credits)
Students design, build, test and debug their working game from Game Capstone II. Both art and programming are developed by the student teams with the instructor acting as a project manager to ensure that goals are met through the 10-week development process through various milestones. In addition to building the game, students modify their design document and implement changes in their game, create new concept art for the features, build an introduction level into their game, test the game with "Play testers", and focus on creating a game that is "fun" to play. By the end of the quarter, their game is ready for distribution on an appropriate platform. Prerequisite: COMP 3832.
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 3995 Independent Research (1-10 Credits)