CSC-COMPUTER SCIENCE – 2005-07 Catalog
Computer Science Department

CSC 100  Computer Science Orientation (2)

Introduction to the computer science discipline for majors. Computer problem solving and the use of computers. Success skills for computer science majors. Career paths and opportunities. Ethical behavior in the computer science discipline. Interaction with upper division students, alumni and faculty. 2 seminars. Prerequisite: Computer science major.

CSC 101  Fundamentals of Computer Science I (4)
(Also listed as CPE 101)

Basic principles of algorithmic problem solving and programming using methods of top-down design, stepwise refinement and procedural abstraction. Basic control structures, data types, and input/output. Introduction to the software development process: design, implementation, testing and documentation. The syntax and semantics of a modern programming language. Credit not available for students who have taken CSC/CPE 108. 3 lectures, 1 laboratory. Prerequisite: MATH 118 (or equivalent) with a grade of C- or better, and basic computer literacy (CSC 100 or CSC 232 or equivalent).

CSC 102  Fundamentals of Computer Science II (4)
(Also listed as CPE 102)

Basic design, implementation, testing, and documentation of object-oriented software. Introduction to classes, interfaces, inheritance, algorithms (sort, search, recursion), data structures, abstract data types (lists, stacks, queues), file I/O, exceptions, and Graphical User Interfaces. Credit not available for students who have taken CSC/CPE 108. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 101 with a C- grade or better and either MATH 141 or MATH 221 with a C- grade or better. Corequisite: CSC 141

CSC 103  Fundamentals of Computer Science III (4)
(Also listed as CPE 103)

Continuation of material from CSC/CPE 102: abstract data types specification and implementation, the analysis of algorithms and the software development process. Introduction to a specific high level design notation. Recursive algorithms. Software design case studies and practice. Software testing and program verification. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 102 with a C- grade or better and CSC 141 with a C- grade or better.

CSC 108  Accelerated Introduction to Computer Science (4) 
(Also listed as CPE 108)

Accelerated introduction to basic principles of algorithmic and object-oriented problem solving and programming. Introduction to programming language concepts including control structures, data types, classes, and inheritance. Program design principles. Use and implementation of algorithms (searching, sorting, recursion) and data structures (lists, stacks, and queues). Intended for students with experience in algorithmic problem solving and using basic control structures and data types in a modern programming language (CSC/CPE 101), but who are not ready for CSC/CPE 102. Credit not available for students who have taken CSC/CPE 102. 3 lectures, 1 laboratory. Prerequisite: Math 118 (or equivalent) with a grade of C- or better, significant experience in computer programming, and consent of instructor. Corequisite: CSC 141.

CSC 110  Computers and Computer Applications: Windows (3)

The computer as a problem-solving tool. A working introduction to microcomputers and fundamental computer concepts. Use of applications software. Credit not allowed for CSC or Software Engineering majors. 2 lectures, 1 activity. Prerequisite: Completion of ELM requirement.

CSC 113  Computers and Computer Applications: Macintosh (3)

The computer as a problem-solving tool. A working introduction to microcomputers and fundamental computer concepts. Use of applications software. Credit not allowed for CSC or Software Engineering majors. 2 lectures, 1 activity. Prerequisite: Completion of ELM requirement.

CSC 119  Information Retrieval and Management (4)

Use of applications software, including database software, to create and manage information. Credit not allowed for CSC or Software Engineering majors. 4 lectures. Prerequisite: Completion of ELM requirement.

CSC 141  Discrete Structures I (4)

Introduction to structures of computer science: logic, sets, relations, functions, graphs and trees. Propositional and predicate logic. Applications of predicate logic to preconditions, postconditions, and proof techniques. Introduction to complexity of algorithms. 4 lectures. Corequisite: CSC/CPE 102. Prerequisite: MATH 118 and MATH 119, or high school equivalent, and CSC/CPE 101 or equivalent.

CSC 142  Discrete Structures II (4)

Advanced structures of computer science: sequences, strings, graphs, networks. Recursion and recurrence relations. Introduction to combinatorics. Proof techniques. Complexity of algorithms. Advanced application to verification of algorithms. 4 lectures. Prerequisite: CSC/CPE 102 and CSC 141.

