Computer Science

This is an archived copy of the 2016-2017 bulletin. To access the most recent version of the bulletin, please visit bulletin.sfsu.edu. Any changes will appear on our errata page.

College of Science and Engineering

Dean: Keith Bowman

Department of Computer Science

TH 906
Phone: 415-338-1008
E-mail: csgrad@sfsu.edu
Website: http://cs.sfsu.edu

Chair: William Tsunyuk Hsu
Undergraduate Advisors: Dujmovic, Puder, Wong, Yang, Yue
Graduate Coordinators: Okada, Yoon
Graduate Advisors: Okada, Yoon

Program Scope

The primary mission of the Department of Computer Science is to prepare students for employment as computer specialists in the software development and computer manufacturing industries and for continued study toward advanced degrees. The department offers a broad curriculum covering the major areas of the computing discipline, integrated with soft skills such as teamwork and written/oral communication; students also gain experience working in group projects. Students are exposed to the fundamentals of computing architecture and computing theory, and focus their studies on the areas of software and systems development. Faculty work directly with students to help them develop the skills and knowledge of computing professionals.

Department faculty are committed to teaching excellence. They remain current in the rapidly changing field of computing technology through continuing research and publications, direct consultation with local industries, and seminar programs that bring top researchers to campus to speak on current developments in the field. The Supervised Industrial Research Program, Practicum option and other mechanisms provide opportunities for graduate students to complement their academic learning with real world experience.

The department has an additional commitment to sharing its knowledge and skills with the rest of the University community, with local schools, and with community based organizations of the Bay Area.

The Bachelor of Science program stresses a basic foundation in mathematics and physics, and a thorough study of the fundamentals of the discipline: software development, computer architecture, operating systems, programming languages, algorithms, and the theoretical foundations of computer science. A wide variety of elective courses such as mobile development, web/internet applications, bioinformatics, database systems, artificial intelligence, computer graphics, game development, and software engineering allow students to specialize in selected areas. Ethical and social issues of computing are discussed throughout the curriculum. Senior courses include group projects to better prepare students for future job markets. A number of skill-based courses have been added to provide necessary training in the latest software technologies.

The Master of Science in Computer Science prepares students for a wide variety of careers in computing or related industries as well as for advanced study toward a Ph.D. Our program combines a solid and practical curriculum with high quality research and project-based activities. In addition to a general program covering the breadth of the computing discipline, the department offers three concentrations:

  • The concentration in Software Engineering covers the design and development of large yet useable software systems in a world where software teams are distributed globally.
  • The concentration in Computing for Life Sciences covers the development of computer applications and technologies aimed at supporting the burgeoning biotechnology industry.
  • The concentration in Computing and Business provides a blended approach providing students with a solid technical background in computer science as well as core topics in modern business practices.

Our faculty maintain active publication records, with significant funding from government agencies (NSF, NIH, Department of Labor, etc.) and industry (Genentech, Microsoft, IBM, etc.). Students are actively involved in research projects, write papers, attend conferences, and participate in funding proposals. SF State’s Center for Computing for Life Sciences (cs.sfsu.edu/center-computing-life-sciences/ccls-home) and several specialized laboratories provide research and project focus, as well as opportunities to collaborate with faculty and students from other SF State departments and industry.

Computing Facilities

Central Facilities

  • A network of Mac, Linux, and PC servers supported by SF State Information Technology Services
  • A Linux server (unixlab) supported by SF State Information Technology Services, used for Computer Science classes
  • Workstation labs in the SF State J. Paul Leonard Library and around campus

General Undergraduate Computing Facilities

  • Intel servers (Windows and Linux)
  • Workstation laboratories with Mac, Windows and Linux desktops

Specialized Centers, Laboratories, and Computing Resources

  • Center for Computing for Life Sciences (including Amazon cloud servers and 40-node DELL cluster)
  • Multimedia and Visualization Laboratory
  • Biocomputing and Media Research Group
  • Biomedical Image and Data Analysis Lab
  • Virtual Computing: VMware GSX server, Microsoft VirtualPC Server
  • High Performance Computing server with NVIDIA Tesla and Titan GPUs

