UNIVERSITY CATALOG: 2024-2025

Courses

COMP 100. Computers: Their Impact and Use (3)

Not open to Computer Science majors. Introduction to the uses, concepts, techniques and terminology of computing. Places the possibilities and problems of computer use in historical, economic and social contexts. Shows how computers can assist in a wide range of personal, commercial and organizational activities. Typical computer applications, including word processing, spreadsheets and databases. (Available …

COMP 102/L. Programming for Data Applications and Lab (2/1)

Prerequisite: Multiple Measures Placement in GE-level Mathematics, or credit in MATH 093 or MATH 196QR or MATH 196S or equivalent. Corequisite: COMP 102L. Programming, using the Python programming language, with a focus on data manipulation and processing in contexts outside of traditional computing. No prior programming experience is required. Lab: 3 hours per week. (Available …

COMP 108. Orientation to Computer Science (3)

Prerequisite: Multiple Measures Placement in GE-level Mathematics, or credit in MATH 093 or MATH 196QR or MATH 196S or equivalent. Not a required course in the major. Recommended for incoming Computer Science majors with limited computing experience as well as those considering a major in Computer Science. Introduction to the Computer Science major and profession. Main …

COMP 110/L. Introduction to Algorithms and Programming and Lab (3/1)

Prerequisite: Grade of “C-” or better in MATH 102, MATH 103, MATH 104, MATH 105, MATH 150A or MATH 255A. Corequisite: COMP 110L. Introduction to algorithms, their representation, design, structuring, analysis and optimization. Implementation of algorithms as structured programs in a high level language. Lab: 3 hours per week.

COMP 111A/L. Introduction to Algorithms and Programming A and Lab (2/1)

Prerequisite: Multiple Measures Placement in GE-level Mathematics, or credit in MATH 093 or MATH 196QR or MATH 196S or equivalent. Corequisite: COMP 111AL. Recommended for incoming Computer Science majors with minimal prior experience programming in a high level language. Introduction to the Computer Science major and profession with a focus on developing problem solving, algorithm …

COMP 111B/L. Introduction to Algorithms and Programming B and Lab (2/1)

Prerequisites: COMP 111A/L; Grade of “C-” or better in MATH 102, MATH 103, MATH 104, MATH 105, MATH 150A or MATH 255A. Corequisite: COMP 111BL. Introduction to algorithms, their representation, design, structuring, analysis and optimization. Implementation of algorithms as structured programs in a high level language. The second of a two-course sequence for those not …

COMP 122/L. Computer Architecture and Assembly Language and Lab (3/1)

Prerequisites: Grade of “C-” or better in COMP 110/L or COMP 111B/L; Grade of “C-” or better in MATH 103, MATH 104, MATH 105, MATH 150A or MATH 255A; Lower division writing requirement. Corequisite: COMP 122L. Introduction to computer architecture, assembly language programming, system software and computer applications. Number systems and data representation. Internal organization of …

COMP 182/L. Data Structures and Program Design and Lab (3/1)

Prerequisites: Grade of “C-” or better in COMP 110/L or COMP 111B/L; MATH 103, MATH 104, MATH 105, MATH 150A or MATH 255A; Lower division writing requirement. Corequisite: COMP 182L. Introduction to data structures and the algorithms that use them. Review of composite data types, such as arrays, records, strings and sets. Role of the …

COMP 222. Computer Organization (3)

Prerequisites: Grade of “C-” or better in COMP 122/L and COMP 182/L. Extension of basic addressing concepts to more advanced addressability, such as base register and self-relative addressing. Comparative computer architecture focusing on such organizations as multiple register processors and stack machines. Basics of virtual memory input-output. Introduction to the concept of microprogrammable systems. Low-level …

COMP 256/L. Discrete Structures for Computer Science and Lab (3/1)

Prerequisites: Grade of “C-” or better in each of COMP 182/L, MATH 150A, and PHIL 230. Corequisite: COMP 256L. Study of discrete mathematical structures and proof techniques as used in computer science. Discrete structures, such as functions, relations, sets, graphs and trees. Proof techniques, such as proof by induction, proof by contradiction and proof by …

COMP 282. Advanced Data Structures (3)

Prerequisites: Grade of “C-” or better in COMP 182/L and MATH 150A. Introduction to advanced data structures (particularly persistent structures) using object-oriented design. Main memory structures, hash tables and trees. Architectural foundations for files. Large-scale sorting. Hash-based persistent structures. Indexed files. Introduction to databases.

COMP 300. Computer Fluency (3)

Prerequisite: Completion of the lower division writing requirement. Does not provide credit toward Computer Science major. Study of fundamental computing concepts related to: information technology, data and its digital representation, technological power, computing limitations and social impact. Survey of essential and advanced applications designed to process different forms of information other than text. Promote such computing …

COMP 310. Automata, Languages and Computation (3)

Prerequisite: Grade of “C-” or better in either COMP 256/L or MATH 326. Study of the relation of languages (defined as sets of strings) and machines for processing these languages, with emphasis on classes of languages and corresponding classes of machines. Phrase structure languages and grammar. Types of grammar and classes of languages. Regular languages …

COMP 322/L. Introduction to Operating Systems and System Architecture and Lab (3/1)

Prerequisite: “C-” or better in COMP 222 or CIT 210/L, or ECE 422 and ECE 425/L. Corequisite: COMP 322L. Examination of the principal types of systems, including batch, multi-programming and time-sharing. Discusses networked system. Considers the salient problems associated with implementing systems, including interrupt of event driven systems, multitasking, storage and database management and input-output. Emphasizes …

COMP 324. Computer Networking and Security (3)

Prerequisite: Grade of “C-” or better in COMP 282. Architecture of networks and the Internet, Internet protocols, network layers. Analysis of the need for computer system and network security, operating system and network security techniques. Societal issues related to securing computers and networks.

COMP 333. Concepts of Programming Languages (3)

Prerequisite: Grade of “C-” or better in COMP 282. Discussion of issues in the design, implementation and use of high-level programming languages through a historical framework, including how languages reflect different design philosophies and use requirements and the technical issues in the design of main abstraction constructs of programming languages. Other approaches to imperative or …

COMP 380/L. Introduction to Software Engineering and Lab (2/1)

Prerequisites: “C-” or better in CIT 270/L or COMP 282; “C-” or better in PHIL 230 or ECE 320/L; and GE Basic Skills Section A1 Oral Communication. Corequisite: COMP 380L. Concepts and techniques for systems engineering, requirements analysis, design, implementation and testing of large-scale computer systems. Principles of software engineering for production of reliable, maintainable …

COMP 410. Logic Programming (3)

Prerequisites: Grade of “C-” or better in COMP 380/L. Programming techniques in the logic programming language PROLOG. Prenex conjunctive normal form and grammatical algorithms. Tableaux, sequenzen, resolution and other semi-decision procedures. Closures of relations, fixed point theory, control mechanisms, relationship to functional programming. Available for graduate credit.

COMP 424. Computer System Security (3)

Prerequisites: Grade of “C-” or better in COMP 324, or IS 435. Analysis of the need for computer system security and the security techniques in operating systems, databases and computer networks. Supporting techniques, such as auditing, risk analysis and cost-benefit tradeoffs, are discussed. Available for graduate credit.

COMP 429. Computer Network Software (3)

Prerequisite: Grade of “C-” or better in COMP 324. Basic software design and analysis considerations in networking computers into coherent, cooperating systems capable of processing computational tasks in a distributed manner. Network topology, routing procedures, message multiplexing and process scheduling techniques. Available for graduate credit.

COMP 430. Language Design and Compilers (3)

Prerequisites: Grade of “C-” or better in COMP 310 and COMP 380/L. Examination of the issues involved in the design and subsequent implementation of programming languages. Considerations of implementation difficulties, including various features in a programming language. Tools and techniques to facilitate both the processing of programming languages and the building of programming processors. Available …

COMP 440. Database Design (3)

Prerequisites: Grade of “C-” or better in COMP 380/L. Database structure, including: structure definition, data models, semantics of relations and operation on data models. Database schemas, including element definition and use and manipulation of the schema. Elements of implementation. Algebra of relations on a database. Hierarchical databases. Discussion of information retrieval, reliability, protection and integrity …

COMP 442. Machine Learning Principles (3)

Prerequisites: COMP 182/L and MATH 444; or Grades of “C-” or better in COMP 380/L and MATH 340. A study of the concepts, principles, techniques, and applications of machine learning. Topics include concept-based learning, information-based learning (decision trees and ID3 algorithms), rule-based learning (association rules, learning ordered rules, learning unordered rules, and descriptive rule learning), …

COMP 465/L. Computer Graphic Systems and Design and Lab (2/1)

Prerequisite: Grade of “C-” or better in MATH 262. Corequisite: COMP 465L. Fundamental concepts of computer graphics. Graphics devices; graphics languages; interactive systems. Applications to art, science, engineering and business. Trade-offs between hardware devices and software support. Lab: 3 hours per week. Available for graduate credit.

COMP 467. Multimedia Systems Design (3)

Prerequisites: Grade of “C-” or better in COMP 380/L. Study of fundamentals of multimedia storage, processing, communication, presentation and display by digital means with emphasis on audio, still images and video media. Includes sampling theory, compression techniques and synchronization. Discussion of hypermedia and methodology issues. Multimedia programming; software tools for authoring multimedia applications and interfaces. …

COMP 482. Algorithm Design and Analysis (3)

Prerequisites: Grade of “C-” or better in COMP 282; Grade of “C-” or better in any of COMP 256/L, MATH 320, or MATH 326. The analysis of algorithms, in terms of time and space complexity for best/average/worst case execution using asymptotic notation; the application of standard algorithmic approaches, including greedy, divide and conquer, and dynamic …

COMP 484/L. Web Engineering I and Lab (2/1)

Prerequisites: Grade of “C-” or better in any of COMP 322/L, COMP 380/L, or CIT 360. Corequisite: COMP 484L. Internet infrastructure and the underlying networking technologies. Study of system and software architectures for web applications, e-business and e-commerce systems. Principles of website design. Advances in web-engineering technologies. Principles of web-based based transaction processing. XML and …

COMP 485. Human-Computer Interaction (3)

Prerequisites: Grade of “C-” or better in either COMP 380/L or CIT 360. Examines the information exchange between humans and computer systems. Discusses aspects of input/output devices, software engineering and human factors with respect to human-computer interactions. Topics include text and graphic display; user modeling; program design, debugging, complexity and comprehension; and current research studies …

COMP 488. Advanced Practicum in Information Technology (2-2-2)

Prerequisite: Department consent. This is a practicum designed to extend and enhance the information and concepts within the COMP curriculum. The focus of this course is to provide students with hands-on experience in the design, development, and deployment of IT-based systems. Students will gain practice in the development of web applications deployed at scale, as …

COMP 490/L. Senior Design Project I and Lab (2/1)

Prerequisites: Grade of “C-” or better in COMP 380/L. Corequisite: COMP 490L. Project-oriented course to allow students to apply their knowledge of software engineering to the design and implementation of a system to solve a real-world problem. Students select and specify a suitable problem, investigate design alternatives and select an appropriate one, implement a solution …

COMP 491/L. Senior Design Project II and Lab (2/1)

Prerequisites: Grade of “C-” or better in COMP 490/L. Corequisite: COMP 491L. Project-oriented course to allow students to apply their knowledge of software engineering to complete the implementation and testing of the team-based senior design project they proposed and designed in COMP 490/L. Topics in this course include Agile software development process, software project management …

COMP 492. Projects in Data Science (3)

Prerequisites: Grade of “C-” or better in both COMP 442 and MATH 445. Students will gain practical experience in the field of data science by applying their knowledge of software engineering and statistical data analysis to one or more real datasets. Students select and specify a suitable data analysis problem, investigate questions and hypotheses that …

COMP 494A-C. Academic Internship (1-3)

Prerequisites: Junior standing or above in major; Prior approval of the department. Academic internship training program. Supervised off-campus professional computing experience for selected computer science students. Academic internship units do not count toward General Education units or major requirements. Maximum of 6 units of enrollment is allowed. Only one enrollment per semester permitted. (Credit/No Credit …

COMP 502. Programming for Data Science and Analytics (3)

Prerequisite: Admission to M.S. in Engineering Management or instructor consent. A study of fundamental concepts and techniques of programming and problem-solving techniques for data science in Python. Topics include Python basics, data visualization in Python, and the use of Python libraries to perform data manipulation and analysis. Does not provide credit toward the Minor in …

COMP 521/L. Advanced Operating Systems and Lab (2/1)

Prerequisite: COMP 322/L. Corequisite: COMP 521L. In-depth discussion of selected issues related to the study of operating systems. Areas of coverage may include concurrency issues, resource allocation, storage management and multiprocessor environments. Discusses underlying theory and algorithms related to the issues.

COMP 522. Embedded Applications (3)

Prerequisites: COMP 322/L. Embedded systems present cost effective, challenging and flexible computational platforms. Instruction in the unique aspects of embedded systems including architectures, instruction sets, development environments, concurrent programming, networking, applications of embedded platforms, data acquisition from sensors and interaction with surrounding environment.

COMP 528. Mobile Computing (3)

Prerequisites: COMP 322/L or COMP 380/L. Issues related to the design, development, networking, and deployment of mobile computing system for pervasive and mobile applications.

COMP 528L. Mobile Computing Laboratory (1)

Prerequisites: COMP 322/L or COMP 380/L. Issues related to the design, development, networking, and deployment of mobile computing system for pervasive and mobile applications. 3 hours of laboratory per week.

COMP 529/L. Advanced Network Topics and Lab (2/1)

Prerequisites: COMP 429; MATH 340. Corequisite: COMP 529L. Architectural principles: naming, addressing, routing; congestion control, traffic management, QoS; wireless networks; overlay networks and virtualization; queueing theory; measurements; network security; switching and routing; content distribution; and proposals for future Internet structures.

COMP 535/L. Parallel and Distributed Computing and Lab (2/1)

Prerequisites: COMP 282 and COMP 322/L. Corequisite: COMP 535L. A study of the concepts, principles, techniques and applications of parallel and distributed computing. Topics include system architectures, parallel programming patterns, computer cluster architectures, job scheduling and resource management, GPU architecture and programming, virtual machine and virtualization, distributed storage and file systems, cloud computing, with focus …

COMP 539. Network Infrastructure (3)

Prerequisite: COMP 424 or COMP 429. Topics regarding the implementation and administration of network and information infrastructure components will be presented. Issues covered include security administration, packet filtering, proxy services and virus protection. Fundamentals of administering information services such as SMTP, DNS, LDAP and HTTP will be investigated. Internet infrastructure administration and routing protocols such …

COMP 541. Data Mining (3)

Prerequisites: COMP 380/L or equivalent; MATH 340 or MATH 341 or equivalent. Recommended Preparatory: Knowledge of Python programming. A study of the concepts, theories, techniques, and applications of data mining. Topics include data collection, data exploration, data preprocessing, data warehousing, OLAP, data modeling, model evaluation and deployment. Various data mining modeling techniques such as frequent …

COMP 542. Machine Learning (3)

Prerequisites: COMP 380/L or equivalent; MATH 262 or equivalent; MATH 340 or MATH 341 or equivalent. Recommended Preparatory: Knowledge of Python programming. A study of the concepts, theories, techniques, and applications of machine learning. Students will get exposure to a broad range of machine learning methods and hands on practice on real data. Topics may …

COMP 545. Cloud Computing (3)

Prerequisite: COMP 322/L. A study of the concepts, principles, techniques and applications of cloud computing. Topics include cloud infrastructures, cloud mechanisms, cloud architectures, cloud-base storage, and cloud delivery models, with focus on state-of-the-art tools and technologies. Students will gain hands-on experience through projects utilizing public cloud infrastructures.

COMP 560. Expert Systems (3)

Prerequisite: COMP 569. Extensive introduction to the concepts and techniques of expert systems. Rationale for such systems, including evaluation of prospective domains. Explores existing systems, those under development and likely future areas. Basic architecture is demonstrated using both example and rule-based systems. Commercial tools for building expert systems are surveyed and evaluated. Knowledge acquisition methods. …

COMP 565. Advanced Computer Graphics (3)

Prerequisites: COMP 322/L. This course will cover the theory, design, implementation and application of advanced computer graphics environments. Accelerated 3D graphics APIs; the modeling and simulation of light, sound, physical objects, motion and collisions; and user interaction in single- and multi-user virtual environments will be studied. The application domain for this class is interactive 3D …

COMP 569. Artificial Intelligence (3)

Prerequisites: COMP 380/L or equivalent; MATH 262 or equivalent; MATH 340 or MATH 341 or equivalent. A study of concepts, theories, and techniques of artificial intelligence. Focus is on complex problem-solving strategies for real world applications. Topics may include knowledge representation, logic and reasoning methods, state space search, heuristic search, game playing, question answering, symbol-based …

COMP 582. Software Requirements Analysis and Specification (3)

Prerequisites: COMP 380/L. An in-depth study of the early phases of the software development life cycle commonly called software requirements analysis and specification. Topics include the gathering of both functional and nonfunctional requirements, customer communication, requirements prototyping, requirements modeling, requirements validation, the documentation of requirements in terms of a formal software requirements specification, and the …

COMP 583. Software Engineering Management (3)

Prerequisites: COMP 380/L. Provides a framework for understanding software engineering management models, technologies, trends, tools and planning processes. Emphasizes the development of an individualized approach to managing software teams, projects and systems. The role of management as an increasingly critical factor in software engineering is examined.

COMP 584. Advanced Web Engineering (3)

Prerequisites: COMP 380/L. A study of the concepts, principles, techniques and methods of Web engineering. Topics include requirements engineering, modeling and architectures, design and technologies, testing, operation and maintenance, Web project management, application development process, usability, and performance and security of Web applications. Technologies, business models and strategies and societal issues of Web 2.0 and …

COMP 585. Graphical User Interfaces (3)

Prerequisites: COMP 322/L, COMP 380/L. The design, development and analysis of programs requiring graphical, direct manipulation and user interfaces (GUIs) will be examined. The majority of modern software includes a GUI. The development tools, environments and style guides for common GUIs will be used in course assignments and discussed in lecture. The course involves the …

COMP 586. Object-Oriented Software Development (3)

Prerequisites: COMP 322/L, COMP 380/L. Review of object-oriented concepts. Comparison with functional methods. Benefits and pitfalls of object orientation. Fundamentals of object-oriented modeling—associations, links and states. Survey of object-oriented development methods. In-depth study of a current object-oriented method. Object-oriented software requirements analysis and modeling. Object-oriented preliminary design. Designing concurrent and multiprocessor systems. Object-oriented detailed design. …

COMP 587. Software Verification and Validation (3)

Prerequisites: COMP 380/L. An-in depth study of verification and validation strategies and techniques as they apply to the development of quality software. Topics include test planning and management, testing tools, technical reviews, formal methods and the economics of software testing. The relationship of testing to other quality assurance activities as well as the integration of …

COMP 589. Software Metrics (3)

Prerequisites: COMP 380/L; MATH 340. The role of metrics and quantitative models in software development. Product metrics, process metrics, measurement models and techniques for empirical validation. Measurement and analysis. Implementation of a metrics program. Measuring software size, complexity and functionality at different stages of software development. Use of measures to predict effort and schedule required for …

COMP 595A-Z. Experimental Topics Courses (3)

Course content to be determined.

COMP 598A-Z. Advanced Selected Topics (1-4)

Prerequisite: Instructor consent.

COMP 610. Data Structures and Algorithms (3)

Prerequisites: COMP 310; MATH 482. Topics include design strategies for data structures and algorithms, theoretical limits to space and time requirements time/space trade offs, and open problems in the field.

COMP 615. Advanced Topics in Computation Theory (3)

Prerequisites: COMP 310; MATH 482. Languages and the theory of computation are studied in depth. Covers advanced material concerning regular and context free languages. Study of deterministic context-free languages, context sensitive languages, recursive and recursively enumerable sets. Investigation of current areas of interest.

COMP 620. Computer System Architecture (3)

Prerequisites: COMP 322/L, COMP 380/L. Analysis and evaluation of individual computers, networks of computers and the programs that support their operation and use. Emphasis on comparison of architectures and the risks and benefits associated with various approaches and configurations.

COMP 630. Formal Semantics of Programming Languages (3)

Prerequisites: COMP 310, COMP 380/L. Rigorous verification and formal proofs of correctness. Denotational semantics, models of axiomatic systems and fixpoint theory of computation. Soundness and completeness of programming logics. Abstract data types and other issues in the formal definition of programming languages.

COMP 639. Probability and Statistics for Data Science (3)

Prerequisites: Completion of MATH 340 or MATH 341 with a grade of “C” or better; COMP 502. Recommended Preparatory: Knowledge of Python programming. A study of fundamental concepts in probability and statistics from a data science perspective. Topics in probability include probability spaces, random variables, multivariate random variables, expectation, convergence of random variables. Topics in …

COMP 640. Database System Design (3)

Prerequisites: COMP 282; COMP 502. Recommended Preparatory: Knowledge of Python programming. A study of the concepts, theories, techniques of database system design and database programming. Topics include the relational database model, formal and commercial database languages (relational algebra and SQL), database design, query processing and optimization, formal database design (normalization), active database, cloud database, transaction …

COMP 641. Fundamentals of Data Science (3)

Prerequisites: MATH 262 or equivalent; COMP 639 or MATH 340 or MATH 341 or equivalent; COMP 282 or equivalent; COMP 502. Recommended Preparatory: Knowledge of Python programming. A study of fundamental concepts, theories, techniques, and applications of data science. The focus is on the use of data science methods to improve decision making. Topics include …

COMP 642. Advanced Databases and Data Visualization (3)

Prerequisites: COMP 440 or COMP 640; COMP 502. Recommended Preparatory: Knowledge of Python programming. A study of the advanced concepts, theories, techniques, and applications of advanced databases and data visualization. Topics include data models, storage, management, query processing, and analytics. Databases may include NoSQL, columnar, document, key-value, in-memory, and graph. Apply visualization techniques to represent …

COMP 643. Deep Learning (3)

Prerequisites: COMP 442 or COMP 641 or COMP 542; COMP 502. Recommended Preparatory: Knowledge of Python programming. A study of the advanced concepts, theories, techniques, and applications of deep learning. Topics may include feedforward nets, optimization of neural models, supervised and unsupervised neural architectures, advanced convolutional nets, generative learning, neural reinforcement learning, neural sequence learning, …

COMP 644. Big Data (3)

Prerequisites: COMP 442 or COMP 542; COMP 440 or COMP 640; COMP 502. Recommended Preparatory: Knowledge of Python programming. A study of the advanced concepts, theories, techniques, and applications of big data. Topics may include big data characteristics and challenges, generation, integration, storage, management, retrieval, and analytics with machine learning techniques for large-scale data clusters. …

COMP 680. Advanced Topics in Software Engineering (3)

Prerequisites: COMP 322/L, COMP 380/L. New and emerging software engineering technologies and practices covering: principles, concepts, methods, notations, formalisms, techniques, and tools. Study of these technologies and practices from a practical as well as from a theoretical perspective. Explore current problems underlying the development of large software systems and approaches for dealing with them.

COMP 684. Software Architecture and Design (3)

Prerequisites: COMP 380/L, COMP 582. Techniques, methods and tools for designing, building, analyzing and evaluating the structural, architectural and behavioral properties of software systems. It includes the study of the fundamental concepts and principles of software architectural design, structured design, object-oriented design, component-level design and design for reuse.

COMP 695A-Z. Experimental Topics Courses (3)

Course content to be determined.

COMP 696A,C. Directed Graduate Research (1,3)

Prerequisite: Permission of project/thesis committee chair. (Credit/No Credit only)

COMP 698DS. Graduate Project (3)

Prerequisites: Advisor approval. By completing a graduate project, students will get an opportunity to apply the knowledge and skills gained throughout the Data Science program to a real-world problem. During the project, students engage in the entire process of collecting and processing data, applying suitable and appropriate analytical and computational principles as well as methods …