CSC 200  Special Problems for Undergraduates (1–2)

Individual investigation, research, studies, or surveys of selected problems. Total credit limited to 4 units, with a maximum of 2 units per quarter. Prerequisite: Consent of instructor.

CSC 231  Programming for Engineering Students (2)

Programming techniques and procedures with applications to engineering problems. Introduction to numerical methods and simulation. Credit not allowed for CSC, Software Engineering or CPE majors. 2 activities. Prerequisite: MATH 142 or MATH 132; PHYS 121 or PHYS 131.

CSC 232  Computer Programming for Scientists and Engineers (3) (formerly CSC 111)

Computer programming, with an emphasis on procedural programming, taught using a language hosted by applications commonly used in science and engineering. Credit not allowed for CSC, CPE or Software Engineering majors. 2 lectures, 1 activity. Prerequisite: MATH 118 or equivalent.

CSC 233  COBOL Programming (3)

Structure of the Common Business-Oriented Language (COBOL). Coding fundamentals and program logic. Writing of complete COBOL programs applied to typical business data processing problems. 3 lectures. Prerequisite: Any computer programming course.

CSC 234  C and Unix (3)

The C programming language and the UNIX programming environment. Operators, standard I/O functions, strings, pointers and arrays, data types and storage classes. Unix shell programming and basic I/O system calls. Credit not allowed for CSC, Software Engineering or CPE majors. 3 lectures. Prerequisite: MATH 142 or MATH 132.

CSC 235  Fundamentals of Computer Science for Scientists and Engineers I (4) (Also listed as CPE 235)

Introduction to the fundamentals of computer programming with an emphasis on mathematical, scientific and engineering applications: principles of algorithmic problem solving and procedural programming using a modern programming language, data types, elementary data structures, input/output and control structures. Not a substitute for CSC/CPE 101 for CSC/CPE majors or minors. 3 lectures, 1 laboratory. Prerequisite: MATH 141 or MATH 161 with a grade of C- or better, or consent of instructor.

CSC 236  Fundamentals of Computer Science for Scientists and Engineers II (4) (Also listed as CPE 236)

Further study of computer program development with an emphasis on mathematical, scientific and engineering applications. Introduction to more complicated data types and structures. Practice of more complicated techniques of procedural programming. Introduction to the principles of object-oriented programming using a modern programming language. Detailed discussion of lists and classic list algorithms, algorithm analysis, multidimensional arrays, records, dynamic data structures, file input/output, classes. Not a substitute for CSC/CPE 102 for CSC/CPE majors or minors. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 235 with a grade of C- or better, or consent of instructor.

CSC 237  Introduction to Computer Science with Applications I (4)
(Also listed as CPE 237)

Introduction to the fundamentals of computer science using a modern programming language. Includes principles of algorithmic problem solving, data types, elementary data structures, input/output, control structures, classes and methods. Not a substitute for CSC/CPE 101 for CSC/CPE majors or minors. 3 lectures, 1 laboratory. Prerequisite: MATH 221 or STAT 252 with a grade of C- or better, or consent of instructor.

CSC 238  Introduction to Computer Science with Applications II (4)
(Also listed as CPE 238)

Continuation of CSC 237. Intermediate study of computer program development using a modern object oriented (OO) programming language. Further study of OO principles including inheritance and interfaces. Introduction to implementation of Graphical User Interfaces, multi-media, streams, database connection, and scripting. Not a substitute for CSC 102 or for CSC/CPE majors or minors. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 237 with a grade of C- or better.

CSC 239  Selected Programming Languages (4)

A programming language selected from languages of current interest. Intended for students who want to learn another programming language. Class Schedule will list selected language. 3 lectures, 1 laboratory. Prerequisite: Knowledge of a programming language.

CSC 270  Computer Graphics Applications (4)
(Also listed as CPE 270)

Use of common graphics applications packages. Business graphics, figure editing, animation and image editing, photorealistic image generation, scientific visualization and multimedia. 2 lectures, 2 activities.

CSC 300  Professional Responsibilities (4) (Also listed as CPE 300)

