Reference your catalog year
2025-26 BS in Computer Science
2025-26 BA in Computer Science
Explore computer science courses currently offered
- Computer Science Courses
- Major Requirements
- Minor Requirements
COMP 110
Computational Problem Solving
Units: 3.5
An introduction to computational problem solving using the Python programming language. Students will learn the fundamental building blocks that apply across languages that will help them apply computational thinking to solve problems across disciplines. Students will learn to work with tools used in the industry to support the coding process. This class is appropriate as an initial introduction to programming for those who would like to major in computer science and for students who would like basic programming skills to apply to their field of study. Prerequisites: (MATH 115 or MATH 133 or MATH 150 or MATH 151 completed or concurrent) or (math placement exam qualification for MATH 133 or MATH 150 ) or permission of the instructor.
COMP 120
Programming Abstractions and Methodologies
Units: 3.5
A continuation of computational problem solving in the Python programming language. Students will explore new programming paradigms and data structures to accurately model advanced problems while reducing complexity through the use of abstraction. Students will also use formal methods to decide between multiple solutions to a computational problem. This course is appropriate for students pursuing computer, data, or cognitive science majors/minors and those in fields such as business analytics, natural sciences, or engineering, where computational fluency is a key skill. Prerequisite: COMP 110 with a grade of C- or better.
COMP 230
Advanced Computational Problem Modeling
Units: 3.5
Advanced data structures (e.g. graphs, priority queues, quad trees, etc.) from the perspective of solving advanced computational problems. Students will learn to program in the Java programming language using object-oriented features such as inheritance, interfaces and generics. Prerequisites: COMP 120 with a grade of C- or better, and (MATH 260 with a grade of C- or better, or MATH 262 with a grade of C- or better)
COMP 280
Introduction to Computer Systems
Units: 3.5
Introduction to computer systems; data representation; machine/assembly languages; memory organization; virtual memory; and concurrency. Prerequisites: COMP 120 with a grade of C- or better.
COMP 294
Special Topics in Computer Science
Units: 1 TO 4
Special topics course in areas of special interest to computer science. May be repeated for credit with a different topic.
COMP 299
Independent Study
Units: 1 TO 3
Individual study including library or laboratory research or program writing. A written report is required. Project proposal must be submitted and approved prior to enrollment. May be repeated for credit.
COMP 300
Principles of Digital Hardware
Units: 3.5
Combinational and sequential logic, registers, arithmetic units. Introduction to computer architecture. Three lectures and one laboratory per week. Prerequisites: COMP 280 with a grade of C- or better.
COMP 305
Object-Oriented Software Design
Units: 3.5
In this course, we will focus on how we can use object-oriented principles including inheritance, encapsulation, abstraction, and polymorphism to develop robust software projects. You will learn how to use design patterns and frameworks within your projects and engage in best practices for software design including writing clean code, conducting code reviews, and refactoring code. As part of this process, you will learn how to design your project and classes, write robust tests, and document your projects in a way that allows you to effectively communicate the project to others. Prerequisites: COMP 230 with a grade of C- or better.
COMP 310
Operating Systems
Units: 3.5
Principles of computer operating systems; process management; memory management; file systems; protection; deadlock. Concurrent programming. Prerequisites: COMP 280 with a grade of C- or better.
COMP 331
User-Centered Design and Prototyping
Units: 3
To develop effective software products, Human-Computer Interaction (HCI) methods are needed to align user needs with the product design. Some considerations in this design are how to maximize usefulness and enjoyment while reducing frustration and human error. HCI methods draw from a range of disciplines including computer science, cognitive science, and design. In this course, we will engage in a user-centered approach to this design problem including ideation, evaluation of systems based on design principles, gathering and evaluation of user needs, and rapid prototyping and testing of designs. Prerequisite: COMP 110.
COMP 332
Human-Centered Systems
Units: 3
Computing systems are everywhere in our daily lives as tools to complete tasks and guiding our decisions through providing information. In this course, we will discuss the interaction techniques through which we use these systems. As part of this conversation we will discuss different forms of human-centered systems such as personal computing, VR/AR, robotics, ubiquitous computing, and social computing and principles of human factors that guide the design of these systems. Prerequisite: COMP 120.
COMP 333
Human-Centered Data Science
Units: 3
Data is constantly being collected through our everyday computing devices and one question is what do we do with it. With human-centered systems, data can be used to both provide users with a better experience, test the current experience, and provide information to the user. In this class, we will address how to measure the effectiveness of a user system - including the collection of data and testing, the use of machine learning to support human behaviors, and how to visualize data for humans to interpret along with the ethics of this data collection and use. Prerequisite: COMP 110, and (MATH 115 or MATH 130 or MATH 133 or MATH 150).
COMP 340
Numerical Analysis
Units: 3
Approximate computations and round-off errors; Taylor expansions; numerical solution of equations and systems of equations; systems of linear equations; numerical integration; numerical solution of differential equations; interpolation; and problem solving on the computer. Prerequisites: (COMP 110 with a grade of C- or better or COMP 150 with a grade of C- or better), and MATH 151 with a grade of C- or better. Cross-listed as MATH 340.
COMP 341
Numerical Analysis II
Units: 3
Estimation of eigenvalues and eigenvectors of matrices; numerical solutions of differential equations, existence, and stability theory; and computer lab assignments. Prereq: MATH 250, 320, 330 (may be taken concurrently), and COMP 340, all with a grade of C- or better. Cross-listed as MATH 341.
COMP 345
Database Management Systems Design
Units: 3
Introduction to database concepts; data models; query facilities; and file organization and security. Prerequisites: COMP 230 with a grade of C- or better.
COMP 350
Computer Graphics
Units: 3
The development of high-level, device-independent graphics routines; basic line drawing algorithms, text design, and other graphics primitives; 2-D representations of coordinate systems, image segmentation, and windowing. Prerequisites: COMP 230 with a grade of C- and MATH 320 with a grade of C- or better
COMP 351
Introduction to Artificial Intelligence
Units: 3
Recent advances in big data, computational power, smart homes, and autonomous vehicles have rendered artificial intelligence (AI) as a major technological revolution in engineering and computer science. The goal of this course is to introduce students to the fundamental principles, techniques, challenges, and applications of AI, machine learning, and natural language processing. Topics covered include heuristic search and optimization techniques, genetic algorithms, machine learning, neural networks, and natural language understanding. Several applications of AI will be explored including computer vision, pattern recognition, image processing, biomedical systems, internet of things, and robotics. Prerequisites: COMP 110 (Concurrently)
COMP 352
Data Science Foundations and Programming
Units: 3
This course is an introduction to fundamental concepts of data science, data science programming, and problem-solving techniques for data-driven problems. Python and R are the languages used to analyze and deliver insights from real-world datasets in this course. Topics include the basics of R, the application of Python to data science, data acquisition, integration and transformation, problem understanding, data preparation, standardization, and exploratory data analysis. In addition, command-line tools and editors are explored in UNIX, and methods to access and analyze RDBMS databases are examined. The course ends with introducing students to the basics of machine learning models. Prerequisites: COMP 110
COMP 353
Foundations of Machine Learning
Units: 3
This course provides a broad introduction to the fundamental concepts and techniques of machine learning. Students will gain a strong understanding of supervised and unsupervised learning algorithms, model evaluation methods, and practical applications of machine learning in computer science. The course covers both theoretical aspects and practical applications of machine learning, with a focus on optimization methods and problem-solving using real data. Topics to include linear and non-linear regression, two-class and multi-class classification, Support Vector Machines, Principal Component Analysis, K-means clustering, the essentials of feature engineering and selection, cross-validation, regularization, fully connected neural networks, and decision trees. Prerequisites: COMP 110 with a minimum grade of C-, MATH 151 with a minimum grade of C-, MATH 320 with a minimum grade of C-, and ISYE 330 with a minimum grade of C
COMP 355
Digital Modeling and Simulation
Units: 3
Mathematical modeling; probabilistic and deterministic simulations; pseudo-random number generators; event generators; queuing theory; game theory; and continuous models involving ordinary and partial differential equations. Prereq: COMP 305 with a grade of C- or better and MATH 151 with a grade of C- or better.
COMP 360
Principles of Programming Languages
Units: 3
The organization of programming languages with emphasis on language semantics; language definition, data types, and control structures of various languages. Prerequisites: COMP 230 with a grade of C- or better and (MATH 260 with a grade of C- or better, or MATH 262 with a grade of C- or better); COMP 280 is recommended.
COMP 365
Principles of Information Security
Units: 3
Introduction to fundamental concepts in cyber security: policies, threats, vulnerabilities, risk and controls; Identification and authentication; Access control; Cryptographic mechanisms: Ciphers, hashes, message authentication codes, and digital certificates; Malware, infection vectors, and mitigations; Attacks on various application domains, such as web applications; Tools and techniques for developing secure software. Prerequisites: COMP 280 with a grade of C- or better.
COMP 370
Automata, Computability and Formal Languages
Units: 3
Finite state machines; formal grammars; computability and Turing machines. Prerequisites: COMP 230 with a grade of C- or better and (MATH 260 with a grade of C- or better, or MATH 262 with a grade of C- or better).
COMP 375
Networking
Units: 3.5
Introduction to the design and implementation of computer and communication networks. The focus is on the concepts and the fundamental design principles that have contributed to the global Internet’s success. Topics covered will include MAC layer design (Ethernet/802.11), the TCP/IP protocol stack, routing algorithms, congestion control and reliability, and applications (HTTP, FTP, etc.) and advanced topics such as peer-to-peer networks and network simulation tools. Recent trends in networking such as multimedia networking, mobile/cellular networks and sensor networks will also be discussed. Prereq: COMP 280 with a grade of C- or better.
COMP 380
Neural Networks
Units: 3
A study of the fundamental concepts, architectures, learning algorithms and applications of various artificial neural networks, including perceptron, Kohonen self organizing maps, learning vector quantization, backpropagation, and radial basis functions. Prerequisites: COMP 230 with a grade of C- or better and MATH 320 with a grade of C- or better
COMP 382
Introduction to Data Mining
Units: 3
The course provides a comprehensive introduction to data mining with a primary focus on fundamental concepts, algorithms and applications of association analysis, classification and clustering modeling. It will also cover ethical issues related to data mining. Prerequisites: (COMP 230 with a grade of C- or better and ISYE 330 with a grade of C- or better), or permission of the instructor.
COMP 421
Embedded Software Development
Units: 3
Development of "bare metal" embedded software, running on a microcontroller with no operating system support. Real-time requirements for finishing tasks within a fixed interval of time and for responding to asynchronous events are emphasized, along with techniques for writing reliable code for a memory-constrained microcontroller. All code is written in C using freely available development tools. Prerequisites: COMP 280 with a grade of C- or better.
COMP 422
Advanced Embedded Software Development
Units: 3
Development of embedded software (firmware) using a real-time operating system (RTOS). Development of an application as a set of independent threads that communicate with each other via message queues and semaphores. Prerequisites: COMP 421 or GENG 421 with grade of C- or better.
COMP 430
Bioinformatics
Units: 3
To introduce the principles of genomics, transcriptomics, gene editing, and bioinformatics. In addition, students will be asked to consider the ethical and social issues related to gene editing. The learning objectives for this course are achieved through the use of computer simulations, bioinformatics toolkits, group discussions, and ethical case studies. The course will include a semester-long project in bioinformatics research methods and will include a presentation at the end of the semester.
COMP 480
Algorithms
Units: 3
Advanced theory of algorithms. Topics may include: algorithm analysis; algorithm design techniques; and computational complexity. Prerequisites: COMP 230 with a grade of C- or better and (MATH 260 with a grade of C- or better, or MATH 262 with a grade of C- or better).
COMP 491
Senior Project I
Units: 3
Students will develop professional skills in realistic software design and engineering, including human/computer interface design techniques, software architecture, teamwork, and project management, incorporating technical and non-technical considerations. Work will prepare students for implementing, testing and documenting the project in COMP 492, Senior Project II. Prerequisites: COMP 305 with a grade of C- or better and COMP 280 with a grade of C- or better.
COMP 492
Senior Project II
Units: 3
This course is the second semester of the required two semester senior capstone experience for the computer science majors. In this course, students working in teams integrate their training in computer science and other disciplines, to implement, test, and document a significant piece of software based on a design developed in the first semester of the capstone experience, COMP 491. Students document their work, and demonstrate it in multiple public venues. Prerequisites: COMP 491
COMP 494
Special Topics in Computer Science
Units: 1 TO 4
Special topics course in areas of special interest to computer science. May be repeated for credit with a different topic.
COMP 496
Undergraduate Research
Units: 0.5 TO 3
Faculty-directed undergraduate research in computer science. Problem proposal must be submitted and approved prior to enrollment. Written report required. Upper division standing in engineering. Prior approval by department chair is required. May be repeated for credit
COMP 498
Internship
Units: 1 TO 3
Practical experience in the application of the principles of computer science. Students will be involved in a software or hardware project. Enrollment is arranged on an individual basis according to the student’s interest, background, and the availability of positions. A written report is required. Units may not normally be applied toward the major or minor in computer science. COMP 498 may be repeated for a total of three units.
COMP 499
Independent Study
Units: 1 TO 3
Individual study including library or laboratory research or program writing. A written report is required. Project proposal must be submitted and approved prior to enrollment. May be repeated for credit.