Career Alternatives

  • Mobile application developer
  • Web and internet application developer
  • Game developer
  • Bioinformatics developer
  • Software engineer
  • Quality assurance engineer
  • Manager of software development teams
  • Systems programmer/administrator
  • Computer network specialist
  • System security and/or performance manager
  • Application software designer
  • Database designer/programmer/administrator
  • Programmer in scientific or business applications

Professors

Dujmovic, Levine, Petkovic, Singh, Wong, Yoon

Associate Professors

Hsu, Okada, Puder, Yang

Assistant Professors

Kulkarni, Yue

Adjunct Professors

Buturovic, Lank

Lecturers

Pico, Potter, Roberts, Sosnick, Tomasevich, Wall

CSC 101 Computers for Everyone (Units: 3)

Comprehensive and basic overview of computers and their use for everyday tasks such as information retrieval, Internet, writing, presentations, communication, Web publishing, e-commerce, entertainment, computation. No prior knowledge required.

CSC 203 JAVA Programming (Units: 3)

Prerequisite: CSC 210 or consent of instructor. JAVA language and object oriented programming. Use of inheritance, polymorphism, exception handling and libraries; JAVA applets and GUI development using Swing.

CSC 206 Python Programming (Units: 3)

Prerequisite: CSC 210 or consent of instructor.

Python language programming, with basic principles of interpretative languages. The use of basic Python constructs and standard libraries (e.g. networking, regular expressions, GUI). Simple apps such as WWW, games.

CSC 208 C++ for Java Programmers (Unit: 1)

Prerequisites: Completed Java programming courses or consent of instructor.

Hands-on exercises in C++ programming. Emphasize features common to C++ and Java and features unique to C++. (CR/NC grading only.)

CSC 210 Introduction to Computer Programming (Units: 3)

Design, implementation, testing, debugging, maintenance, and documentation of Java programs. Algorithms, programming concepts, and data types in Java. Concepts of object-oriented programming; numerical and non-numerical problems. Required of computer science majors and minors.

CSC 211 Introduction to Software Lab (Unit: 1)

Hands on exercises in programming, and use of basic SW development tools. Covers procedural, object oriented, C++, and JAVA programming. Strongly recommended for CSC 210 students, and others needing hands on experience; concurrent enrollment in CSC 210 recommended. Students are encouraged to bring their own laptops. May be repeated for 3 units for degree credit. (CR/NC grading only.)

CSC 220 Data Structures (Units: 3)

Prerequisites: CSC 210 with a grade of C or better; MATH 227 with a grade of C or better or must be taken concurrently.

Linear and non-linear data structures in Java, including lists, stacks, queues, trees, tables and graphs. Recursion, iteration over collections, sorting, searching, Big O notation and hash table.

CSC 230 Discrete Mathematical Structures for Computer Science (Units: 3)

Prerequisites: CSC 210 with a grade of C or better; MATH 227 with a grade of C or better or must be taken concurrently.

Review of set algebra, relations and functions; permutations; propositional logic; proof techniques; introduction to graph theory; infinite sets; applications to computer science.

CSC 256 Machine Structures (Units: 3)

Prerequisite: CSC 230 with grade of C or better.

Digital logic circuits; data representation; assembly language programming; subroutine linkage; machine language encoding; interrupt/exception handling; memory system concepts; CPU organization and performance.

CSC 300GW Ethics, Communication and Tools for Software Development - GWAR (Units: 3)

Prerequisites: CSC 210; ENG 214 or equivalent with grade of C or better; restricted to upper division computer science majors/minors only.

Privacy, security, legal and ethical issues in Software development. Communication relevant to SW development (reports, contracts, requirements, documentation, collaboration, e-mail, presentations). Study and use of basic tools for SW development and collaboration. (ABC/NC grading only.)

Course Attributes:

  • Graduation Writing Assessment

CSC 306 An Interdisciplinary Approach to Computer Programming (Units: 3)

Prerequisite: Upper division standing or consent of instructor.