The responsibilities of the computer science professional. The ethics of science and the IEEE/ACM Software Engineering Code of Ethics. Quality tradeoffs, software system safety, intellectual property, history of computing and the social implications of computers in the modern world. Applications to ethical dilemmas in computing. Technical presentation methods and practice. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 307 or CSC/CPE 309.

CSC 302  Computers and Society (4) GE Area F

Social, ethical, political and technological implications and effects of computers in the modern world. Examination of the benefits and side-effects of computer applications and automation. Case study review and analysis. 4 lectures. Prerequisite: Completion of GE Area B, and junior standing.

CSC 303  Teaching Computer Science (2)

Practical coverage of educational techniques appropriate for tutoring in CSC/CPE undergraduate courses, including Socratic methods for tutoring of technical topics, design of test questions and grading rubrics, and lecture presentation. Intended for CSC/CPE/SE students interested in tutoring, grading, or a career in teaching computer science. 1 lecture, 1 laboratory. Prerequisite: CSC/CPE 103 or equivalent. Not available for technical elective credit.

CSC 305  Individual Software Design and Development (4)
(Also listed as CPE 305)

Practical software development skills needed for construction of mid-sized production-quality software modules, using the CSC upper division programming language. Topics include inheritance, exceptions, and memory and disk-based dynamic data structures. Students must complete an individual programming project of mid-level complexity. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 353 or CSC/CPE 357.

CSC 307  Introduction to Software Engineering (4)
(Also listed as CPE 307)

Requirements, specification, design, implementation, testing and verification of large software systems. Study and use of the software process and software engineering methodologies; working in project teams. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103 with a grade of C- or better, and CSC/CPE 357. Not open to students with credit in CSC/CPE 308.

CSC 308  Software Engineering I (4) (Also listed as CPE 308)
(formerly CSC 205)

Principles for engineering requirements analysis and design of large complex software systems. Software process models. Methods of project planning, tracking, documentation, communication, and quality assurance. Analysis of engineering tradeoffs. Group laboratory project. Technical oral and written presentations. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103 with a grade of C- or better, and CSC/CPE 357 or CSC/CPE 353.

CSC 309  Software Engineering II (4) (Also listed as CPE 309)
(formerly CSC 206)

Continuation of the software lifecycle. Methods and tools for the implementation, integration, testing and maintenance of large software systems. Software development and test environments. Software quality assurance. Group laboratory project. Technical presentation methods and practice. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 308.

CSC 310  Computers for Poets (4)      GE Area F

How computers and computer devices work. Introduction to software systems and applications. How computers connect with various media including images, speech and data. How information is encoded and transmitted across networks. Relationship between the computer and human information processing. 4 lectures. Prerequisite: Junior standing and completion of GE Area B.

CSC 315  Computer Architecture (4) (Also listed as CPE 315)

In-depth study of the instruction set architecture and hardware design of a specific CPU. Introduction to pipelines, input/output and multi-processors. Computer abstractions and performance measurement. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103, CPE/EE 229.

CSC 316  Micro Controllers and Embedded Applications (4) (Also listed as CPE 316)

Introduction to micro controllers and their applications as embedded devices. Hardware/software tradeoffs, micro controller selection, use of on-chip peripherals, interrupt driven real-time operation, A/D conversion, serial and parallel communications, watch-dog timers, low power operation and assembly language programming techniques. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 315 or CPE/EE 329.

CSC 334  Advanced Topics in Unix (4)

Advanced topics in Unix, system calls, library functions, shell scripts, and selected Unix tools. 4 lectures. Prerequisite: CSC/CPE 103 or CSC 234.

CSC 341  Numerical Engineering Analysis (4) GE B6

An intensive survey of numerical analysis techniques used for solving engineering problems. Topics include solution of nonlinear equations, solution of linear systems, interpolation, numerical quadrature, ordinary differential equations and boundary value problems. Not open to students who have completed CSC 342. 4 lectures. Prerequisite: MATH 242 and knowledge of a high level programming language, or ability to use one of the following systems: Maple, MatLab, Mathematica, or Mathcad.

CSC 342  Numerical Analysis I (3)

