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, MATH 119 (or completion of high school precalculus), MATH 120, or meet the Math department's requirements for enrollment in MATH 120. Recommended: CSCI 217 or MATH 217 (may be taken 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  
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 and Complexity  4 Units  
Prerequisite: CSCI 311 with a grade of C or higher.  
Typically Offered: Fall and spring  
Students design, implement, and analyze algorithms for solving problems. Topics include dynamic programming, graphs (topological sort, strongly connected components), shortest paths (Bellman-Ford, Floyd-Warshall), minimum spanning tree (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). In addition, basic automata computability and complexity are covered, including finite automata, regular expressions, context free grammars, Turing machines, P and NP classes, and NP complete classes and problems. This course integrates knowledge of data structures, algorithms, and programming. 4 hours discussion.  (002371)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 4 units  
Course Attributes: Upper Division  
CSCI 420  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.  
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 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. 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 530  Software Testing and Quality Assurance  3 Units  
Prerequisite: CSCI 430 with a grade of C or higher.  
Typically Offered: Fall only  
In-depth study of software verification and validation with a concentration on software testing methods, tools, and metrics. Topics include Test-Driven Development, unit testing, integration testing, acceptance testing, as well as software and testing metrics. Students work individually as well as in teams to verify and validate large open source projects. 3 hours discussion.  (021620)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
CSCI 540  Systems Programming  3 Units  
Prerequisite: CSCI 340 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  Computer Network Management  3 Units  
Prerequisite: CSCI 446 with a grade of C or higher.  
Typically Offered: Spring only  
This course covers advanced network management concepts and implementations including a network operating system, workstation management, and domain administration. Coverage also includes TCP/IP administration and router/hub management. The course provides hands-on experience on network management in a laboratory environment. 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  
CSCI 551  Numerical Methods and Parallel Programming  3 Units  
Prerequisite: CSCI 440 with a grade of C or higher, MATH 109 or MATH 120.  
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. 3 hours discussion.  (002332)  
Grade Basis: Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Upper Division  
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.  
Typically Offered: Fall only  
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  
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.  
Typically Offered: Spring only  
This course introduces students to the field of robotics by emphasizing the task of endowing machines with intelligence. Topics include various case studies of robot architectures and algorithms that facilitate embodying a robot with behaviors that are traditionally associated with human cognition (e.g., perception, reasoning, intelligent navigation, vision, learning, etc.). Students conduct research and experiments with robotics hardware and software. 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  
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 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 370, CSCI 311, 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  
CSCI 630  Software Design and Maintenance  3 Units  
Prerequisite: CSCI 430 and classified graduate standing.  
Typically Offered: Spring only  
Students conduct a study of deigning 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  
CSCI 640  Operating Systems  3 Units  
Prerequisite: CSCI 440 and classified graduate standing.  
Typically Offered: Fall only  
In-depth study of operating systems concepts including results from recent research. Topics may include processes, threads, virtual memory, file systems, distributed computing, scheduling, protection, and communication protocols. Students may be required to implement operating system projects. 3 hours seminar.  (002430)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division  
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: Spring only  
This course interweaves three distinct themes (investigation, experimentation, and technical writing), that culminate in a comprehensive research project, 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 hypothesis, 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. 3 hours discussion.  (020616)  
Grade Basis: Graduate Graded  
Repeatability: You may take this course for a maximum of 3 units  
Course Attributes: Graduate Division  
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