CIT 101/L. CIT Fundamentals (2/1)

Corequisite: CIT 101L. The discipline of CIT. Pervasive CIT themes; CIT history; organizational issues; relationship of CIT to other computing disciplines; application domains; application of math and statistics to CIT. Lab: 3 hours per week; covers installation and optimization of operating systems, system management utilities, applications, including word processing, spreadsheets and databases, virus checkers and spyware.

CIT 160/L. Internet Technologies (2/1)

Corequisite: CIT 160L. Architecture of the Internet; Internet protocols, including http, ftp, telnet; browser technologies; current developments in Internet technologies and usage characteristics; Hypertext; self descriptive text; webpage design; website design; ADA compliance; commercialization of the Internet; role of the Internet in CIT. Lab: 3 hours per week.

CIT 210/L. Deployment and Management of Operating Systems (3/1)

Prerequisites: CIT 101/L, COMP 122/L; Lower division writing requirement. Corequisite: CIT 210L. Introduction to the basic components of CIT systems, including networking, web systems, databases, scripting, system administration and maintenance, and system integration. A deeper study of operating system principles, network architecture and resource management, including shared resources.

CIT 270/L. Integrative Programming (3/1)

Prerequisites: CIT 160/L; COMP 182/L; MATH 103, MATH 150A or MATH 255A. Corequisite: CIT 270L. Role of integrative programming in information technology: operating systems, system management, application reuse. Tools and techniques for integrative programming, such as Perl, TCL/tk, VBscript and Python. Script programming development environments. Role of scripting in system installation and management. Client-server architecture. …

CIT 360/L. CIT System Management and Lab (2/1)

Prerequisites: CIT 210/L, CIT 270/L. Corequisites: CIT 360 and CIT 360L are corequisites of each other. Overview of enterprise system architecture, principles and practices of systems administration and system management including firewalls and proxy servers; networked file systems; user account management; resources allocation, installation and configuration of operating systems, startup and shutdown, booting, performance monitoring, …

CIT 480/L. CIT System Design and Implementation I (2/1)

Prerequisites: IS 451; Upper Division Writing Proficiency Exam. Corequisites: COMP 484/L; CIT 480L. CIT senior project first semester includes project proposal, methods and processes, feasibility studies, teamwork, CASE tools, work breakdown structure, estimating and budgeting, schedule planning, peer reviews and inspections, and technical presentation. Professional communication. Teamwork concepts and issues. Organizational Context. Professional and ethical …

CIT 481/L. CIT System Design and Implementation II (2/1)

Prerequisites: CIT 480/L. Corequisite: CIT 481L. CIT senior project second semester includes system/software design, functional and non-functional testing, system and acceptance testing, schedule management and tracking, delivery and deployment planning, social contexts of computing, standards and certification issues such as ISO, CMMI, technical presentation, technical documentation, legal Issues in computing, intellectual property. Lab: 3 hours …

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 105BAS. Computer Programming in BASIC (1)

Prerequisite: COMP 101, COMP 110/L or COMP 106/L. Instruction and practice in computer programming in BASIC. 3 hours of lab per week.

COMP 108. Orientation to Computer Science (3)

Prerequisite: Passing score on or exemption from the ELM or credit in MATH 093. 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 focus on developing problem solving, …

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, or a passing score on the Mathematics Placement Test (MPT) that satisfies prerequisites for MATH 150A or 255A. Corequisite: COMP 110L. Introduction to algorithms, their representation, design, structuring, analysis and optimization. Implementation of algorithms as …

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

Prerequisites: Grade of “C” or better in COMP 110/L; Grade of “C” or better in MATH 103, MATH 104, MATH 105, MATH 150A or MATH 255A, or a passing score on the Mathematics Placement Test (MPT) that satisfies prerequisites for MATH 150A or 255A; Lower division writing requirement. Corequisite: COMP 122L. Introduction to computer architecture, assembly …

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

Prerequisites: Grade of “C” or better in COMP 110/L; Grade of “C” or better in MATH 103, MATH 104, MATH 105, MATH 150A or MATH 255A, or a passing score on the Mathematics Placement Test (MPT) that satisfies prerequisites for MATH 150A or 255A; Lower division writing requirement. Corequisite: COMP 182L. Introduction to data structures …

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: COMP 182/L; MATH 150A; PHIL 230. 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 cases. Counting techniques. Lab: 3 hours per week.

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)