Computer solutions of nonlinear equations and systems of linear equations. Polynomial interpolation. Numerical quadrature. Introduction to the solution of ordinary differential equations. 3 lectures. Prerequisite: MATH 143 and knowledge of a high level programming language, or ability to use one of the following systems: Maple, MatLab, Mathematica, or Mathcad.

CSC 343  Numerical Analysis II (3)

Solution of systems of differential equations, predictor-corrector methods, stiff equations. Approximation methods: cubic splines, B-splines, Bezier curves, least squares, methods for solving boundary value problems. 3 lectures. Prerequisite: CSC 342 or equivalent.

CSC 349  Design and Analysis of Algorithms (4)

Intermediate and advanced algorithms and their analysis. Mathematical, geometrical, and graph algorithms. NP-complete problems. Additional topics will be chosen from pattern matching, file compression, cryptology, dynamic and linear programming, and exhaustive search. 4 lectures. Prerequisite: CSC/CPE 103 and MATH 142 and either STAT 312 or STAT 321.

CSC 353  Systems Programming for Software Engineers (4)
(Also listed as CPE 353)

Assembly language and C programming; I/O and systems level programming; interrupt handlers. Technical elective credit not allowed for CSC/CPE majors. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103.

CSC 357  Systems Programming (4) (Also listed as CPE 357)
(formerly CSC 250)

C programming language from a system programming perspective. Standard C language including operators, I/O functions, and data types in the context of system functions. Unix commands, shell scripting, file system, editors. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103, and CPE 229.

CSC 358  Computer System Administration (2)

Fundamental concepts of Unix system administration. Use of shell scripts and utilities. Techniques of networks and data communications. Methods of system maintenance and accounting. 2 seminars. Prerequisite: CSC/CPE 103 or permission of instructor.

CSC 361  File Structures (4)

External storage devices. Character, record, and block I/O. Blocking and buffering. File structures: sequential, indexed sequential, B trees, hashing, multi-key and linked. Primary and secondary indexing. Design and implementation of record and object storage managers. Data compression. Multi-media file formats. 4 lectures. Prerequisite: CSC/CPE 103.

CSC 365  Introduction to Database Systems (4)
(Also listed as CPE 365)

Basic principles of database management systems (DBMS) and of DBMS application development. DBMS objectives, systems architecture, database models with emphasis on Entity-Relationship and Relational models, data definition and manipulation languages, the Structured Query Language (SQL), database design, application development tools. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103.

CSC 366  Database Modeling, Design and
Implementation (4) (Also listed as CPE 366)

The database modeling problem. Database modeling levels: external, conceptual, logical and physical. Database models: entity-relationship, relational, object-oriented, semantic, and object-relational. Normal forms. Distributed database design. Functional analysis of database applications and transaction specification, design, and implementation. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 365.

CSC 369  Distributed Computing I (4) (Also listed as CPE 369)

Introduction to distributed computing paradigms and protocols: interprocess communications, group communications, the client-server model, distributed objects, and Internet protocols. Emphasis on distributed software above the operating system and network layers. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103.

CSC 400  Special Problems for Advanced Undergraduates (1–2)

Individual investigation, research, studies or surveys of selected problems. Total credit limited to 4 units, with a maximum of 2 units per quarter. Prerequisite: Consent of instructor.

CSC 402  Software Requirements Engineering (4)
(Also listed as CPE 402)

Software requirements elicitation, analysis and documentation. Team process infrastructure and resource estimation to support appropriate levels of quality. Software architectural design. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 307 or CSC/CPE 309; CSC/CPE 305.

CSC 405  Software Construction (4)  (Also listed as CPE 405)

Design and construction of sizeable software products. Technical management of software development teams. Software development process  models, software design, documentation, quality assurance during development, software unit and integration testing; CASE tools, development environments, test tools, configuration management. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 402.

CSC 406  Software Deployment (4) (Also listed as CPE 406)

Deployment of a sizeable software product by a student team. Software maintenance and deployment economic issues. Management of deployed software: version control, defect tracking and technical support. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 405.

CSC 409  Current Topics in Software Engineering (4)
(Also listed as CPE 409)

