Computer Science (CSCI)

See Course Description Symbols and Terms for an explanation of course description terminology and symbols, the course numbering system, and course credit units.


CSCI 101  Introduction to Computer Science  3 Units  
Typically Offered: Fall and spring  
Students who have had limited experience with computers should take CSCI 101 before CSCI 111. CSCI 101 provides an overview of the fundamentals of computer science. Number systems and data representation are introduced. An overview of hardware, including the control unit, memory, the ALU, and I/O is provided. Software is introduced with an overview of operating systems, programming languages, applications, and software tools. Students are exposed to common operating systems and applications. Student also design and implement several programs. 2 hours activity, 2 hours discussion.  (002280)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Lower Division  
CSCI 102  Living With Technology  3 Units  GE  
Typically Offered: Fall and spring  
This course explores the impact of technology on our lives. Aspects of our complex technological society are investigated through study of the various forms technology takes, and readings in contemporary literature regarding the impact these technologies have on individuals. Students are encouraged to reflect on technology in their own lives through journaling, and to discourse with their peers on the benefits and harm to individuals, society, and humanity that modern technology presents. 3 hours discussion.  (020623)  
General Education: Lifelong Learning and Self-Development (E)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Lower Division; Sustainable Course  
CSCI 111  Programming and Algorithms I  4 Units  
Prerequisite: GE Mathematics/Quantitative Reasoning (B4) requirement, completion of high school precalculus, or meet requirements for enrollment in MATH 120. Recommended Co-enrollment: CSCI 217/MATH 217 (take concurrently).  
Typically Offered: Fall and spring  
A first-semester programming course, providing an overview of computer systems and an introduction to problem solving and software design using procedural object-oriented programming languages. Coverage includes the software life cycle, as well as algorithms and their role in software design. Students are expected to design, implement, and test a number of programs. 2 hours activity, 3 hours lecture.  (002281)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 4 units  
Course Attributes: Lower Division; Laptop required  
CSCI 198  Special Topics  1-3 Units  
Prerequisite: Department permission.  
Typically Offered: Fall and spring  
This course is for special topics offered for 1.0-3.0 units. Typically the topic is offered on a one-time-only basis and may vary from term to term and be different for different sections. See the Class Schedule for the specific topic being offered. 3 hours supervision.  (002307)  
Grade Basis: Graded  
Repeatability: You may take this course more than once  
Course Attributes: Lower Division  
CSCI 199  Special Problems  1-3 Units  
Prerequisite: Faculty permission.  
Typically Offered: Fall and spring  
This course is a special topic offered for 1.0-3.0 units. You must register directly with a supervising faculty member. 0 hours supervision.  (021848)  
Grade Basis: Credit/No Credit  
Repeatability: You may take this course for a maximum of 6 units  
Course Attributes: Lower Division  
CSCI 211  Programming and Algorithms II  4 Units  
Prerequisite: GE Mathematics/Quantitative Reasoning (B4) requirement; CSCI 111 with a grade of C or higher. Recommended: CSCI 217 or MATH 217 (may be taken concurrently).  
Typically Offered: Fall and spring  
A second semester object-oriented programming course in computer science that emphasizes problem solving. This course continues the study of software specification, design, implementation, and debugging techniques while introducing abstract data types, fundamental data structures and associated algorithms. Coverage includes dynamic memory, file I/O, linked lists, stacks, queues, trees, recursion, and an introduction to the complexity of algorithms. Students are expected to design, implement, test, and analyze a number of programs. 2 hours activity, 3 hours lecture.  (002282)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 4 units  
Course Attributes: Lower Division  
CSCI 217  Discrete Mathematics  3 Units  
Prerequisite: GE Mathematics/Quantitative Reasoning Ready, CSCI 111 with a grade of C or higher (may be taken concurrently), MATH 119 (or equivalent).  
Typically Offered: Fall and spring  
Offers an intensive introduction to discrete mathematics as used in computer science. Topics include sets, relations, propositional and predicate logic, basic proof methods including mathematical induction, digital logic circuits, complexity of algorithms, elementary combinatorics, and solving linear recurrence relations. 3 hours discussion.  (005550)  
Cross listing(s): MATH 217  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Lower Division  
CSCI 221  Assembly Language Programming  3 Units  
Prerequisite: CSCI 211 with a grade of C or higher. CSCI 217 or MATH 217 recommended.  
Typically Offered: Inquire at department  
Topics include number systems and their rules for arithmetic; basic central processing unit (CPU) organization concepts such as registers, data paths, the arithmetic and logic unit (ALU) and the interface to random access memory (RAM); instruction formats, addressing modes and their uses with a variety of data structures; and parameter passing techniques including the use of a stack frame. The use of good programming methodologies to develop and document algorithms at the assembly language level is emphasized. 2 hours activity, 2 hours lecture.  (002290)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Lower Division  
CSCI 300  Computer Science Seminar  1 Unit  
Prerequisite: CSCI 211 with a grade of C or higher.  
Typically Offered: Fall and spring  
This course exposes students to computer science topics not normally covered in the computer science curriculum. Guest speakers include faculty (including from other departments), students, alumni, and members of the computing industry. Topics include current computer science research and software development issues. Specific topics may include software development tools, bioinformatics, human computer interaction, security, machine learning, specific corporate approaches to software development, dev-ops, software job interviews, programming languages, simulation, graphics, game development, web and mobile applications, cloud computing, and networks. 1 hour lecture.  (021889)  
Grade Basis: Credit/No Credit  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 301W  Computer's Impact on Society (W)  3 Units  W, GW  
Prerequisite: GE Written Communication (A2) requirement; Junior standing.  
Typically Offered: Fall and spring  
Impact of computers and high-tech systems on people, institutions, organizations, and environment. Examines the following: law, medicine, education, government, data banks, privacy, computer security, changing work, automation, robots, expert systems, AI, social responsibility, ethics, war, conflict resolution. Includes weekly reading, midterm, and final writing projects. Weekly lectures, discussions, films, and writing. No programming. 3 hours discussion.  (002309)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division; Writing Course; Graduation Writing Assessment  
CSCI 310  Programming Foundations  6 Units  
Prerequisite: Graduate Standing.  
Typically Offered: Fall only  
An accelerated object-oriented programming course that prepares students without sufficient undergraduate preparation for the graduate program in computer science. Coverage includes software specification, design, implementation, debugging techniques, dynamic memory, I/O, linked lists, stacks, queues, recursion, trees, search structures, hashing, heaps, sorting algorithms, graph algorithms, and an introduction to the complexity of algorithms. Foundational data structures and algorithms are studied and analyzed using both mathematical and empirical measurements. The course includes a number of large programming assignments focusing on object-oriented software engineering and algorithm development. 2 hours activity, 5 hours discussion.  (022021)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 6 units  
Course Attributes: Upper Division  
CSCI 311  Algorithms and Data Structures  4 Units  
Prerequisite: CSCI 211 with a grade of C or higher; CSCI 217 or MATH 217 with a grade of C or higher.  
Typically Offered: Fall and spring  
This course focuses on object-oriented methodologies in designing and implementing a variety of data structures and algorithms. Coverage includes recursion, trees, search structures, hashing, heaps, sorting algorithms, and graph algorithms. Data structure and algorithm combinations will be studied and analyzed along with their relative merits using both mathematical and empirical measurements. The course includes a number of large programming assignments focusing on object-oriented software engineering and algorithm development. Students will be required to design, implement, test, and analyze their programs in at least one object-oriented language. 2 hours activity, 3 hours lecture.  (002325)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 4 units  
Course Attributes: Upper Division  
CSCI 315  Programming Languages  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher.  
Typically Offered: Spring only  
An investigation into the structure and syntax of current programming languages, including binding, scoping, data types, transfer-of-control structures, subprograms, abstract data types, object-oriented programming, and logical and functional programming. 3 hours discussion.  (002323)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 344  Shell Programming  3 Units  
Prerequisite: CSCI 211 with a grade of C or higher; CSCI 217 or MATH 217 with a grade of C or higher.  
Typically Offered: Spring only  
This course examines the tools that allow software engineers to automate frequently performed operations and workflows, manipulate text and data, and develop software more quickly and easily than compiled languages. Shell programming in BASH or a similar shell, text processing languages such as sed and awk, and a scripting language such as Python or Ruby are covered. This course is recommended for students pursing careers in software development and/or information systems. 2 hours activity, 2 hours discussion.  (002330)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 345  Linux System Administration  3 Units  
Prerequisite: CSCI 211 with a grade of C or higher; CSCI 217 or MATH 217 with a grade of C or higher.  
Typically Offered: Fall only  
This course guides students through the fundamentals of Linux system administration. Topics include an exploration of the Linux Standard Base, user account and file system management, process and service management, operating system installation and configuration, and virtual and cloud environments. 2 hours activity, 2 hours discussion.  (002372)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 385  Introduction to Data Science  3 Units  
Prerequisite: CSCI 111, MATH 130, or MATH 230; MATH 109 or MATH 120.  
Typically Offered: Fall only  
Data Science is the science of learning from data in order to gain useful predictions and insights. The course provides an overview of the wide area of data science, with a particular focus on the tools required to store, clean, manipulate, visualize, model, and ultimately extract information from various sources of data. Topics include the analytics life cycle, data integration and modeling in R/Python, relational databases and SQL, text processing and sentiment analysis, and data visualization. Emphasis is placed on reproducible research, code sharing, version control, and communicating results to a non-technical audience. 3 hours discussion.  (021756)  
Cross listing(s): MATH 385  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 389  Industry Internship  1-3 Units  
Prerequisite: Department permission.  
Typically Offered: Fall and spring  
This internship is offered for 1.0-3.0 units. Students must register directly with a supervising faculty member. 3 hours supervision.  (002342)  
Grade Basis: Credit/No Credit  
Repeatability: You may take this course for a maximum of 15 units  
Course Attributes: Upper Division  
CSCI 398  Special Topics  1-3 Units  
Prerequisite: Department permission.  
Typically Offered: Fall and spring  
This course is for special topics offered for 1.0-3.0 units. Typically the topic is offered on a one-time-only basis and may vary from term to term and be different for different sections. See the Class Schedule for the specific topic being offered. 3 hours lecture.  (002350)  
Grade Basis: Graded  
Repeatability: You may take this course more than once  
Course Attributes: Upper Division  
CSCI 399  Special Problems  1-3 Units  
Prerequisite: Faculty permission.  
Typically Offered: Fall and spring  
This course is a special topic offered for 1.0-3.0 units. You must register directly with a supervising faculty member. Independent study and investigation of special problems in student's area of concentration. Both registration and study plan must have approval of the instructor and the department chair. 9 hours supervision.  (002351)  
Grade Basis: Credit/No Credit  
Repeatability: You may take this course for a maximum of 6 units  
Course Attributes: Upper Division  
CSCI 411  Advanced Algorithms  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher or Classified Computer Science Graduate Standing.  
Typically Offered: Fall and spring  
Students design, implement, and analyze algorithms for solving problems. Topics include greedy algorithms, dynamic programming, graphs (topological sort, strongly connected components), shortest paths (Bellman-Ford, Floyd-Warshall), minimum spanning trees (Kruskal's), flow network (max flow, min cut, maximum bipartite matching), string search (suffix tree, suffix array, Burrows-Wheeler's Transform, longest common prefix array), and advanced topics. This course integrates knowledge of data structures, algorithms, and programming. 3 hours lecture.  (002371)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division; Laptop required  
CSCI 415  Theory of Computation  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher.  
Typically Offered: Fall and spring  
An introduction to formal languages, grammars, and automata theory. Topics include finite automata, regular expressions, context-free grammars, Turing machines, computability, and complexity including P and NP classes, NP complete classes and problems, and undecidable problems. 3 hours lecture.  (022576)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division; Laptop required  
CSCI 417  Applied Linear Algebra for Computer Science  3 Units  
Prerequisite: CAGD 280, CSCI 211, or MECH 208 each with a grade of C or higher; or classified graduate standing.  
Typically Offered: Spring only  
In this course, linear algebra is studied from a computer science (CS) and algorithmic perspective, emphasizing its critical role in various CS domains. The course is centered around real-world CS applications and hands-on programming exercises. Students not only master the core concepts of vectors and matrices but also recognize their practical utility in contemporary computational challenges in CS. Throughout the course, students are exposed to a programming language of the instructor's choosing and use it to delve into an array of CS applications such as combinatorial optimization, image compression via principal component analysis (PCA), computer graphics, page rank algorithm, machine learning, and scientific visualization. 3 hours lecture.  (022545)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division; Laptop required  
CSCI 430  Software Engineering  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher.  
Typically Offered: Fall and spring  
An overview of software engineering principles, practice, and tools. Topics include: agile software engineering methodologies, requirements engineering, test-driven development, software design patterns, MVC architecture, version control, software metrics, and static analysis. Students work in groups to design and implement a semester-long open source software project. 2 hours activity, 2 hours discussion.  (002310)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 431W  Usability Engineering (W)  3 Units  GE, W  
Prerequisite: GE Oral Communication (A1); GE Written Communication (A2); GE Critical Thinking (A3); GE Mathematics/Quantitative Reasoning (B4) requirements, or consent of the instructor.  
Typically Offered: Fall and spring  
Usability Engineering is the craft of designing and evaluating how people interact with products and technology. In this course, students learn qualitative and quantitative methods for conducting behavioral research to investigate human-computer interaction (HCI) and to iteratively improve user experience (UX) design of digital interfaces. Students engage in team projects and conduct user research to design, evaluate and revise interactive prototypes following the user-centered design process. 2 hours activity, 2 hours discussion.  (020615)  
General Education: Upper-Division Social Sciences (UDD); Innovation, Design, and the Arts Pathway  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division; Laptop required; Writing Course  
CSCI 440  Operating Systems  4 Units  
Prerequisite: CSCI 221 or EECE 237; CSCI 311 all with a grade of C or higher.  
Typically Offered: Fall and spring  
Operating system fundamentals, including history, process and thread management, concurrency with semaphores and monitors, deadlocks, storage management, file systems, I/O, and distributed systems. 2 hours activity, 3 hours discussion.  (002328)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 4 units  
Course Attributes: Upper Division  
CSCI 446  Introduction to Computer Networks and Network Management  3 Units  
Prerequisite: CSCI 211; CINS 220, CSCI 221, or EECE 237 all with a C or higher.  
Typically Offered: Fall and spring  
This course is an introduction to basic networking technologies and network management concepts, including major network operating systems, communication architecture focusing on ISO and Internet models with discussion of current standards and protocols, and applications of probability and statistics in computer networking. Significant laboratory work using current networking equipment reinforces lectures and provides fundamental experience with router and switch management. 3 hours laboratory, 2 hours lecture.  (002340)  
Cross listing(s): EECE 446  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 485  Advanced Topics in Data Science  3 Units  
Prerequisite: CSCI 385 or MATH 385; MATH 456 (may be taken concurrently).  
Typically Offered: Spring only  
Getting connected to current events in Data Science and building an online presence. Ethics of predictive analytics and privacy and open data. Reporting and dissemination of research using interactive dashboards and web-publishing. Introduction to current scalable technologies to handle Big Data. Introduction to advanced statistical analysis and machine learning techniques for Data Science. 3 hours lecture.  (021890)  
Cross listing(s): MATH 485  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 490  Computer Science Capstone  3 Units  
Prerequisite: CSCI 430; CINS 465, CINS 467, or MATH 485; Senior Standing.  
Typically Offered: Fall and spring  
This capstone course provides a culminating activity in computer science. Students will work independently to specify, design, develop, test, and document a complete software application under faculty supervision. Students present status reports at weekly meetings, and present their finished project at the end of the semester. 9 hours supervision.  (002343)  
Grade Basis: Report in Progress: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 498  Topics in Computer Science  1-3 Units  
Typically Offered: Inquire at department  
This course is a special topic offered for 1.0-3.0 units. Exploration of selected topics in Computer Science. Consult semester schedules for specific listings. Standard letter grading only. 3 hours discussion.  (002389)  
Grade Basis: Graded  
Repeatability: You may take this course more than once  
Course Attributes: Upper Division  
CSCI 499  Special Problems  1-3 Units  
Prerequisite: Faculty permission.  
Typically Offered: Fall and spring  
This course is an independent study of special problems offered for 1.0-3.0 units. You must register directly with a supervising faculty member. 3 hours supervision.  (002390)  
Grade Basis: Credit/No Credit  
Repeatability: You may take this course for a maximum of 6 units  
Course Attributes: Upper Division  
CSCI 499H  Honors Research Project/Thesis  3 Units  
Prerequisite: Acceptance into Honors in the Major program.  
Typically Offered: Fall and spring  
Open by invitation to computer science majors with a GPA of 3.5 or higher in the major. This Honors in the Major course focuses on the development of a creative research project in computer science, its presentation, discussion of relevant research materials, and the reporting of findings. 9 hours supervision.  (002391)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 511  Advanced Object-Oriented Programming  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher.  
Typically Offered: Fall only  
This course is dedicated to the analysis, design, and implementation of programming problems using an object-oriented approach. Modern object-oriented languages are utilized. Topics include inheritance, the underlying implementation of polymorphism, exception handling, extending existing system libraries, and approaching algorithm development from an object-oriented perspective. 3 hours lecture.  (002356)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 511H  Object-Oriented Programming - Honors  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher; acceptance into Honors in the Major program.  
Typically Offered: Fall only  
Honors version of CSCI 511. In addition to completing all course requirements for CSCI 511, the student is required to research a topic related to Object-Oriented Programming, and propose an independent study to be completed during the following semester. A written research report and proposal is required. A grade of B or higher in this course is necessary in order to use it to earn the Honors in the Major distinction. 3 hours discussion.  (020790)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 515  Compiler Design  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher.  
Typically Offered: Fall and spring  
The elements of lexical, syntactical, and semantic analysis including finite and push-down automata, top-down and bottom-up parsing, error detection and recovery, semantic actions and code generation. 3 hours discussion.  (002369)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 515H  Compiler Design - Honors  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher, acceptance into Honors in the Major Program.  
Typically Offered: Fall and spring  
The elements of lexical, syntactical, and semantic analysis including finite and push-down automata, top-down and bottom-up parsing, error detection and recovery, semantic actions, and code generation. Honors students enrolled in this course are required to implement a significant additional feature in the semester project and to develop an approved proposal in the area of languages/compilers for their Honors Research Project/Thesis. 3 hours discussion.  (020185)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 520  Applied Quantum Computing for Computer Scientists  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher; MATH 109, MATH 120, or MATH 315; or Classified Computer Science Graduate Standing.  
Typically Offered: Spring only  
This course introduces the practice of quantum computation and algorithms in computer science. Topics covered include the mathematics to understand the relationship between physical systems and quantum computation. Algorithms to be implemented include Deutsch's mapped function algorithm, Grover's search algorithm, Simon's periodicity algorithm, and Shor's prime factorization algorithm. Other concepts include quantum error correction, and quantum cryptography. Students will develop their code on a quantum computer. 2 hours activity, 2 hours lecture.  (022275)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division; Laptop required  
CSCI 540  Systems Programming  3 Units  
Prerequisite: CSCI 440 with a grade of C or higher.  
Typically Offered: Fall only  
A hands-on project course that examines the development of systems software. It provides an introduction to writing low level programs in the UNIX/Linux environment. Topics include using system calls, processes, threads, concurrency, process/thread synchronization, signals, and interprocess communication. The course includes several large programming projects which provide students solid experience in lower level programming. 3 hours discussion.  (002378)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 546  Network Forensics  3 Units  
Prerequisite: CSCI 446, EECE 446, or MINS 346 with a grade of C or higher.  
Typically Offered: Spring only  
This course provides an in-depth understanding of the principles and techniques used in network forensic, including the collection, preservation, analysis, and presentation of digital evidence from network-based incidents. The course covers the role of network forensic in incident response and cybercrime investigations. Students learn about the various tools and techniques used in network forensic including network capture, traffic analysis, and log analysis. Students gain hands-on experiences using these tools through various labs and case studies. 3 hours laboratory, 2 hours lecture.  (002382)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division; Laptop required  
CSCI 551  Numerical Methods and Parallel Programming  4 Units  
Prerequisite: CSCI 440 with a grade of C or higher; MATH 109 or MATH 120; or Classified Computer Science Graduate Standing.  
Typically Offered: Fall and spring  
Surveys numerical methods and parallel programming. Parallel architectures and algorithms for scientific programming applications, solution of simultaneous linear and non-linear equations, iterative techniques, matrix methods, and error analysis. Development of parallel algorithms, with a focus on efficient implementation and performance. 2 hours activity, 3 hours lecture.  (002332)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 4 units  
Course Attributes: Upper Division; Laptop required  
CSCI 565  Advanced Web and Mobile App Development  3 Units  
Prerequisite: CINS 467 with a grade C or higher.   
Typically Offered: Spring only  
A hands-on project course that examines languages, tools, protocols, and techniques for developing robust server-side interfaces and how to integrate them into cross-platform apps. Topics include the model-view-controller pattern, server-side scripting, using a server-side database, REST, the gRPC remote procedure call framework, web applications security, and hosting robustness. The course includes several projects using a web programming framework and integration into cross-platform client-side apps. 3 hours lecture.  (022409)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division; Laptop required  
CSCI 566  Computer Graphics Programming  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher.  
Typically Offered: Fall only  
This course covers algorithms and data structures in computer graphics. Topics include output primitives and their attributes, 2-D and 3-D geometric transformations and viewing, 3-D object modeling, parallel and perspective projections, visible surface detection, illumination models, and rendering algorithms. 3 hours discussion.  (002363)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 580  Artificial Intelligence  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher.  
Typically Offered: Fall and spring  
This course introduces the basic principles, techniques, and applications of artificial intelligence. This course is organized in three sections: search, logic, and learning. Topics include but are not limited to problem-solving, heuristic search, genetic algorithm, game-playing, constraint-satisfaction problems, propositional and predicate logic, knowledge representation, feed-forward neural networks, and decision trees. Students implement and analyze artificial intelligence algorithms. 3 hours discussion.  (002360)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 580H  Artificial Intelligence - Honors  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher, acceptance into Honors in the Major program.  
Typically Offered: Fall and spring  
An introduction to the basic principles, techniques, and applications of Artificial Intelligence. Coverage includes knowledge representation, logic, inference, problem solving, search algorithms, game theory, perception, learning, planning, and agent design. Students program with AI language tools. Additional areas may include expert systems, machine learning, natural language processing, and computer vision. Honors students enrolled in this course are held to more rigorous standards and expectations in both assignments, participation, and examination than students in CSCI 580. They are also expected to perform preliminary work for the follow-up course, typically in the form of a literature review and proposal. 3 hours discussion.  (021882)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 581  Machine Learning  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher; MATH 109 or MATH 120; or Classified Computer Science Graduate Standing.  
Typically Offered: Fall and spring  
This course introduces students to the concepts, theories, and experimental methods of machine learning. This course develops a broad understanding of the issues in implementing machine learning algorithms and systems, especially as they relate to modern data-intensive problems. Topics include but are not limited to experimental design, supervised learning (linear and non-linear regression, parametric and nonparametric learning, support vector machines, Bayesian networks, Hidden Markov Models, and advanced neural networks), unsupervised learning (clustering, dimensionality reduction, and kernel methods), ensemble approaches, learning theory, and reinforcement learning. Students implement and analyze machine learning algorithms. 3 hours discussion.  (022009)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division; Laptop required  
CSCI 581H  Machine Learning- Honors  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher.  
Typically Offered: Fall and spring  
This course introduces students to the concepts, theories, and experimental methods of machine learning. This course develops a broad understanding of the issues in implementing machine learning algorithms and systems, especially as they relate to modern data-intensive problems. Topics include but are not limited to experimental design, supervised learning (linear and non-linear regression, parametric and nonparametric learning, support vector machines, Bayesian networks, Hidden Markov Models, and advanced neural networks), unsupervised learning (clustering, dimensionality reduction, and kernel methods), ensemble approaches, learning theory, and reinforcement learning. Students implement and analyze machine learning algorithms. Honor students enrolled in this course are held to more rigorous standards and expectations in assignments, participation, and examinations than students in CSCI 581. Students are also expected to perform preliminary work for the follow-up course, typically in the form of a literature review and proposal. 3 hours discussion.  (022108)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 582  Bioinformatics  3 Units  
Prerequisite: CSCI 311 with a grade of C or higher; MATH 105, MATH 314, or MATH 350 (may be taken concurrently).  
Typically Offered: Spring only  
An introduction to computational methods for Next Generation Sequencing data analysis. Topics include mapping sequenced reads back to a reference genome; approximate string matching; intro to biostatistics; probability distribution, hypothesis testing; identification of SNPs (single polymorphisms); analysis of RNA-seq data; mapping RNA-seq reads, identification of splice-junctions, analysis of gene expression; genome-wide associative analysis of methylation and gene expression. 3 hours discussion.  (021619)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 585  Robotics and Machine Intelligence  3 Units  
Prerequisite: CSCI 211, EECE 237 both with a grade of C or higher; MATH 109 or MATH 120; or Classified Computer Science Graduate Standing.  
Typically Offered: Spring only  
This course introduces students to the field of robotics by emphasizing the use of software to model, task, localize, navigate, and control mobile and manipulator robot systems. Topics include various case studies of robot architectures and algorithms that facilitate teleoperation, automation, and levels of autonomous tasking and intelligent operation (e.g., sensor fusion, perception, reactive reasoning, intelligent navigation, vision, machine learning, etc.). Students develop and/or configure software for a robot system by researching and experimenting with hardware, robot operating systems and simulation tools. ECC compliant laptop required. 2 hours activity, 2 hours lecture.  (002361)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division; Laptop required  
CSCI 598  Adv Topic in Computer Science  1-4 Units  
Typically Offered: Inquire at department  
This course is a special topic offered for 1.0-4.0 units. Exploration of selected topics in Computer Science. Consult semester schedules for specific listings. Standard letter grading only. 0 hours discussion.  (020184)  
Grade Basis: Graded  
Repeatability: You may take this course more than once  
Course Attributes: Upper Division  
CSCI 605  Data Structures and Algorithms for Data Science  3 Units  
Prerequisite: Basic Python programming knowledge; admission to the master's program in Data Science and Analytics, or faculty permission.  
Typically Offered: Fall and spring  
This course focuses on object-oriented methodologies in designing and implementing a variety of data structures and algorithms using the Python programming language. Coverage includes recursion, trees, search structures, hashing, heaps, sorting algorithms, and graph algorithms. Particular attention will be given to studying the relative merits of these data structures under different conditions both mathematically and through empirical measurement as they are used in the field of data science. 3 hours discussion.  (022532)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division; Laptop required  
CSCI 608  Data Science for Graduate Studies  3 Units  
Prerequisite: Basic programming knowledge, admission to the master's program in Data Science and Analytics or Computer Science, or faculty permission.  
Typically Offered: Fall only  
This course covers foundational practices of data science emphasizing reproducibility and ethical practices at all stages of the data science lifecycle. Recent advances and seminal works in data science and related fields will be discussed and scientific communication best practices will be addressed. Topics include version control, scientific thinking, web scraping, intermediate data wrangling, data visualization, modeling, prediction, classification, and text analysis in either R or Python. 3 hours discussion.  (022535)  
Cross listing(s): MATH 608  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division; Laptop required  
CSCI 611  Applied Machine Learning  3 Units  
Prerequisite: CSCI 311 and classified graduate standing.  
Typically Offered: Spring only  
The course offers a practical exploration into machine learning and cutting-edge topics in neural networks, including modern techniques for deep learning. Students build deep learning models using sophisticated machine learning frameworks and scientific libraries. 3 hours lecture.  (002395)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division  
CSCI 612  Applied Computer Vision  3 Units  
Prerequisite: CSCI 311 or equivalent with C or higher.  
Typically Offered: Spring only  
Applied computer vision used in automation, robotics, physical security, surveillance, and inspection applications and systems. Topics covered include theory of computer vision and related algorithms for image capture and processing, filtering, thresholds, edge detection, shape analysis, shape detection, salient object detection, pattern matching, digital image enhancement, stereo ranging, and methods of sensor and information fusion. Focus is on real-time continuous image processing from cameras and video. Application using multi-core and co-processing parallel computing systems are covered as they relate to scaling of computer vision applications. 2 hours activity, 2 hours discussion.  (022279)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division; Laptop required  
CSCI 620  Web Technology  3 Units  
Prerequisite: CINS 467 with a grade of C or higher, or web programming experience, and classified graduate standing.  
Typically Offered: Fall only  
This course examines frameworks, libraries, languages, and tools for the development of full stack web applications that are progressive, responsive, and secure. Student propose, design, develop, test, and present a nontrivial full stack web application. 3 hours seminar.  (002436)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division; Laptop required  
CSCI 630  Software Design and Maintenance  3 Units  
Prerequisite: Classified Computer Science Graduate Standing.  
Typically Offered: Spring only  
Students conduct a study of designing and maintaining complex software. The course builds upon fundamental software engineering skills with an emphasis on: object-oriented software design patterns, anti-patterns, code review and refactoring, and tools for evaluating code quality. Students practice maintaining software by collaborating on a large-scale open source project using automated development operation (DevOps) tools. 3 hours discussion.  (002394)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division; Laptop required  
CSCI 640  Scalable Software Systems  3 Units  
Prerequisite: CSCI 311 or CSCI 211 and CSCI 605; classified graduate standing.  
Typically Offered: Fall only  
This course offers a practical exploration of topics in scalable computing. Students gain hand-on experience building things to solve a multitude of topics in scalable computing. Students learn how to solve computationally complex problems involving big data. Topics include but are not limited to single-node and multi-node parallelism, threading, and coprocessor programming. 3 hours seminar.  (002430)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division; Laptop required  
CSCI 644  DevOps Engineering  3 Units  
Prerequisite: CSCI 311, or CSCI 605 and MATH/CSCI 485; and classified graduate standing.  
Typically Offered: Fall and spring  
This course introduces students to distributed system administration skills, setting up distributed computation environments, version control, build systems, dependency management, continuous integration, testing, cloud virtualization technologies, and setting up mobile, web, machine learning, artificial intelligence, and data science pipelines. 3 hours discussion.  (022536)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division; Laptop required  
CSCI 650  Algorithms and Computability  3 Units  
Prerequisite: CSCI 311 and classified graduate standing.  
Typically Offered: Spring only  
This course presents algorithm design techniques (such as divide-and-conquer, greedy algorithms, dynamic programming, and others), mathematical and empirical analysis of algorithms , computability, Rice's theorem, P and NP classes, NP-completeness, and recent advances in algorithms. 3 hours seminar.  (002417)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division  
CSCI 651  Applied Graph Theory  3 Units  
Prerequisite: CSCI 311 and classified graduate standing.  
Typically Offered: Fall only  
This course covers foundational aspects of network science, the study of graph representations and the patterns they contain, along with tools and techniques for analyzing network data. Topics include random graph models, measures of structural importance, information spread in data networks, and methods for embedding graphs in real space. This is a project-based course. Students implement and apply graph algorithms on real-world network data. 3 hours lecture.  (022206)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division  
CSCI 682  Topics in Artificial Intelligence  3 Units  
Prerequisite: Classified graduate standing.  
Typically Offered: Inquire at department  
Further study of selected advanced topics in artificial intelligence as presented in recently published journals; possible emphasis on research interests and/or projects of faculty in the department. Consult the Graduate Coordinator to determine how many units may be counted toward your major. 3 hours lecture.  (002402)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 12 units  
Course Attributes: Graduate Division  
CSCI 689  Internship  1-3 Units  
Typically Offered: Fall and spring  
0 hours supervision.  (020142)  
Grade Basis: Report in Progress: CR/NC  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division  
CSCI 693  Research Methods in Computer Science  3 Units  
Prerequisite: Candidate status.  
Typically Offered: Fall and spring  
This course interweaves three distinct themes (investigation, experimentation, and technical writing), that culminate in a comprehensive research project, written report, presentation, and oral defense. First, the students are immersed into the research process within Computer Science. This includes an understanding of the role, ethics, and responsibility of researchers in Computer Science. The second focus is on rigorous design of experiments for the purpose of testing research hypotheses, simulations, and models, and interpreting the results of those experiments. Finally, proficiency in communication of scientific ideas and findings will be addressed, from intensive reading, critiques, technical writing and oral presentations. 9 hours supervision.  (020616)  
Grade Basis: Report in Progress: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division; Laptop required  
CSCI 697  Independent Study  1-6 Units  
Prerequisite: Classified graduate standing, faculty permission.  
Typically Offered: Fall and spring  
This course is an independent study offered for 1.0-6.0 units. You must register directly with a supervising faculty member. Independent study and investigation of special problems in student's area of concentration. Both registration and study plan must have approval of the instructor and the student's graduate advisory committee chair. 9 hours supervision.  (002451)  
Grade Basis: Credit/No Credit  
Repeatability: You may take this course for a maximum of 6 units  
Course Attributes: Graduate Division  
CSCI 698  Seminar in Advanced Topics  3 Units  
Typically Offered: Inquire at department  
This course is a seminar offered for 1.0-3.0 units. Typical subjects in past semesters have included microprogramming theory, operating system development, software engineering principles, data communications, analysis of algorithms, and program optimization. Consult the Class Schedule for listing and prerequisites. 2 hours activity, 2 hours discussion.  (002446)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division  
CSCI 699P  Master's Project  3 Units  
Prerequisite: Candidate status.  
Typically Offered: Fall and spring  
You must register directly with a supervising faculty member. Independent study and investigation of special problems in student's area of concentration. Both registration and study plan must have approval of the instructor and the student's graduate advisory committee chair. Master's Project courses earn a Credit grade upon completion. 9 hours supervision.  (002461)  
Grade Basis: Report in Progress: CR/NC  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division  
CSCI 699T  Master's Thesis  1-6 Units  
Prerequisite: Candidate status.  
Typically Offered: Fall and spring  
This course is offered for 1.0-6.0 units. You must register directly with a supervising faculty member. Independent study and investigation of special problems in student's area of concentration. Both registration and study plan must have approval of the instructor and the student's graduate advisory committee chair. Master's Thesis courses earn a Credit grade upon completion. 9 hours supervision.  (002453)  
Grade Basis: Report in Progress: CR/NC  
Repeatability: You may take this course for a maximum of 6 units  
Course Attributes: Graduate Division