Basics of programming for interdisciplinary problem solving. Topics include basic building blocks of programming (variable, control statement, iterative statement, array, function and abstraction) and problem solving approaches. Use App Inventor and Java.

CSC 307 An Interdisciplinary Approach to Web Programming (Units: 3)

Prerequisite: Upper division standing or consent of instructor.

Basics of WWW engineering relevant to studies in interdisciplinary problem solving. Topics include basics of developing web and database applications, HTML, PHP, Python, SQL, MySQL database.

CSC 309 Computer Programming for Scientists and Engineers (Units: 3)

Prerequisites: MATH 226 or consent of instructor.

Procedural programming for scientific applications. Good programming practices and basic numerical and nonnumerical algorithms for scientists and engineers.

CSC 317 Introduction to Web Software Development (Units: 3)

Prerequisite: CSC 220 or consent of instructor.

Introduction to UNIX and creating web pages, reading and processing user input submitted through web pages; client side and server side programming; connecting a web page to a database; building e-commerce site or Internet Application.

CSC 338 Information Technology in a Global Society (Units: 3)

Prerequisite: ENG 214 or equivalent.

Study of increasingly interconnected technology and sharing of information in the 21st century. The important role technology plays in the U.S. and the world. Exploration of the information age in several social contexts.
(This course is offered as ISYS 338 and CSC 338. Students may not repeat the course under an alternate prefix.)

CSC 340 Programming Methodology (Units: 3)

Prerequisites: CSC 220, CSC 230, and MATH 227, each with grade of C or better. Concurrent enrollment in CSC 412 is recommended.

Advanced data structures and algorithms for manipulation in C++; emphasis on design and implementation; practical applications; algorithms for sorting, searching, and graphs.

CSC 412 Advanced Software Lab (Unit: 1)

Prerequisite: CSC 220; concurrent enrollment in CSC 340 recommended.

Hands on exercises in advanced programming, software development tools and web technologies. Students are encouraged to bring their own laptops. May be repeated for 2 units. (Plus-minus letter grade only)

CSC 413 Software Development (Units: 3)

Prerequisites: CSC 340 and CSC 412 with grades of C or better.

Modern software applications. Object-oriented techniques: encapsulation, inheritance, and poly-morphism as mechanism for data design and problem solution. Software design, debugging, testing, and UI design. Software maintenance. Software development tools. Extra fee required. (Plus-minus letter grade only)

CSC 415 Operating System Principles (Units: 3)

Prerequisites: MATH 324, PHYS 230, CSC 256, and CSC 340, with grades of C or better.

Operating system concepts: concurrent processes, basic synchronization techniques, deadlock, memory management, file systems, security, networks, distributed processing. Extra fee required.

CSC 510 Analysis of Algorithms I (Units: 3)

Prerequisites: CSC 340, and MATH 324, with grades of C or better.

Notions of main algorithm design method. Measures of algorithm complexity in space and time. Algorithms of classic problems: sorting and scheduling and complexity analysis of such algorithms.

CSC 520 Theory of Computing (Units: 3)

Prerequisites: CSC 220, CSC 230, and MATH 325 with grades of C or better.

Automata, formal languages, and the notion of computability. Sequential machines as language acceptors. Context free and context sensitive grammars. Recursive functions, universal turing machines. Unsolvable problems.

CSC 600 Programming Languages (Units: 3)

Prerequisite: CSC 413 with a grade of C or better.

Concepts for high-level programming languages. Procedural, logic, functional, and object-oriented programming paradigms. Comparative study of several languages and an introduction to grammars and parsing techniques. Extra fee required.

CSC 615 UNIX Programming (Units: 3)

Prerequisite: CSC 415 with grade of C or better, or consent of instructor.

Programming in a UNIX environment. Topics include regular expressions; utilities such as awk, sed, grep, csh, sh, ksh; system calls such as signals, sockets, POSIX IPC, and POSIX threads; kernel internal structures. Extra fee required. (Plus-minus letter grade only.)

CSC 620 Natural Language Technologies (Units: 3)