Selected topics in software engineering. Topics may include program generation, quality assurance, formal methods, software metrics, design methods, testing, or software development processes. Class Schedule will list topic selected. Total credit limited to 8 units. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 309 or CSC/CPE 307.

CSC 430  Programming Languages I (4) (Also listed as CPE 430)

Theory of formal languages and automata. Regular languages, finite automata, and lexical analysis. Context-free languages, pushdown automata, and syntactic analysis. Type checking and static semantics. Parsing: top-down (LL) and bottom-up (LR). 3 lectures, 1 laboratory. Prerequisite: CSC 349 and CSC/CPE 357.

CSC 431  Programming Languages II (4) (Also listed as CPE 431)

Language principles and design issues: bindings, conversion, parameter passing, and dynamic semantics. Language implementation: intermediate code representation, memory management, code optimization, and code generation. Functional programming languages. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 430.

CSC 435  Introduction to Object Oriented Design Using Graphical User Interfaces (4) (Also listed as CPE 435)

Principles of object-oriented design, with emphasis on use of these principles in the design of graphical interfaces. Comparison and contrasting of two major object-oriented languages and their corresponding GUI class libraries. Language-independent object-oriented design methods, and application of these methods in the construction of a GUI-based project. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103 or equivalent and CSC/CPE 305.

CSC 445  Theory of Computation (4)

Turing machines as a universal model of computation. Theory of decidability and computability. Recursive functions and their role in computability. NP-completeness. 4 lectures. Prerequisite: CSC/CPE 141 and CSC/CPE 430.

CSC 448  Bioinformatics Algorithms (4) (Also listed as CPE 448)

Introduction to the use of computers to solve problems in molecular biology. The algorithms, languages, and databases important in determining and analyzing nucleic and protein sequences and their structure. 3 lectures, 1 laboratory. Prerequisite: Consent of instructor or the following: CSC/CPE 103 or BIO 447 and senior standing.

CSC 449  Current Topics in Algorithms (4) (Also listed as CPE 449)

Selected aspects of the verification, analysis and design of algorithms. Class Schedule will list topic selected. Total credit limited to 8 units. 3 lectures, 1 laboratory. Prerequisite: CSC 349.

CSC 453  Introduction to Operating Systems (4)
(Also listed as CPE 453)

Introduction to sequential and multiprogramming operating systems; kernel calls, interrupt service mechanisms, scheduling, files and protection mechanisms, conventional machine attributes that apply to operating system implementation, virtual memory management, and I/O control systems. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 353 or both CSC/CPE 315, CSC/CPE 357.

CSC 454  Implementation of Operating Systems (4)
(Also listed as CPE 454)

Design and implementation of multiprogramming kernels, systems programming methodology, interprocess communications, synchronization, device drivers and network access methods. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 453.

CSC 456  Introduction to Computer Security (4)
(Also listed as CPE 456)

Survey of topics in computer system and network security, including protection, access control, distributed access control, operating system security, applied cryptography, network security, firewalls, secure coding practices, and case studies from real-world systems. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 357 and CSC 300.

CSC 458  Current Topics in Computer Systems (4)
(Also listed as CPE 458)

Selected aspects of design, implementation and analysis of networks, advanced operating and distributed systems. Topics may include process management, virtual memory, process communication, context switching, file system designs, persistent objects, process and data migration, load balancing, security and networks. Class Schedule will list topic selected. Total credit limited to 8 units. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 453.

CSC 464  Introduction to Computer Networks (4)
(Also listed as CPE 464)

Computer network architectures; communications protocol standards; services provided by the network; historical and current examples presented. 3 lectures, 1 laboratory. Prerequisite: STAT 312 or STAT 321 or STAT 350; CSC/CPE 357; Software Engineering majors and graduate students may substitute CSC/CPE 353 for CSC/CPE 357.

CSC 465  Advanced Computer Networks (4) (Also listed as CPE 465) 

Advanced topics in computer networks; greater detail of protocol standards and services provided by the network; focus on current industry and research topics. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 464 and CSC/CPE 453.

CSC 468  Database Management Systems Implementation (4)
(Also listed as CPE 468)

Data structures and algorithms used in the implementation of database systems. Implementation of data and transaction managers: access methods interfaces, concurrency control and recovery, query processors and optimizers. Introduction to implementation of distributed database systems. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 365.

