Computer Science

College of Science and Engineering

Dean: Dr. Carmen Domingo

Department of Computer Science

TH 906
Phone: (415) 338-1008
Email: csgrad@sfsu.edu
Website: http://cs.sfsu.edu

Chair: Arno Puder
Graduate Coordinator: Yang
Graduate Admissions: Okada
Undergraduate Advisors: AlJarrah, Dujmovic, Fazli, Humayoun, Kulkarni, Singh, Song, Yue

Program Scope

The primary mission of the Department of Computer Science is to prepare students for careers as software professionals and graduate studies in computer science and related fields. 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 on 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 and industry leaders 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 in 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. Courses are updated or added regularly 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 Ph.D. degrees. Our program combines a solid and practical curriculum with high-quality research and project-based activities. In addition to a general core covering the breadth of the computing discipline, students may focus on software engineering in globally distributed environments, computing applications for biotechnology and the life sciences, data mining/big data, and business applications.

Our faculty maintain active publication records, with significant funding from government agencies (NSF, NIH, Department of Labor, etc.) and industry (Genentech, Microsoft, IBM, Arista Networks, Mozilla, etc.). Students actively engage in research projects, write papers, attend conferences, and participate in funding proposals. SF State’s Center for Computing for Life Sciences 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. A new Entrepreneurship Program and Developers Prize supports the development of student projects into business or non-profit ventures.

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 courses
  • 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
  • Data science/data mining 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

Professor

Jozo J. Dujmović (1994), Professor in Computer Science. Ph.D. University of Belgrade.

William Tsun-Yuk Hsu (1992), Professor in Computer Science. Ph.D. University of Illinois.

Kazunori Okada (2006), Professor in Computer Science. Ph.D. University Southern California.

Dragutin Petkovic (2003), Professor in Computer Science. Ph.D. University of California, Irvine.

Arno Puder (2008), Professor in Computer Science. Ph.D. University of Frankfurt, Germany.

Rahul Singh (2004), Professor in Computer Science. Ph.D. University of Minnesota.

C. S. (James) Wong (1990), Professor in Computer Science. Ph.D. The University of Texas, Dallas.

Ilmi Yoon (2000), Professor in Computer Science. Ph.D. University of Southern California.

Associate Professor

Anagha K. Kulkarni (2013), Associate Professor in Computer Science. Ph.D. Carnegie Mellon University.

Hui Yang (2006), Associate Professor in Computer Science. Ph.D. Ohio State University.

Hao Yue (2015), Associate Professor in Computer Science. Ph.D. University of Florida.

Assistant Professor

Abeer Aljarrah (2018), Assistant Professor in Computer Science. Ph.D. University of North Carolina at Charlotte.

Pooyan Fazli (2018), Assistant Professor in Computer Science. Ph.D. University of British Columbia.

Aakash Gautam (2021), Assistant Professor in Computer Science. Ph.D. Virginia Polytechnic Institute and State University.

Daniel E. Huang (2021), Assistant Professor in Computer Science. Ph.D. Harvard University.

Shahrukh Humayoun (2019), Assistant Professor in Computer Science. Ph.D. Sapienza University of Rome.

Timothy Sun (2020), Assistant Professor in Computer Science. Ph.D. Columbia University.

Jingyi Wang (2019), Assistant Professor in Computer Science. Ph.D. University of Houston.

Lecturers

Bhaskar, Erwin, Esselmann, Gibson, Hasan, Jones, Kalinin, Kang, Kriese, Mehta, Mogos, Ortiz-Costa, Parra, Phyo, Pico, Pinera, Roberts, Scott, Sikder, Souza, Ta, Tomasevich, Tuttle, Wall

CSC 101 Introduction to Computing (Units: 3)

A comprehensive introduction to computing and programming. No prior programming experience is required. Explore the use of computing in everyday life and its impact on our society, and apply foundational ideas of computing to frame a problem and devise a solution using Java programming language.

CSC 110 Computational Thinking and Quantitative Reasoning (Units: 3)

Prerequisites: Category I or II placement for QR/Math, or satisfactory completion of ELM requirement, or MATH 70 or ESM 70 with a grade of C or better. Students with Category III or IV placement for QR/Math or students who have not passed MATH 70 or ESM 70 with a C or better must concurrently enroll in MATH 112.