Prerequisites: COMP 256/L. Study of the relation of languages (e.g., 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 and finite state automata. Context-free languages and pushdown automata. Unrestricted languages …

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

Prerequisite: COMP 222, or ECE 422 and ECE 425/L. Corequisite: COMP 322L. Recommended Prerequisite: COMP 105C or knowledge of “C” Language. 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 …

COMP 333. Concepts of Programming Languages (3)

Prerequisite: 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 object-oriented programming, functional programming, logical programming …

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

Prerequisites: COMP 270/L or COMP 282; PHIL 230; and Oral Communication GE Basic Skills Section A.4. 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 and portable software products. Emphasis on object-oriented analysis and design techniques. Topics …

COMP 410. Logic Programming (3)

Prerequisites: COMP 333, COMP 282, COMP 310; Attempted Upper Division Writing Proficiency Exam. 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.

COMP 424. Computer System Security (3)

Prerequisites: COMP 322/L and COMP 380/L, or CIT 360/L and IS 435; Attempted Upper Division Writing Proficiency Exam. 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.

COMP 426. Fault-Tolerant Software and Computing (3)

Prerequisites: COMP 322/L, COMP 380/L; Attempted Upper Division Writing Proficiency Exam. Examination of dependability requirements in computing and the basic principles of system-level reliability and fault-tolerance. Software-based implementation of fault-tolerance in distributed systems. Fault-tolerant software and data bases: reliability modeling, fault-tolerance techniques (e.g., recovery blocks, N-version programming) and design approaches.

COMP 429. Computer Network Software (3)

Prerequisites: COMP 322/L; Attempted Upper Division Writing Proficiency Exam. 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.

COMP 440. Database Design (3)

Prerequisites: COMP 380/L; Attempted Upper Division Writing Proficiency Exam. 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 450. Societal Issues in Computing (3)

Prerequisites: COMP 380/L; Upper Division Writing Proficiency Exam. Survey course on the role of the digital computer in modern society. The dangers of the misuse of computers (as in the invasion of privacy), as well as the proper and intelligent use of the machines, are discussed. Not available for graduate credit.

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

Prerequisites: MATH 262; Attempted Upper Division Writing Proficiency Exam. 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.

COMP 467. Multimedia Systems Design (3)

Prerequisites: COMP 380/L; Attempted Upper Division Writing Proficiency Exam. 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 469. Introduction to Artificial Intelligence (3)

Prerequisites: COMP 310, COMP 380/L, COMP 410; Attempted Upper Division Writing Proficiency Exam. Exploration of the use of computers to perform computations normally associated with intelligence. These include game playing, theorem proving, problem solving, question answering and visual perception. Topics include languages, system architectures and heuristic strategies for advanced, high-level computations. Covers computational models for …

COMP 482. Algorithm Design and Analysis (3)

Prerequisites: COMP 282; COMP 256/L or 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 programming, to algorithm design; and a review of classical algorithms, including sorting, searching, and graph algorithms.

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

Prerequisites: COMP 322/L or COMP 380/L or CIT 360; Attempted Upper Division Writing Proficiency Exam. 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 the associated technologies. …

COMP 485. Human-Computer Interaction (3)

Prerequisites: COMP 380/L or CIT 360; Attempted Upper Division Writing Proficiency Exam. 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 and methodologies.

COMP 490/L. Senior Design Project (3/1)

Prerequisites: COMP 380/L; Upper Division Writing Proficiency Exam. 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 and …

COMP 491L. Senior Project Lab (1)

Prerequisites: COMP 490/L. Project-oriented lab to allow students to complete the design, implementation and testing of the team-based software engineering project started in COMP 490/L. Lab: 3 hours per week.

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

Prerequisites: Junior standing or above in major; Upper Division Writing Proficiency Exam; Prior approval of the department; Good standing as a matriculated student. 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 …

COMP 541. Data Mining (3)

Prerequisites: COMP 380/L. A study of the concepts, principles, techniques and applications of data mining. Topics include data preprocessing, the ChiMerge algorithm, data warehousing, OLAP technology, the Apriori algorithm for mining frequent patterns, classification methods (such as decision tree induction, Bayesian classification, neural networks, support vector machines and genetic algorithms), clustering methods (such as k-means …

COMP 560. Expert Systems (3)

Prerequisite: COMP 469. 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 581. Open Source Software Engineering (3)

Prerequisites: COMP 380/L. Introduction to open source software engineering concepts, principles and applications. Topics include history of open source software, open source software engineering models, open source products and software quality, strategies and business models, government policies toward open source software, work organization of open source software development, software and intellectual property rights, organizations of …

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; Upper Division Writing Proficiency Exam. 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; Passing score on the Upper Division Writing Proficiency Exam. 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 …

COMP 589. Software Metrics (3)

Prerequisites: COMP 380/L; MATH 340 or MATH 341; Passing score on the Upper Division Writing Proficiency Exam. 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 …

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 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)