CSC 469  Distributed Computing II (4) (Also listed as CPE 469)

Continued exploration of topics in distributed computing in greater depth, with emphasis on object-based and component-based software development. Introduction to fault-tolerance and distributed algorithms. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 369.

CSC 471  Introduction to Computer Graphics (4)
(Also listed as CPE 471)

Graphics hardware and primitives. Modeling and rendering, geometric transforms, hidden-surface removal, the graphics pipeline, scan-conversion and graphics applications. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 353 or CSC/CPE 357.

CSC 473  Advanced Rendering Techniques (4)
(Also listed as CPE 473)

Illumination models, reflectance, absorption, emittance, Gouraud shading, Phong shading, raytracing polyhedra and other modeling primitives, coherence, acceleration methods, radiosity, form factors, advanced algorithms. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 471.

CSC 474  Computer Animation (4) (Also listed as CPE 474)

Basic and advanced algorithms for generating sequences of synthetic images. Interpolation in time and space, procedural and keyframe animation, particle systems, dynamics and inverse kinematics, morphing and video. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 471.

CSC 476  Real-Time 3D Computer Graphics Software (4)
(Also listed as CPE 476)

Basic and advanced algorithms for real-time, interactive, 3D graphics software. Modeling (polygon mesh, height field, scene graph, LOD), real-time rendering (visibility processing, shadows, multi-pass algorithms), complexity management, bounding volumes and collision detection, interactive controls, multi-player game technology, game engine architecture. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 471.

CSC 478  Current Topics in Computer Graphics (4)
(Also listed as CPE 478)

Selected aspects of the design, implementation and analysis of computer graphics. Topics may include rendering, modeling, visualization, animation, virtual reality, computer vision, multimedia, and perception issues. Class Schedule will list topic selected. Total credit limited to 8 units. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 471.

CSC 479  Computer Graphics Seminar (2)

Current topics in computer graphics. Total credit limited to 4 units. 2 seminars. Prerequisite: CSC/CPE 471.

CSC 480  Artificial Intelligence (4) (Also listed as CPE 480)

Programs and techniques that characterize artificial intelligence. Programming in a high level language. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103 and CSC 141.

CSC 481  Knowledge Based Systems (4) (Also listed as CPE 481)

In-depth treatment of knowledge representation, utilization and acquisition in a programming environment. Emphasis on the use of domain-specific knowledge to obtain expert performance in programs. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 480.

CSC 483  Current Topics in Human-Computer Interaction (4)
(Also listed as CPE 483)

Selected aspects of the field of human-computer interaction. Topics may include dynamic information visualization, universal access, social impact of technology usage, educational technology, human cognition and performance studies, and extended usability evaluation techniques. Class Schedule will list topic selected. Total credit limited to 8 units. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 484.

CSC 484  User-Centered Interface Design and Development (4)
(Also listed as CPE 484)

Introduction to the importance of user-centered principles in the design of good interfaces and effective human-computer interaction. Topics include: study of human characteristics affected by interface design, effective requirements data collection and analysis, user-centered approaches to software engineering, and evaluation of interface and interaction quality. 3 lectures, 1 laboratory. Prerequisite: Junior standing and CSC/CPE 307 or CSC/CPE 308.

CSC 486  Human–Computer Interaction Theory and Design (4)

Application of the theories of human-computer interaction to the task of user-centered design. Survey of techniques for studying and involving users in different aspects of the design process, and demonstration of where and when applicable. Combining of theoretical understanding with practical experience to design solutions to problems facing interactive systems designers. 4 seminars. Prerequisite: CSC/CPE 484.

CSC 487  Graphical User Interface Systems (4)
(Also listed as CPE 487)

Further study of graphical user interface (GUI) programming systems. Structure of tools and underlying systems to build such interfaces. Human factors including considerations of good and bad interfaces. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 435.

CSC 489  Current Topics in Artificial Intelligence (4)
(Also listed as CPE 489)