Basic building blocks of programming and computational thinking practices including analyzing the effects of computation, creating computational artifacts, using abstractions and models, analyzing problems and artifacts, communicating processes and results, and working effectively in teams. Mathematical models and information retrieval from real-world datasets will be used as vehicles to practice programming and computation thinking.
(Note: For this course to satisfy General Education, students must earn a grade of C- or CR or higher.)

Course Attributes:

  • B4: Math/QR

CSC 210 Introduction to Computer Programming (Units: 3)

Prerequisite: Concurrent enrollment in CSC 211 required for Computer Science majors and recommended for non-majors.

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.

CSC 211 Introduction to Software Lab (Unit: 1)

Prerequisite: Concurrent enrollment in CSC 210.

Hands-on exercises in programming, and the use of basic software development tools. Covers procedural, object-oriented, C++, and JAVA programming. Students are encouraged to bring their laptops. Activity. May be repeated for a total of 3 units. (CR/NC grading only)

CSC 215 Intermediate Computer Programming (Units: 4)

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

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. Hands-on exercises in programming, and the use of basic software development tools.

CSC 219 Data Structures for Data Science Application Development (Units: 3)

Prerequisite: CSC 306* or equivalent.

Focuses on learning about and utilizing data structures and algorithms effectively for developing data science applications. Utilizes Python and Jupyter Notebook.

CSC 220 Data Structures (Units: 3)

Prerequisite: CSC 210 or CSC 215 with a grade of C or better.

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 tables.

CSC 221 Data Structure Lab (Unit: 1)

Prerequisites: CSC 210 and CSC 211; concurrent enrollment in CSC 220.

Training on the principles of object-oriented programming, data structures (such as stacks, queues, lists, trees, sets, HashMaps, etc.), implementation, and usage in solving real-life problems, recursion, and algorithm analysis. Activity. (CR/NC grading only)

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

Prerequisites: CSC 210 and MATH 227 (may be taken concurrently) with grades of C or better.

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

CSC 256 Machine Structures (Units: 3)

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

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

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

Prerequisites: Restricted to upper-division Computer Science majors and minors; GE Area A2; CSC 210.

Privacy, security, legal, and ethical issues in Software development. Communication relevant to SW development (e.g., 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)

Prerequisites: Restricted to Biology, Chemistry, and Biochemistry majors and pre-majors; upper-division standing; or permission of the instructor.

Basics of programming for interdisciplinary problem-solving, using Python. Topics include basic building blocks of programming (variables, control statements, loops, function, abstraction, and more) and problem-solving approaches relevant to problems in the natural sciences.

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

Prerequisite: Upper-division standing or permission of the instructor.

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

CSC 308 Introduction to Machine Learning for Interdisciplinary Data Scientists (Units: 3)

Prerequisite: CSC 219 or CSC 220; a college-level biology course; or permission of the instructor.

Introduction to the basic machine learning concepts and tools. Focus on applying them for application development, linear model, deep neural network and transfer learning using Python, Tensorflow, and Keras. (Plus-minus letter grade only)

CSC 309 Computer Programming (Units: 3)

Prerequisite: MATH 226 or permission of the instructor.

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

CSC 310 Computer Programming Lab (Unit: 1)

Prerequisite: Concurrent enrollment in CSC 309 is recommended.

Exercises in Python programming and use of basic software development tools.

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

Prerequisite: CSC 220 or permission of the instructor.

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

CSC 340 Programming Methodology (Units: 3)

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

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

CSC 412 Advanced Software Lab (Unit: 1)

Prerequisites: 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 laptops. Activity. May be repeated for a total of 2 units. (Plus-minus letter grade only)

CSC 413 Software Development (Units: 3)

Prerequisite: CSC 220 with grade of C or better.

Modern software applications. Object-oriented techniques: encapsulation, inheritance, and polymorphism as a 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: CSC 256, CSC 340*, MATH 324, and PHYS 230 with grades of C or better or graduate standing*.

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

CSC 508 Machine Learning and Data Science for Personalized Medicine (Units: 3)

Prerequisite: CSC 308 (may be taken concurrently).