Prerequisite: CSC 413 with grade of C or better or consent of instructor.

Natural language parsing technology and grammars. Elements of computational semantics, discourse structure and generation. Survey of related topics such as information retrieval, question-answering, machine translation, speech processing. Extra fee required. (Plus-minus letter grade only.)
(CSC 620/CSC 820 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 621 Biomedical Imaging & Analysis (Units: 3)

Prerequisites for CSC 621: Grades of C or better in CSC 510 and MATH 325.
Prerequisites for CSC 821: Graduate standing; grade of C or better in CSC 510 and MATH 325, or consent of instructor.

Introduction to medical and biological imaging, imaging physics, 3D, image formats, visualization. Basic digital image processing and analysis, filtering, registration, segmentation, quantification, performance evaluation. (Plus-minus letter grade only.)
(CSC 621/CSC 821 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 630 Computer Graphics Systems Design (Units: 3)

Prerequisites: CSC 340 and MATH 325 with grades of C or better.

Graphics system design and display hardware architecture. Overview of device-independent graphic systems, 2 & 3 dimensional viewing pipelines, hidden line and surface removal algorithms, raster graphics techniques, and color space models. Web page design and Flash exercises for introduction to animation and multimedia. Course fee required. (Plus-minus letter grade only.)

CSC 631 Multiplayer Game Develop (Units: 3)

Prerequisite: CSC 413 or consent of instructor.

Computer graphics and network characteristics of multiplayer games. Design and development of a game as a team project.
(CSC 631/CSC 831 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 637 Software Techniques for Computer Music (Units: 3)

Prerequisite: CSC 413 with grade of C or better, or consent of instructor.

Algorithms and software design for digital audio and computer music. Analysis and synthesis techniques. Real-time control and interaction. Extra fee required.

CSC 641 Computer Performance Evaluation (Units: 3)

Prerequisite: CSC 415 or consent of instructor.

Computer performance analysis problems related to system design, selection, and tuning. Modeling using stochastic and operational queuing models. Workload characterization, design, and performance measurement methods. Design of simulation models for computer systems. Extra fee required. (Plus-minus letter grade only.)
(CSC 641/CSC 841 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 642 Human-Computer Interaction (Units: 3)

Prerequisite: CSC 413 with grade of C or better or consent of instructor.

The design, implementation, and evaluation of human/computer interfaces. Topics include interface devices, interface metaphors, interaction styles, User Centered Design, testing, and quality assessment. Extra fee required.

CSC 644 Computer Measurements (Units: 3)

Prerequisites: CSC 413, CSC 415.

Software measurement and experimentation tools. Data collection and analysis. Web measurements. Benchmarking and design of benchmarks. Use of software monitors. Extra fee required. (Plus-minus letter grade only.)

CSC 645 Computer Networks (Units: 3)

Prerequisite: CSC 415 with grade of C or better.

Computer network design, evaluation, and testing. Computer network standards and implementation. Hardware/software design and compatibility issues. Extra fee required.
(CSC 645/CSC 745 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 648 Software Engineering (Units: 3)

Prerequisites: CSC 413 with grade of C or better, or consent of instructor.

Practical methods and tools for SW engineering, including organizational teamwork.
(CSC 648/CSC 848 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 650 Secure Networked Systems (Units: 3)

Prerequisites: CSC 415 with grade of C or better, or consent of instructor.

Analysis, planning, construction, and operation of secure networked computing systems: security for environments within Internet, encryption, assets, risk, authentication, trust, controls, defense, routers, firewalls, law, ethics. Extra fee required.

CSC 651 System Administration (Units: 3)

Prerequisites: CSC 413 and CSC 415 with grades of C or better.

User administration. Operating system installation, tuning, and control. Network administration. Security management. Performance tuning and management. Extra fee required. (ABC/NC grading only)

CSC 656 Computer Organization (Units: 3)

Prerequisites: CSC 415 (may be taken concurrently) or consent of instructor.

Instruction set design. Pipelined datapath and control. Cache and memory system design. Input/output subsystems. Parallel processing. Software/hardware interactions. Extra fee required.

CSC 658 Programming Cafe (Units: 3)

Prerequisites: CSC 413 with grade C or better or consent of instructor.

Extensive programming practice to advance programming skills and processes; pair programming exercises; code review techniques and practice.

CSC 664 Multimedia Systems (Units: 3)

Prerequisite: CSC 413 with a grade of C or better.

Comprehensive topics in multimedia such as basics of image and video processing, compression, multimedia databases, standard, synchronization, formats in perspective of systems and algorithms. Extra fee required. (Plus-minus letter grade only.)
(CSC 664/CSC 864 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 665 Artificial Intelligence (Units: 3)

Prerequisite: CSC 413 with grade of C or better.

Computational methods for studying intelligence. Automated problem solving, heuristic search, planning, inference, natural language processing, and machine learning. Extra fee required.

CSC 667 Internet Application Design and Development (Units: 3)

Prerequisite: CSC 413 with grade of C or better or consent of instructor.

Fundamental technologies on which WWW is based. Extra fee required.
(CSC 667/CSC 867 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 668 Advanced Object Oriented Software Design and Development (Units: 3)

Prerequisites: CSC 413 with grade of C or better; senior or graduate standing; or consent of instructor.

Object oriented analysis and design utilizing UML, design patterns, frameworks and toolkits; Agile software design processes. Development of a mid-size programming project working in teams. (Plus-minus letter grade only.)
(CSC 668/CSC 868 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 671 Neural Networks (Units: 3)

Prerequisite: CSC 510 with grade of C or better.

Artificial neural networks: associative memories, learning, search, databases, fuzzy set techniques, pattern recognition, and adaptive processing.
(CSC 671/CSC 871 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 675 Introduction to Database Systems (Units: 3)

Prerequisite: CSC 413 with grade of C or better.

Relational query languages. Semantic data models. Logical and physical database design. Privacy issues. Implementation techniques (catalogs, query optimization, concurrency control, security and integrity enforcement). Extra fee required.
(CSC 675/CSC 775 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 690 Interactive Multimedia Application Development (Units: 3)

Prerequisites: CSC 340 with grade of C or better; or consent of instructor.

Basics of multimedia data formats and algorithms to build applications using non-standard interfaces such as game controllers and multi-touch surfaces. (Plus-minus letter grade only.)

CSC 693 Cooperative Education Program (Units: 6-12)

Prerequisite: Upper division standing or consent of instructor.

Units do not count toward the major. May be repeated for a total of 24 units. Contact the Cooperative Education office for information. (CR/NC grading only)

CSC 694 Cooperative Education: Computer Science (Units: 1-3)

Prerequisite: Consent of instructor.

Projects undertaken in a business, government, or industrial position of at least one semester's duration.

CSC 695 Computing in the Community (Units: 2)

Prerequisites: Junior or senior standing, computer experience, and consent of instructor.

Extensive fieldwork training Bay Area non-profit agencies in the use of computer tools such as conferencing and database systems. Development of user documentation. (CR/NC grading only)

CSC 697 Senior Project in Computer Science (Units: 3)

Prerequisites: CSC 415 and CSC 510, or CSC 648 [formerly CSC 640], or consent of instructor.

Culminating experience in individual design, implementation, and professional documentation of a software product under close supervision of a faculty member.

CSC 698 Topics in Computing (Units: 3)

Prerequisite: Upper division standing or consent of instructor.

Current topics in computer hardware/software technologies. Title to be specified in Class Schedule. May be repeated when titles vary.

CSC 699 Independent Study (Units: 1-3)

Prerequisites: Departmental permission and consent of instructor. An approved study proposal must be on file by the time of registration.

Library and laboratory research projects. Final report must be approved by the instructor and filed with the department.

CSC 720 Advanced Operating Systems (Units: 3)

Prerequisites: Satisfaction of Written English Proficiency Level I or concurrent enrollment in SCI 614; CSC 415 with a grade of B or better, or consent of instructor.

Analysis of scheduling and memory management algorithms, use of concurrent languages for systems development and distributed systems. Design and implementation of major components of an operating system. Extra fee required.

CSC 730 Advanced Database Systems (Units: 3)

Prerequisites: CSC 413 and CSC 675 with grades of C or better.

Standard SQL, query optimization, concurrency control, crash recovery, authorization and integrity enforcement; object-oriented, extensible, deductive, and/or distributed database systems. Extra fee required.

CSC 745 Computer Networks (Units: 3)

Prerequisite: CSC 415 with grade of C or better.

Computer network design, evaluation, and testing. Computer network standards and implementation. Hardware/software design and compatibility issues. Extra fee required.
(CSC 645/CSC 745 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 746 High-Performance Computing (Units: 3)

Prerequisites: CSC 656 with grade of B or better; or consent of instructor.

Principles and current practices in High-performance Computing. Basics of multiprocessor systems such as clusters and graphics processors. Message-passing and shared memory-based software development. Cloud computing.

CSC 775 Introduction to Database Systems (Units: 3)

Prerequisite: CSC 413 with grade of C or better.

Relational query languages. Semantic data models. Logical and physical database design. Privacy issues. Implementation techniques (catalogs, query optimization, concurrency control, security and integrity enforcement). Extra fee required.
(CSC 675/CSC 775 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 780 Application Development for Mobile Devices (Units: 3)

Prerequisite: CSC 415 with grade of B or better or consent of instructor. Restricted to senior or graduate students in computer science.

Introduction to and comparison of different popular mobile application frameworks; conceptual and hands-on experience in writing mobile applications using native and cross-platform tools. (Plus-minus letter grade only.)

CSC 810 Analysis of Algorithms II (Units: 3)

Prerequisites: Passing score on GET or concurrent enrollment in SCI 614; CSC 510 with grade of B or better.

Review major design strategies. Theory of NP Completeness. Approximation algorithms. On line algorithms. Parallel and distributed algorithms. Algorithms for specific areas of interest. Extra fee required.

CSC 820 Natural Language Technologies (Units: 3)

Prerequisite: CSC 413 with grade of C or better or consent of instructor.

Natural language parsing technology and grammars. Elements of computational semantics, discourse structure and generation. Survey of related topics such as information retrieval, question-answering, machine translation, speech processing. Extra fee required. (Plus-minus letter grade only.)
(CSC 620/CSC 820 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 821 Biomedical Imaging & Analysis (Units: 3)

Prerequisites for CSC 621: Grades of C or better in CSC 510 and MATH 325.
Prerequisites for CSC 821: Graduate standing; grade of C or better in CSC 510 and MATH 325, or consent of instructor.

Introduction to medical and biological imaging, imaging physics, 3D, image formats, visualization. Basic digital image processing and analysis, filtering, registration, segmentation, quantification, performance evaluation. (Plus-minus letter grade only.)
(CSC 621/CSC 821 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 825 Advanced Automata Theory (Units: 3)

Prerequisite: CSC 520 or equivalent.

Advanced topics in theoretical computer science and their application to a broad range of areas including bioinformatics, compilers, data and image compression, natural language processing, networking and Web applications. Extra fee required. (Plus-minus letter grade only.)

CSC 830 Advanced Computer Graphics (Units: 3)

Prerequisite: CSC 630 or consent of instructor.

Roster graphics principles and scanning algorithms, pixel fill algorithms, anti-aliasing, clipping, hidden line, and surface display, rendering of surfaces and fractal techniques. Extra fee required.

CSC 831 Multiplayer Game Develop (Units: 3)

Prerequisite: CSC 413 or consent of instructor.

Computer graphics and network characteristics of multiplayer games. Design and development of a game as a team project.
(CSC 631/CSC 831 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 835 Distributed Systems (Units: 3)

Prerequisite: CSC 415 with a grade of B or better or consent of instructor.

Introduction to the concepts and design of distributed systems. Includes term project in using current middleware technologies. Extra fee required.

CSC 837 Advanced Sound Synthesis (Units: 3)

Prerequisite: CSC 637 with grade of B or better, or consent of instructor.

Current algorithms and practices in sound synthesis and timbral control for music, sound effects, and interactive environments. Design of real-time software synthesis systems. Extra fee required.

CSC 840 Software Metrics and Quality Assurance (Units: 3)

Prerequisites: CSC 648 [formerly CSC 640] or consent of instructor.

Measurement and modeling in software engineering. Software performance evaluation methods. Techniques and tools for software quality assurance. Software quality standards. Design and use of software metrics tools. Extra fee required. (Plus-minus letter grade only.)

CSC 841 Computer Performance Evaluation (Units: 3)

Prerequisite: CSC 415 or consent of instructor.

Computer performance analysis problems related to system design, selection, and tuning. Modeling using stochastic and operational queuing models. Workload characterization, design, and performance measurement methods. Design of simulation models for computer systems. Extra fee required. (Plus-minus letter grade only.)
(CSC 641/CSC 841 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 842 Advanced Human-Computer Interaction (Units: 3)

Prerequisite: Classified standing in graduate program.

Design, implementation, evaluation of human/computer interfaces. Topics include those covered in CSC 642; however, emphasis is placed on HCI with respect to culminating experience work. Extra fee required. (Plus-minus letter grade only.)

CSC 845 Advanced Computer Networks (Units: 3)

Prerequisites: CSC 645 and CSC 720, or consent of instructor.

Current design and implementation techniques for development and analysis of high performance network protocols. Strategies appropriate for Internet use (i.e., TCP/IP based). Extra fee required.

CSC 846 Systems Architecture (Units: 3)

Prerequisite: CSC 656 with grade of B or better or consent of instructor.

Principles of computer systems architecture with emphasis on hardware/software interactions for large applications and design for performance. Extra fee required. (Plus-minus letter grade only.)

CSC 848 Software Engineering (Units: 3)

Prerequisites: CSC 413 with grade of C or better, or consent of instructor.

Practical methods and tools for SW engineering, including organizational teamwork.
(CSC 648/CSC 848 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 849 Search Engines (Units: 3)

Prerequisite: CSC 413 or consent of instructor.

Introduction to the internals of modern search engines. Methods and tools for representation, storage, organization of, and access to textual data. (Plus-minus letter grade only.) Extra fee required.

CSC 850 Compiler Design (Units: 3)

Prerequisites: CSC 413 with a grade of B or better and consent of instructor.

Design and implementation of compilers including lexical scanners, top down and bottom up parsers, precedence grammars, symbol table manipulation, LR (k) grammars, semantics routines, and code generators. Extra fee required.

CSC 856 Advanced Computer Architecture (Units: 3)

Prerequisites: satisfaction of Written English Proficiency Level I or concurrent enrollment in SCI 614; CSC 656 with a grade of B or better or consent of instructor.

Advanced pipelining. Instruction level parallelism. Advanced memory system design. Compiler techniques for performance. New technologies/applications. Extra fee required.

CSC 857 Bioinformatics Computing (Units: 3)

Prerequisites: Graduate standing in science program, CSC 858, or consent of instructor.

Broad range of topics in computational biology as practiced in the life science industry and leading research organizations. Provides computational background required to participate in R&D. Extra fee required.

CSC 858 Foundations of Biotechnology and Life Sciences (Units: 3)

Prerequisite: Graduate standing in science program in the College of Science and Engineering.

Covers foundations in biotechnology and life sciences. Prepare for further study and careers in biotechnology and computational life sciences R&D and industry. Students do not need background in life sciences or biology.

CSC 864 Multimedia Systems (Units: 3)

Prerequisite: CSC 413 with a grade of C or better.

Comprehensive topics in multimedia such as basics of image and video processing, compression, multimedia databases, standard, synchronization, formats in perspective of systems and algorithms. Extra fee required. (Plus-minus letter grade only.)
(CSC 664/CSC 864 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 867 Internet Application Design and Development (Units: 3)

Prerequisite: CSC 413 with grade of C or better or consent of instructor.

Fundamental technologies on which WWW is based. Extra fee required.
(CSC 667/CSC 867 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 868 Advanced Object Oriented Software Design and Development (Units: 3)

Prerequisites: CSC 413 with grade of C or better; senior or graduate standing; or consent of instructor.

Object oriented analysis and design utilizing UML, design patterns, frameworks and toolkits; Agile software design processes. Development of a mid-size programming project working in teams. (Plus-minus letter grade only.)
(CSC 668/CSC 868 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 869 Data Mining (Units: 3)

Prerequisites: CSC 510 and CSC 675, with grades of C or better; or consent of instructor.

Knowledge discovery process; basic data mining concepts; key mining algorithms, data mining in practical domains such as bioinformatics. (Plus-minus letter grade only.)

CSC 870 Computational Discrete Geometry (Units: 3)

Prerequisites: CSC 210, CSC 230 [formerly CSC 330], MATH 325, or consent of instructor.

Comprehensive overview of basic topics in computational discrete geometry: generating functions, complexity theory, convex hull, nearest-neighbor problems, efficient algorithms, etc.
(This course is offered as MATH 870 and CSC 870. Students may not repeat the course under an alternate prefix.)

CSC 871 Neural Networks (Units: 3)

Prerequisite: CSC 510 with grade of C or better.

Artificial neural networks: associative memories, learning, search, databases, fuzzy set techniques, pattern recognition, and adaptive processing.
(CSC 671/CSC 871 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 872 Pattern Analysis and Machine Intelligence (Units: 3)

Prerequisites: CSC 510 and CSC 520 with grades of C or better or consent of instructor.

Foundation of pattern analysis and machine intelligence. Artificial intelligence: agent, logic, search. Machine learning: Bayesian classification. Neural network: simulated annealing. Imaging: image segmentation, object recognition. (Plus-minus letter grade only.)

CSC 875 Advanced Topics in Database Systems (Units: 3)

Prerequisites: CSC 675 with grade of C or better.

Advanced aspects of selected topics in database systems. Topics depend on availability of staff and facilities. May be repeated for a total of 6 units when topics vary.

CSC 877 Topics in Big Data Analysis (Units: 3)

Prerequisites: Graduate standing; CSC 510 or equivalent or consent of instructor.

Introduction to current topics in data sciences and big data analysis. (Plus-minus letter grade only)

CSC 890 Graduate Seminar (Units: 3)

Prerequisite: Consent of graduate adviser/instructor.

Topic to be specified in Class Schedule. May be repeated when topics vary. The 1 unit version is offered each semester as a graduate research seminar that students must complete prior to CSC 895/CSC 898. (Plus-minus letter grade only.)

CSC 893 Supervised Industrial Research (Unit: 1)

Prerequisite: Consent of instructor.

Supervised computer science employment in software research and development area. Objectives are career development and occupational experience. May be repeated for a total of 3 units. Subsequently, may be repeated on CR/NC basis. Must be approved by graduate adviser.

CSC 895 Applied Research Project (Units: 3)

Prerequisite: Consent of instructor and approval of Advancement to Candidacy (ATC) for the MS in CS and Culminating Experience (CE) forms by Graduate Studies. Advancement to candidacy and Proposal for Culminating Experience Requirement forms must be approved by the Graduate Division before registration. (CR/NC grading only.)

CSC 897 Research (Units: 3-6)

Prerequisite: Consent of Computer Science Department.

Independent and original investigation under supervision of a faculty member. May be repeated for a total of 6 units.

CSC 898 Master's Thesis (Units: 3)

Prerequisites: Consent of instructor and graduate adviser and approval of Advancement to Candidacy (ATC) for the Master of Science in Computer Scienceand Culminating Experience (CE) forms by Graduate Studies. Advancement to Candidacy (ATC) and Proposal for Culminating Experience Requirement forms must be approved by the Graduate Division before registration. (CR/NC grading only.)

CSC 899 Independent Study (Units: 1-3)

Prerequisites: Approval of department and instructor.

Special study of a particular problem under the direction of a faculty member. The student must present a written, detailed report of the work accomplished to the staff of the department. (AB/NC only.) May be repeated for a total of 6 units.