Selected aspects of the design, implementation and analysis of advanced systems and concepts in the area of artificial intelligence. Topics may include knowledge representation, reasoning, learning, or planning, and specific techniques like intelligent agents, genetic algorithms, semantic web, or robotics. Class Schedule will list topic selected. Total credit limited to 8 units. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 480.

CSC 490  Selected Advanced Topics (1–4)

Directed group study of selected topics for advanced students. Open to undergraduate and graduate students. Class schedule will list topic selected. Total credit limited to 8 units. 1 to 4 lectures. Prerequisite: Consent of instructor.

CSC 491  Senior Project Design Laboratory I (2)

Selection and completion of a project by individuals or team which is typical of problems which graduates must solve in their fields of employment. Project may include students from other disciplines. Formulation of outline, literature review, and project schedule. 2 laboratories. Prerequisite: CSC/CPE 307 or CSC/CPE 309 and consent of instructor.

CSC 492  Senior Project Design Laboratory II (3)

Selection and completion of a project by individuals or team which is typical of problems which graduates must solve in their fields of employment. Project may include students from other disciplines. Project results are presented in a formal report. 3 laboratories. Prerequisite: CSC 491 and consent of instructor.

CSC 493  Cooperative Education Experience (2) (CR/NC)

Part-time work experience in business, industry, government, and other areas of student career interest. Positions are paid and usually require relocation and registration in course for two consecutive quarters. Formal report and evaluation by work supervisor required. Credit/No Credit grading only. Total credit limited to 6 units. Prerequisite: Sophomore standing and consent of instructor.

CSC 494  Cooperative Education Experience (6) (CR/NC)

Full-time work experience in business, industry, government, and other areas of student career interest. Positions are paid and usually require relocation and registration in course for two consecutive quarters. Formal report and evaluation by work supervisor required. Credit/No Credit grading only. Total credit limited to 18 units. Prerequisite: Sophomore standing and consent of instructor.

CSC 495  Cooperative Education Experience (12) (CR/NC)

Full-time work experience in business, industry, government, and other areas of student career interest. Positions are paid and usually require relocation and registration in course for two consecutive quarters. A more fully developed formal report and evaluation by work supervisor required. Credit/No Credit grading only. Total credit limited to 24 units. Prerequisite: Sophomore standing and consent of instructor.

CSC 500  Directed Study (2–3) (CR/NC)

Individual directed study of advanced topics. Total credit limited to 4 units. Credit/No Credit grading only. Prerequisite: Fully classified graduate standing and consent of instructor.

CSC 508  Software Engineering I (4)

In-depth study of requirements engineering, software project management, formal specifications and object-oriented analysis. 4 seminars. Prerequisite: CSC/CPE 307 or CSC/CPE 308 and graduate standing, or consent of instructor.

CSC 509  Software Engineering II (4)

In-depth study of software modeling and design. Formal design methodologies. Design patterns. Detailed case studies of existing projects. Tools and methods for designing large software systems. 4 seminars. Prerequisite: CSC 508 and graduate standing, or consent of instructor.

CSC 520  Computer Architecture (4) (Also listed as CPE 520)

Comparative study and design of multiprocessor, dataflow, RISC, high level language and other new computer architectures. VLSI processor design techniques. 3 seminars, 1 laboratory. Prerequisite: CSC/CPE 315 and graduate standing, or consent of instructor.

CSC 530  Languages and Translators (4)

Advanced programming language and translator concepts. Language concepts to be covered will be selected from current state-of-the-art languages and current issues in language design. Compiler concepts will include retargetable code generation, use of translator-writing systems, and error recovery. 4 seminars. Prerequisite: CSC 430 and graduate standing, or consent of instructor.

CSC 540  Theory of Computing (4)

Advanced topics in theoretical computer science from such areas as automata theory, cellular automata theory, computational complexity, and program verification. 4 seminars. Prerequisite: CSC 445 and graduate standing, or consent of instructor.

CSC 541  Numerical Methods (4)

Introduction to advanced methods used in numerical analysis. Finite element methods for one and two-dimensional problems. Study of transforms including the Fast Fourier Transform and the Fast Hartley Transform. Review of the software supporting these methods. 4 seminars. Prerequisite: CSC 342 and graduate standing, or consent of instructor.

CSC 550  Operating Systems (4)

