Courses

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: three hours per week; covers installation and optimization of operating systems, system management utilities, applications, including word processing, spreadsheets and databases, virus checkers and …

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; web site 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, 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, 150A or 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. Interface management, …

CIT 360. CIT System Management (3)

Prerequisites: CIT 210/L, 270/L. 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, storage backup and restore, system administration tools, system maintenance, user support issues, …

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

Prerequisites: COMP 484/L; IS 451; Upper Division Writing Proficiency Exam. Corequisite: 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 Issues, …

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

Prerequisite: 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 101. Introduction to Algorithms (2)

Not open to students who have completed COMP 110/L. Introduction to the design, development and expression of algorithms and their stepwise refinement. Expression of algorithms in a formal language. First course in a two-course sequence, the second being a programming language lab. See COMP 105.

COMP 105. Computer Programming (1)

Prerequisite: COMP 101, 110/L or 106/L. Instruction and practice in a particular computer programming language as listed below. 3 hours of lab per week. COMP 105BAS Computer Programming in BASIC (1); COMP 105C Computer Programming in C (1); COMP 105COB Computer Programming in COBOL (1); COMP 105FOR Computer Programming in FORTRAN (1); COMP 105JAV Computer …

COMP 106/L. Computing in Engineering and Science (2/1)

Prerequisite: MATH 150A. Corequisites: COMP 106L; MATH 150B. Introduction to computing, problem solving and programming intended for science and engineering majors. Programming practice in a high-level structured language. Lab projects involve both microcomputers and mainframes. Lab: 3 hours per week. (Available for General Education, Lifelong Learning if required by student’s major.)

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 (3/1)

Prerequisites: Grade of C or better in MATH 102, 103 , 104, 105, 150A or 255A, or a passing score on the Math Placement Test (MPT) that satisfies prerequisites for MATH 150A or 255A . Corequisites: COMP 110L. Introduction to algorithms, their representation, design, structuring, analysis and optimization. Implementation of algorithms as structured programs in …

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

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

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

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

COMP 222. Computer Organization (3)

Prerequisites: Grade of C or better in COMP 122/L and 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 language …

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

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 270/L. Business Programming (2/1)

Prerequisites: Grade of C or better COMP 182/L and MATH 150A. Corequisite: COMP 270L. Introduction to file-based data structures, database concepts and the manipulation of database content from user-written software. Theoretical and practical concepts are covered. 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, 333. 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 …

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)

Prerequisites: COMP 122/L, 182/L. 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 …

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

Prerequisites: COMP 270/L or 282. 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 include unit, integration and systems testing, configuration management, software quality …

COMP 410. Logic Programming (3)

Prerequisites: COMP 333, 282, 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 420. Advanced Operating System Concepts (3)

Prerequisites: COMP 322/L; Attempted Upper Division Writing Proficiency Exam. 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 underlining theory and algorithms related to the issues.

COMP 421. The Unix Environment for Programmers (3)

Prerequisites: COMP 322/L; Attempted Upper Division Writing Proficiency Exam. Usage of UNIX in a software development environment and rapid prototyping of large projects. Study available utilities, programming styles, efficiency issues and operating system interfaces. Gain an advanced understanding of UNIX and its use in improving programmer productivity.

COMP 424. Computer System Security (3)

Prerequisites: COMP 322/L and 380/L, or CIT 360 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, 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 430. Language Design and Compilers (3)

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

COMP 432. Object-Oriented Programming (3)

Prerequisites: COMP 322/L; Attempted Upper Division Writing Proficiency Exam. Principles of object-oriented design and programming; object-oriented languages such as Simula, C++ and Smalltalk are compared to provide an understanding of the role of objects, methods, message passing, encapsulation, classes, inheritance and instance variables in a productive programming environment. Discusses language design and programming issues.

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, 380/L, 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 knowledge representation, …

COMP 480/L. Software System Development (2/1)

Prerequisite: COMP 380/L. Corequisite: COMP 480L. Project-oriented course to allow the students to apply their knowledge to the design of a large system. Students identify a suitable computer problem, examine various methods of attacking it and choose a suitable solution in an appropriate computer language. Lab: 3 hours per week.

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

Prerequisites: COMP 322/L or 380/L, or CIT 360 and IS 451; 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 …

COMP 485. Human-Computer Interaction (3)

Prerequisites: COMP 380/L, or CIT 360 and IS 451; 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 …

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)

Prerequisite: 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 518/L. Algorithms and Data Structures (3/1)

Corequisite: COMP 518L. Intensive course open only to graduate students and cannot be used to satisfy the requirement of 30 units of approved graduate work. Programming and data structures covering all of the topics of COMP 110/L and 182/L. Lab involves programming design of significant projects in a high level programming language. Lab: 3 hours …

COMP 529. Advanced Network Topics (3)

Prerequisites: COMP 429; MATH 340 or 341. Advanced course on design and analysis of high-speed networks (Broadband ISDN and Asynchronous Transfer Mode [ATM] networks) and their protocols. Topics include multimedia services integrating techniques, including synchronous and asynchronous transfer modes. ATM standards. ATM switch architecture, ATM network traffic control, ATM experimental networks, high-speed LAN/MANs, internetworking with …

COMP 541. Data Mining (3)

Prerequisite: 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 (2/1)

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

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

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

Prerequisite: 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, 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 design …

COMP 586. Object-Oriented Software Development (3)

Prerequisites: COMP 322/L, 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 …

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 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 software …

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, 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, 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 667. CAD/CAM Systems Design (3)

Prerequisite: COMP 465/L. Discuss and evaluate data structures and algorithms necessary to design and implement computer systems in manufacturing environments. Existing and anticipated technology. Students will design, implement, test and evaluate CAD/CAM systems by building on standard computer graphics packages.

COMP 680. Advanced Topics in Software Engineering (3)

Prerequisites: COMP 322/L, 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, 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)