Exploration of the concepts and tools needed to analyze, interpret, and reason from genomic datasets to help medical professionals better treat their patients. Diseases often affect patients differently depending on their genetic background. To make personalized medicine a reality, it is necessary to leverage the data from genomic datasets. Genomic data science applies machine learning and data science to the genome to better diagnose and treat patients. (Plus-minus letter grade only)

CSC 509 Data Science and Machine Learning for Medical Image Analysis (Units: 3)

Prerequisite: CSC 308 (may be taken concurrently).

Exploration of the application of state-of-the-art deep learning models to medical image analysis: the task of identifying objects such as tissue, bone within an image. Discussion of topics central to deep learning-based image analysis, and practical application of these concepts in three hands-on case studies. (Plus-minus letter grade only)

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 methods. Measures of algorithm complexity in space and time. Algorithms of classic problems including sorting and scheduling and complexity analysis of such algorithms.

CSC 520 Theory of Computing (Units: 3)

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

Examination of automata, formal languages, and the notion of computability. Discussion of sequential machines as language acceptors and context-free and context-sensitive grammars. Exploration of recursive functions, universal Turing machines, and unsolvable problems.

CSC 600 Programming Paradigms and Languages (Units: 3)

Prerequisites: CSC 413* and CSC 510* with grades of C or better or graduate-level standing*.

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 601 Data Science and Machine Learning for Biotechnology Seminar Series (Unit: 1)

Prerequisite: CSC 308* or CSC 508* or CSC 509*.

Featuring scientists in related areas from Genentech or other biotechnology industry or academia, explore a broad view of the topics on Drug design, modeling to predict drug performance, or new drug approval processes. (CR/NC grading only)

CSC 602 Interview Preparation for Data Science and Machine Learning for Biotechnology Opportunities (Units: 2)

Prerequisite: CSC 308 or CSC 508 or CSC 509.

Preparation for interviews for data science-related internships and full-time positions in industry. Emphasis on oral and written communication common in coding interviews for problem-solving. Development of interview skills such as how to communicate about technical aspects, describe a problem, and articulate issues. Practice of key problem-solving strategies specific to technical/coding interviews in Biotechnology. (CR/NC grading only)

CSC 615 UNIX Programming (Units: 3)

Prerequisite: CSC 415* with a grade of C or better or permission of the instructor.

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

CSC 620 Natural Language Technologies (Units: 3)

Prerequisite for CSC 820: Graduate standing or permission of the instructor.
Prerequisites for CSC 620: Upper-division standing; CSC 413* with a grade of C or better; GPA of 3.0 or higher; or permission of the instructor.