General concepts of computer architecture and operating systems. Design features of advanced computers, general time-sharing systems and schemes for dynamic memory allocation, scheduling and protection. Dynamic linkage between subroutines. Intercommunication between input/output and processors. 4 seminars. Prerequisite: CSC/CPE 453 and graduate standing, or consent of instructor.

CSC 560  Database Systems (4)

Current topics in database systems: distributed databases and transactions, nested and long-running transactions, distributed concurrency control, semantic and object-oriented data models, database systems for non-traditional applications: engineering design databases, active, logic, temporal, multi-media, and real-time databases. 4 seminars. Prerequisite: CSC/CPE 468 and graduate standing, or consent of instructor.

CSC 564  Computer Networks: Research Topics (4)
(Also listed as CPE 564)

Exploration of advanced topics in emerging computer networking technologies; focus on leading edge computer network research topics. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 464 and graduate standing, or consent of instructor.

CSC 568  Distributed Systems (4)

Advanced topics in distributed systems with emphasis on recent and emerging distributed computing paradigms, fault tolerance, and distributed algorithms. 4 seminars. Prerequisite: CSC/CPE 369 or CSC/CPE 569 and graduate standing, or consent of instructor.

CSC 569  Distributed Computing (4) (Also listed as CPE 569)

Principles and practices in distributed computing: interprocess communications, group communications, client-server model, distributed objects, message queue system, distributed services, mobile agents, object space, Internet protocols. Distributed algorithms: consensus protocols, global state protocols. Fault tolerance: classification of faults, replication. Not open to students with credit in CSC/CPE 369 or CSC/CPE 469. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 103 and graduate standing, or consent of instructor.

CSC 570  Current Topics in Computer Science (2–4)

Directed group study of selected topics for graduate students. Topics will normally consist of continuations of those in CSC 520, CSC 530, CSC 540, CSC 550, CSC 560 and CSC 580, and other topics as needed. Class Schedule will list topic selected. Topic credit limited to 12 units. 2 to 4 seminars. Prerequisite: Graduate standing and evidence of satisfactory preparation in computer science.

CSC 580  Artificial Intelligence (4) (Also listed as CPE 580)

Current research in the field of artificial intelligence with emphasis on cooperative agents, distributed agents, and decision making in complex, concurrent environments. AI programming in a distributed environment. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 481 and graduate standing, or consent of instructor.

CSC 581  Computer Support for Knowledge Management (4)
(Also listed as CPE 581)

Use methods and techniques that computer-based systems can provide to make the management of knowledge and information in digital form easier for the user. Emphasis on support for knowledge-intensive activities performed by users. 3 lectures, 1 laboratory. Prerequisite: CSC/CPE 481.

CSC 590  Seminar in Computer Science (3)

Current problems and research in the field of computer science through discussions and selected readings. Group study of selected advanced topics. 3 seminars. Prerequisite: Graduate standing or consent of instructor.

CSC 593  Cooperative Education Experience (2) (CR/NC)

Advanced study analysis and part-time work experience in student’s career field; current innovations, practices, and problems in administration, supervision, and organization of business, industry, and government. Must have demonstrated ability to do independent work and research in career field. Credit/No Credit grading only. Prerequisite: Graduate standing and consent of instructor.

CSC 594  Cooperative Education Experience (6) (CR/NC)

Advanced study analysis and full-time work experience in student’s career field; current innovations, practices, and problems in administration, supervision, and organization of business, industry, and government. Must have demonstrated ability to do independent work and research in career field. Credit/No Credit grading only. Prerequisite: Graduate standing and consent of instructor.

CSC 595  Cooperative Education Experience (12) (CR/NC)

Advanced study analysis and full-time work experience in student’s career field; current innovations, practices, and problems in administration, supervision, and organization of business, industry, and government. Must have demonstrated ability to do independent work and research in career field. A fully-developed formal report and evaluation by work supervisor required. Credit/No Credit grading only. Prerequisite: Graduate standing and consent of instructor.

CSC 599  Thesis/Project (2–3) (2–3)

Individual research or activity under faculty supervision leading to an acceptable thesis or project. Prerequisite: Graduate standing and consent of instructor.