Introduction to the fundamental concepts and techniques of Natural Language Processing (NLP). In-depth understanding of the computational properties of natural language and the commonly used algorithms for processing language data. Illustration of the pervasiveness of natural language technologies through real-world applications. Practical experience in NLP through hands-on exercises. Extra fee required. (Plus-minus letter grade only)
(CSC 820/CSC 620 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 and Analysis (Units: 3)

Prerequisite for CSC 821: Graduate standing or permission of the instructor.
Prerequisites for CSC 621: Upper-division standing; CSC 510*; MATH 225* or MATH 325* with grades of C or better; GPA of 3.0 or higher; or permission of the instructor.

Introduction to medical and biological imaging, imaging physics, 3D image formats, and visualization. Basic digital image processing and analysis, filtering, registration, segmentation, quantification, and performance evaluation. (Plus-minus letter grade only)
(CSC 821/CSC 621 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 413* and MATH 225* with grades of C or better.

Graphics system design and GPU pipeline architecture and Generative AI on graphics. Overview of device-independent graphic systems such as OpenGL, 2- & 3-dimensional viewing pipelines, hidden line and surface removal algorithms, raster graphics techniques, and color space models. Topics on generative AI for graphics such as StyleGAN are covered. Course fee required. (Plus-minus letter grade only)

CSC 631 Multiplayer Game Development (Units: 3)

Prerequisite for CSC 831: Graduate standing or permission of the instructor.
Prerequisites for CSC 631: Upper-division standing; CSC 413*; GPA of 3.0 or higher; or permission of the instructor.

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

CSC 641 Computer Performance Evaluation (Units: 3)

Prerequisite for CSC 841: Graduate standing or permission of the instructor.
Prerequisites for CSC 641: Upper-division standing; CSC 415*; GPA of 3.0 or higher; or permission of the 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 841/CSC 641 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 for CSC 842: Graduate standing or permission of the instructor.
Prerequisite for CSC 642: Upper-division standing; CSC 413* with a grade of C or better or permission of the 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 842/CSC 642 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 645 Computer Networks (Units: 3)

Prerequisites: Upper-division standing; CSC 415* with a grade of C or better; GPA of 3.0 or better; or permission of the instructor.

Computer network design, evaluation, and testing. Computer network standards and implementation. Hardware and software design and compatibility issues. Extra fee required.

CSC 647 Introduction to Quantum Computing and Quantum Information Science (Units: 3)

Prerequisite for CSC 747: Graduate standing or permission of the instructor.
Prerequisites for CSC 647: Upper-division standing; CSC 415* and MATH 325* with a grade of C or better; CSC 308, CSC 309, and CSC 656 recommended; GPA of 3.0 or higher; or permission of the instructor.

Introduction to quantum computing and quantum information science. Comparison of classical and quantum computing architectures and organization. Quantum algorithm design and implementation on circuit-based and annealing quantum platforms. Program execution and performance analysis on quantum platform simulators and actual quantum hardware, subject to availability. Survey of research topics in quantum computing ranging from algorithms (e.g., Grover's Search) and their application to problems in quantum cryptography, quantum machine learning, and hybrid classical/quantum algorithms.
(CSC 647/CSC 747 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)

Prerequisite for CSC 848: Graduate standing or permission of the instructor.
Prerequisites for CSC 648: Upper-division standing; CSC 317* and CSC 413* with grades of C or better; GPA of 3.0 or higher; or permission of the instructor.

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

CSC 649 Search Engines (Units: 3)

Prerequisite for CSC 849: Graduate standing or permission of the instructor.
Prerequisite for CSC 649: Restricted to upper-division standing or CSC 413* with a grade of B or better or permission of the instructor.

Introduction to the internals of modern search engines. Methods and tools for representation, storage, organization, and textual data access. Extra fee required. (Plus-minus letter grade only)
(CSC 849/CSC 649 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

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 652 Introduction to Security and Data Privacy (Units: 3)

Prerequisite for CSC 852: Graduate standing or permission of the instructor.
Prerequisite for CSC 652: CSC 415* with a grade of C or better or permission of the instructor.

Introduction to fundamental concepts in cybersecurity, cryptography, and data privacy. Practice different privacy mechanisms in databases and present applications to a wide range of data analysis tasks. Extra fee required.
(CSC 852/CSC 652 [formerly CSC 650] is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 653 Network Security (Units: 3)

Prerequisite for CSC 853: Graduate standing or permission of the instructor.
Prerequisites for CSC 653: Upper-division standing; CSC 415* with a grade of C or better; GPA of 3.0 or better; or permission of the instructor.

Introduction to the fundamental concepts of computer network security as well as standard security mechanisms and protocols.
(CSC 853/CSC 653 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 656 Computer Organization (Units: 3)

Prerequisite: CSC 415* (may be taken concurrently) or permission of the instructor.

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

CSC 657 Bioinformatics Computing (Units: 3)

Prerequisite: Upper-division or graduate standing in a science program or permission of the instructor.

A 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 857/CSC 657 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 658 Programming Cafe (Units: 3)

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

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

CSC 664 Multimedia Systems (Units: 3)

Prerequisite for CSC 864: Graduate standing or permission of the instructor.
Prerequisites for CSC 664: Upper-division standing; CSC 413* with a grade of C or better; GPA of 3.0 or higher; or permission of the instructor.

Comprehensive topics in multimedia such as basics of image and video processing, compression, multimedia databases, standard, synchronization, formats in the perspective of systems, and algorithms. Extra fee required. (Plus-minus letter grade only)
(CSC 864/CSC 664 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 for CSC 865: Graduate standing or permission of the instructor.
Prerequisite for CSC 665: Restricted to upper-division standing or CSC 413* with a grade of C or better or permission of the instructor.

Overview of algorithms and approaches to artificial intelligence. Study of fundamental concepts needed to attain human-level intelligence in computer systems, and gain experience in working with these concepts through assignments and programming exercises. Topics include problem-solving methods, heuristic search, game playing, agent architectures, machine learning, and various topics selected from knowledge representation, symbolic reasoning, computational models of virtual humans, neural networks, and genetic algorithms. Extra fee required.
(CSC 665/CSC 865 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

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

Prerequisite for CSC 867: Graduate standing or permission of the instructor.
Prerequisites for CSC 667: Upper-division standing; CSC 413* with a grade of C or better; GPA of 3.0 or higher; or permission of the instructor.

Fundamental technologies on which the World Wide Web is based. Extra fee required.
(CSC 867/CSC 667 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)

Prerequisite for CSC 868: Graduate standing or permission of the instructor.
Prerequisites for CSC 668: Senior standing; CSC 413* with a grade of C or better; GPA of 3.0 or better; or permission of the 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. Extra fee required. (Plus-minus letter grade only)
(CSC 868/CSC 668 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 671 Deep Learning (Units: 3)

Prerequisite for CSC 871: Graduate standing or permission of the instructor.
Prerequisites for CSC 671: Upper-division standing; CSC 510*; MATH 225 or MATH 325 with a grade of C or better; GPA of 3.0 or higher; or permission of the instructor.

Exploration of the major technology trends that drive Deep Learning. Discussion of concepts and technologies to build, train, and apply fully connected deep neural networks. Focus on understanding the key parameters in a neural network's architecture and learning how Deep Learning actually works. (Plus-minus letter grade only)

CSC 675 Introduction to Database Systems (Units: 3)

Prerequisite for CSC 775: Graduate standing or permission of the instructor.
Prerequisites for CSC 675: Upper-division standing; CSC 413* with a grade of C or better; GPA of 3.0 or higher; or permission of the instructor.

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 775/CSC 675 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 676 Soft Computing and Decision Support Systems (Units: 3)

Prerequisite for CSC 876: Graduate standing or permission of the instructor.
Prerequisite for CSC 676: Upper-division standing; GPA of 3.0 or better; or permission of the instructor.

Development of software systems for decision support including applications of soft computing. Topics include fuzzy sets, fuzzy logic, fuzzy systems, fuzzy decision-making, fuzzy controllers, approximate reasoning, possibility theory, rough sets, graded evaluation logic, logic aggregation operators, information fusion models, decision engineering methods, computing with words, perceptual computing, granular computing, and the LSP method for evaluation and optimization of complex systems. (Plus-minus letter grade only)
(CSC 876/CSC 676 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

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

Prerequisite for CSC 780: Graduate Computer Science students or permission of the instructor.
Prerequisites for CSC 680: Restricted to senior Computer Science majors; CSC 415* with a grade of C or better; 3.0 GPA or higher; or permission of the instructor.

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 780/CSC 680 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)

Prerequisite: CSC 340* with a grade of C or better or permission of the 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 694 Cooperative Education: Computer Science (Units: 1-3)

Prerequisite: Permission of the instructor.

Projects in a business, government, or industrial position of at least one semester's duration. May be repeated for a total of 3 units.

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

Prerequisites: CSC 415 and CSC 510, or CSC 648; or permission of the instructor.

Culminating experience in individual design, implementation, and professional documentation of a software product under the close supervision of a faculty member. (Plus-minus letter grade only)

CSC 698 Topics in Computing (Units: 3)

Prerequisite: Upper-division standing or permission of the instructor.

Current topics in computer hardware and software technologies. Topics to be specified in the Class Schedule. May be repeated for a total of 9 units when topics vary.

Topics:

  1. Interactive Multimedia Development
  2. Augmented Reality Software Systems
  3. Research Topics in Computing Applications
  4. Advanced Topics in Computing Applications
  5. Applications of Parallel Computations
  6. Real-Time Cross-Platform Application Development
  7. Principles of Information Security and Privacy
  8. Software Design, Development, and Pedagogy
  9. Information Visualization: Tools and Techniques

CSC 699 Independent Study (Units: 1-3)

Prerequisites: Permission of the department and instructor. An approved study proposal must be on file by the time of registration.

Library and laboratory research and development projects. A final report must be approved by the instructor and filed with the department. May be repeated for a total of 9 units. (Plus-minus letter grade only)

CSC 720 Advanced Operating Systems (Units: 3)

Prerequisite: Graduate standing or permission of the instructor.

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

CSC 746 High-Performance Computing (Units: 3)

Prerequisite: Graduate standing or permission of the 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 747 Introduction to Quantum Computing and Quantum Information Science (Units: 3)

Prerequisite for CSC 747: Graduate standing or permission of the instructor.
Prerequisites for CSC 647: Upper-division standing; CSC 415* and MATH 325* with a grade of C or better; CSC 308, CSC 309, and CSC 656 recommended; GPA of 3.0 or higher; or permission of the instructor.

Introduction to quantum computing and quantum information science. Comparison of classical and quantum computing architectures and organization. Quantum algorithm design and implementation on circuit-based and annealing quantum platforms. Program execution and performance analysis on quantum platform simulators and actual quantum hardware, subject to availability. Survey of research topics in quantum computing ranging from algorithms (e.g., Grover's Search) and their application to problems in quantum cryptography, quantum machine learning, and hybrid classical/quantum algorithms.
(CSC 647/CSC 747 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 775 Introduction to Database Systems (Units: 3)

Prerequisite for CSC 775: Graduate standing or permission of the instructor.
Prerequisites for CSC 675: Upper-division standing; CSC 413* with a grade of C or better; GPA of 3.0 or higher; or permission of the instructor.

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 775/CSC 675 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 for CSC 780: Graduate Computer Science students or permission of the instructor.
Prerequisites for CSC 680: Restricted to senior Computer Science majors; CSC 415* with a grade of C or better; 3.0 GPA or higher; or permission of the instructor.

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 780/CSC 680 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 805 Data Visualization: Concepts, Tools, Techniques, and Paradigms (Units: 3)

Prerequisites: Restricted to graduate Computer Science students. Senior undergraduate Computer Science majors may enroll with the permission of the instructor.

Concepts, techniques, algorithms, and technologies for creating effective and efficient visual data representations and visual analytic tools based on principles from computer graphics, HCI, visual art, perceptual psychology, and cognitive science to enhance the understanding and communication of complex and multi-dimensional data. (Plus-minus letter grade only)

CSC 810 Analysis of Algorithms II (Units: 3)

Prerequisite: Graduate standing or permission of the instructor.

Review major design strategies and theory of NP-Completeness. Approximation algorithms. Online Algorithms. Parallel and distributed algorithms. Algorithms for specific areas of interest. Extra fee required.

CSC 820 Natural Language Technologies (Units: 3)

Prerequisite for CSC 820: Graduate standing or permission of the instructor.
Prerequisites for CSC 620: Upper-division standing; CSC 413* with a grade of C or better; GPA of 3.0 or higher; or permission of the instructor.

Introduction to the fundamental concepts and techniques of Natural Language Processing (NLP). In-depth understanding of the computational properties of natural language and the commonly used algorithms for processing language data. Illustration of the pervasiveness of natural language technologies through real-world applications. Practical experience in NLP through hands-on exercises. Extra fee required. (Plus-minus letter grade only)
(CSC 820/CSC 620 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 and Analysis (Units: 3)

Prerequisite for CSC 821: Graduate standing or permission of the instructor.
Prerequisites for CSC 621: Upper-division standing; CSC 510*; MATH 225* or MATH 325* with grades of C or better; GPA of 3.0 or higher; or permission of the instructor.

Introduction to medical and biological imaging, imaging physics, 3D image formats, and visualization. Basic digital image processing and analysis, filtering, registration, segmentation, quantification, and performance evaluation. (Plus-minus letter grade only)
(CSC 821/CSC 621 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: Graduate standing or permission of the instructor.

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 831 Multiplayer Game Development (Units: 3)

Prerequisite for CSC 831: Graduate standing or permission of the instructor.
Prerequisites for CSC 631: Upper-division standing; CSC 413*; GPA of 3.0 or higher; or permission of the instructor.

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

CSC 841 Computer Performance Evaluation (Units: 3)

Prerequisite for CSC 841: Graduate standing or permission of the instructor.
Prerequisites for CSC 641: Upper-division standing; CSC 415*; GPA of 3.0 or higher; or permission of the 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 841/CSC 641 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 842 Human-Computer Interaction (Units: 3)

Prerequisite for CSC 842: Graduate standing or permission of the instructor.
Prerequisite for CSC 642: Upper-division standing; CSC 413* with a grade of C or better or permission of the 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 842/CSC 642 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 845 Advanced Computer Networks (Units: 3)

Prerequisite: Graduate standing or permission of the instructor.

Design and implementation of networking protocols and technologies in wireless and mobile networks. Introduction to emerging design, algorithms, protocols, and applications in wireless and mobile networks. Extra fee required.

CSC 847 Cloud and Distributed Computing: Concepts and Applications (Units: 3)

Prerequisites: Restricted to senior and graduate Computer Science and Data Science and Artificial Intelligence students; permission of the instructor.

Infrastructure, platform, and software as a service. Includes enabling techniques behind cloud computing including virtualization, multi-tenancy, and service-oriented architecture. Cloud storage options such as NoSQL databases, emerging technologies such as containers and Kubernetes, parallel and distributed computing platforms including MapReduce and Apache Sparc, and hands-on experience on public clouds such as the Amazon Cloud and Google Cloud. (Plus-minus letter grade only)

CSC 848 Software Engineering (Units: 3)

Prerequisite for CSC 848: Graduate standing or permission of the instructor.
Prerequisites for CSC 648: Upper-division standing; CSC 317* and CSC 413* with grades of C or better; GPA of 3.0 or higher; or permission of the instructor.

Practical methods and tools for SW engineering including organizational teamwork.
(CSC 848/CSC 648 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 for CSC 849: Graduate standing or permission of the instructor.
Prerequisite for CSC 649: Restricted to upper-division standing or CSC 413* with a grade of B or better or permission of the instructor.

Introduction to the internals of modern search engines. Methods and tools for representation, storage, organization, and textual data access. Extra fee required. (Plus-minus letter grade only)
(CSC 849/CSC 649 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 852 Introduction to Security and Data Privacy (Units: 3)

Prerequisite for CSC 852: Graduate standing or permission of the instructor.
Prerequisite for CSC 652: CSC 415* with a grade of C or better or permission of the instructor.

Introduction to fundamental concepts in cybersecurity, cryptography, and data privacy. Practice different privacy mechanisms in databases and present applications to a wide range of data analysis tasks. Extra fee required.
(CSC 852/CSC 652 [formerly CSC 650] is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 853 Network Security (Units: 3)

Prerequisite for CSC 853: Graduate standing or permission of the instructor.
Prerequisites for CSC 653: Upper-division standing; CSC 415* with a grade of C or better; GPA of 3.0 or better; or permission of the instructor.

Introduction to the fundamental concepts of computer network security as well as standard security mechanisms and protocols.
(CSC 853/CSC 653 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 857 Bioinformatics Computing (Units: 3)

Prerequisite: Upper-division or graduate standing in a science program or permission of the instructor.

A 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 857/CSC 657 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 859 AI Explainability and Ethics (Units: 3)

Prerequisite: Graduate standing or permission of the instructor.

A brief overview of Artificial Intelligence (AI) and the impact of AI on society and business. The motivation for explainable and ethical AI systems. Analysis, practice, and evaluation of technologies and methods for the design, development, and evaluation of explainable and ethical AI systems. (Plus-minus letter grade, RP only)

CSC 864 Multimedia Systems (Units: 3)

Prerequisite for CSC 864: Graduate standing or permission of the instructor.
Prerequisites for CSC 664: Upper-division standing; CSC 413* with a grade of C or better; GPA of 3.0 or higher; or permission of the instructor.

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

CSC 865 Artificial Intelligence (Units: 3)

Prerequisite for CSC 865: Graduate standing or permission of the instructor.
Prerequisite for CSC 665: Restricted to upper-division standing or CSC 413* with a grade of C or better or permission of the instructor.

Overview of algorithms and approaches to artificial intelligence. Study of fundamental concepts needed to attain human-level intelligence in computer systems, and gain experience in working with these concepts through assignments and programming exercises. Topics include problem-solving methods, heuristic search, game playing, agent architectures, machine learning, and various topics selected from knowledge representation, symbolic reasoning, computational models of virtual humans, neural networks, and genetic algorithms. Extra fee required.
(CSC 665/CSC 865 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 for CSC 867: Graduate standing or permission of the instructor.
Prerequisites for CSC 667: Upper-division standing; CSC 413* with a grade of C or better; GPA of 3.0 or higher; or permission of the instructor.

Fundamental technologies on which the World Wide Web is based. Extra fee required.
(CSC 867/CSC 667 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)

Prerequisite for CSC 868: Graduate standing or permission of the instructor.
Prerequisites for CSC 668: Senior standing; CSC 413* with a grade of C or better; GPA of 3.0 or better; or permission of the 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. Extra fee required. (Plus-minus letter grade only)
(CSC 868/CSC 668 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)

Prerequisite: Graduate standing or permission of the instructor.

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

CSC 871 Deep Learning (Units: 3)

Prerequisite for CSC 871: Graduate standing or permission of the instructor.
Prerequisites for CSC 671: Upper-division standing; CSC 510*; MATH 225 or MATH 325 with a grade of C or better; GPA of 3.0 or higher; or permission of the instructor.

Exploration of the major technology trends that drive Deep Learning. Discussion of concepts and technologies to build, train, and apply fully connected deep neural networks. Focus on understanding the key parameters in a neural network's architecture and learning how Deep Learning actually works. (Plus-minus letter grade only)

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

Prerequisite: Graduate standing or permission of the instructor.

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

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

Prerequisite: Graduate standing or permission of the instructor.

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

CSC 876 Soft Computing and Decision Support Systems (Units: 3)

Prerequisite for CSC 876: Graduate standing or permission of the instructor.
Prerequisite for CSC 676: Upper-division standing; GPA of 3.0 or better; or permission of the instructor.

Development of software systems for decision support including applications of soft computing. Topics include fuzzy sets, fuzzy logic, fuzzy systems, fuzzy decision-making, fuzzy controllers, approximate reasoning, possibility theory, rough sets, graded evaluation logic, logic aggregation operators, information fusion models, decision engineering methods, computing with words, perceptual computing, granular computing, and the LSP method for evaluation and optimization of complex systems. (Plus-minus letter grade only)
(CSC 876/CSC 676 is a paired course offering. Students who complete the course at one level may not repeat the course at the other level.)

CSC 878 Big Data Platforms and Systems (Units: 3)

Prerequisite: Restricted to graduate Computer Science students or permission of the instructor.

Examination of Big Data's main characteristics. Introduction of and experimentation with common platforms and systems of the Big Data ecosystem on premises or in the cloud. Application of Big Data management systems such as NoSQL databases. Utilization of mainstream Big Data platforms such as Apache Hadoop and Apache Spark to address real-world big data problems. (Plus-minus letter grade only)

CSC 890 Graduate Seminar (Units: 3)

Prerequisite: Permission of the instructor or graduate advisor.

Explore a variety of current advanced research trends in Computer Science. Topics to be specified in the Class Schedule. May be repeated for a total of 6 units when topics vary. (Plus-minus letter grade only)

Topics:

  1. Selected Topics in Computing for Life Science
  2. Health Informatics
  3. Advanced Information Security and Privacy
  4. Advanced Artificial Intelligence
  5. Data Visualization
  6. Big Data and Cybersecurity
  7. Special Topics in Technology and Society
  8. Software Engineering and Industry Practices
  9. Quantum Computing
  10. Technical Entrepreneurship

CSC 893 Supervised Industrial Research (Unit: 1)

Prerequisite: Permission of the instructor.

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

CSC 895 Applied Research Project (Units: 3)

Prerequisites: Permission of the 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: Permission of the Computer Science Department.

Independent and original investigation under the supervision of a faculty member. May be repeated for a total of 6 units. (Plus-minus letter grade, CR/NC, RP)

CSC 898 Master's Thesis (Units: 3)

Prerequisites: Permission of the instructor and graduate adviser and approval of Advancement to Candidacy (ATC) for the Master of Science in Computer Science and 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)

Prerequisite: Approval of the department and instructor.

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