Computer Science and Software Engineering

Catalog Home

Computer Science Bldg. (14), Room 254
Phone: 805.756.2824
https://csc.calpoly.edu

Department Chair: Aaron Keen

Engineering Student Services
Engineering South (40), Room 115
Phone: 805.756.1461

Academic Programs

Program name Program type
Computer Science BS, MS, Minor
Cross Disciplinary Studies Minor in Bioinformatics Minor
Cross Disciplinary Studies Minor in Computing for Interactive Arts Minor
Cross Disciplinary Studies Minor in Data Science Minor
Software Engineering BS

The Computer Science and Software Engineering Department educates students in the discipline of computer science and teaches them to apply their education to solve practical problems in a socially responsible way. To support the department’s educational mission, faculty engage in research and professional development.

Department programs are designed to be flexible. Although freshmen choose their major when they apply for admission, students can easily switch among software engineering, computer engineering and computer science since the lower division curricula are similar.

In all of the department’s programs, laboratory experiences ensure that students have both a theoretical and practical understanding of computer science. Individual and team projects, culminating in a capstone experience or a senior project, reinforce concepts and provide students the opportunity to apply and communicate their knowledge.

The department has active student chapters of the Association for Computing Machinery, IEEE Computer Society and Upsilon Pi Epsilon (the national computer honor society). Student teams compete in national competitions and student organizations sponsor industry/student events.

The department, with industry support, provides a modern computing environment that includes the most current software tools running on a variety of workstations and servers. Projects in advanced courses are supported by specialized laboratories for databases, computer architecture, operating systems, software engineering, computer networks, computer graphics, and human/computer interaction.

Undergraduate Programs

BS Computer Science

The BS Computer Science program provides in-depth study of computer science fundamentals and practice, including programming concepts and languages, software engineering, operating systems and computer architecture.

In addition, the major offers a wide choice of technical electives that allows students to focus on particular areas of computer science and their application. Typical areas of emphasis include databases, distributed computing, software engineering, programming languages, graphical user interfaces, operating systems, computer networks, computer graphics, computer security, game development, and artificial intelligence.

The curriculum is project-oriented and develops students’ ability to solve problems using modern computing concepts. Students can expect to complete many projects in a variety of programming languages and on a variety of computer systems. During their last year of study, students complete a senior project, either individually or as members of a team, spanning two academic quarters.

Graduates of the computer science program are well prepared to become successful professionals and to pursue graduate study. They are sought by the computer industry for positions as software developers, quality assurance and test engineers, and other technical positions in computer-related industries.

The Computer Science program has four broad program educational objectives (PEOs) that graduates are expected to attain within five years of graduation:

  • Technical Competence. Graduates have applied current technical knowledge and skills to develop effective computer solutions, using state-of-the art technologies.
  • Interpersonal Skills. Graduates have communicated effectively and worked collaboratively in a team environment.
  • Professional Awareness. Graduates have maintained a positive and ethical attitude concerning the computing profession and its impact on individuals, organizations and society.
  • Intellectual Growth. Graduates have continued to grow intellectually and professionally in their chosen field, including successful pursuit of graduate study if such study was a desired goal.

The BS Computer Science program is accredited by the Computing Accreditation Commission of ABET, http://www.ABET.org.

General Curriculum in Computer Science or Concentrations

  • General Curriculum in Computer Science
  • Artificial Intelligence and Machine Learning
  • Data Engineering
  • Game Development
  • Graphics
  • Privacy and Security

Degree Requirements and Curriculum
 

BS Software Engineering

The BS in Software Engineering prepares students to become software professionals who develop software products on time, within budget, and that meet customer requirements. Building on the fundamentals of computer science, the program focuses on practical aspects of building and deploying software systems in a socially responsible way. The program’s educational mission supports the faculty in research and professional development that keeps them current in their field and in touch with current industry practices and trends.

The hallmark of the program is “hands on” experience where students follow a curriculum that builds on traditional computer science but differs from the BS in Computer Science in the following ways:

  1. Classes emphasize the team approach to building software and provide leadership opportunities for every student.
  2. Classes place an emphasis on software processes and lifecycles.
  3. Classes include significant learning in engineering and management areas such as quality assurance, testing, metrics, maintenance, configuration management and interpersonal management skills.
  4. The curriculum has a stronger emphasis on mathematics and the use of engineering methods in software design.

The software engineering curriculum culminates in a year-long capstone sequence where the students work in teams to build a large software system.

The software industry increasingly requires both a software and an engineering background for their cutting edge projects. Graduates with a BS in Software Engineering can expect to find significant opportunities in software development and management, software engineering and marketing.

The Software Engineering program has four broad program educational objectives (PEOs) that graduates are expected to attain within five years of graduation:

  • Technical Competence. Graduates have applied the software engineering body of knowledge and other technical skills to specify, design, and implement complex software systems, doing so with state-of-the art technologies.
  • Interpersonal Skills. Graduates have communicated effectively and worked collaboratively in a multi- disciplinary team environment.
  • Professional Awareness. Graduates have maintained a positive and ethical attitude concerning the computing profession and its impact on individuals, organizations and society.
  • Intellectual Growth. Graduates have continued to grow intellectually and professionally in their chosen field, including successful pursuit of graduate study if such study was a desired goal.

The BS Software Engineering program is accredited by the Engineering Accreditation Commission of ABET, http://www.ABET.org.

Degree Requirements and Curriculum
 

Computer Science Minor

Nearly all disciplines use the capabilities of computers. The Computer Science minor consists of a core and upper-division courses selected in consultation with an advisor. The core provides common knowledge and skills needed by anyone who wishes to advance further in computer science. The remaining courses enable students to specialize in areas relevant to their goals.

Admission to the minor is limited and selection is based upon the applicant's performance in:
CSC/CPE 101Fundamentals of Computer Science4
CSC/CPE 202Data Structures4
CSC/CPE 203Project-Based Object-Oriented Programming and Design4

Students who intend to minor in computer science should consult the College of Engineering Advising Center website for GPA and course grade requirements for admission to the minor. In addition, they should contact the Advising Center for further information before planning to enter the minor.

Before formally applying, students must make an appointment at the College of Engineering Advising Center. The Computer Science minor is not open to CSC, CPE or SE major students, or to students in the Computing for Interactive Arts Minor or the Cross Disciplinary Studies Minor in Data Science. Questions concerning the minor should be directed to the Advising Center.

Minor Requirements
 

Cross Disciplinary Studies Minor in Bioinformatics

For information regarding the Cross Disciplinary Studies Minor in Bioinformatics, please see the Biological Sciences section of the catalog.

Cross Disciplinary Studies Minor in Computing for Interactive Arts

The minor in Computing for Interactive Arts (CIA) is a Cross Disciplinary Studies Minor jointly offered by the Department of Art and Design and the Computer Science Department. The CIA minor fosters a collaborative, cross-disciplinary environment in which Art and Design students integrate coding and algorithmic thinking in creative works and Computer Science students apply the principles and methodology of design thinking to visual applications. The minor enables students from different disciplines to collaborate on projects requiring both a technical and a creative perspective. The Computing for Interactive Arts minor is not open to students in the Computer Science minor or the Cross Disciplinary Studies Minor in Data Science.

Minor Requirements
 

Cross Disciplinary Studies Minor in Data Science

An interdisciplinary minor sponsored by the departments of Statistics and Computer Science. For more information, see the Statistics section. The Cross Disciplinary Studies Minor in Data Science is not open to students in the Computer Science minor or the Computing for Interactive Arts minor.

Graduate Program

MS Computer Science

The MS program in Computer Science offers students the opportunity to prepare for careers in several areas of emphasis including software engineering, computer architecture, programming languages, theory of computing, operating systems, database systems, distributed computing, computer networks, artificial intelligence, computer graphics, and human computer interaction. The program is designed for maximum flexibility to allow students to concentrate in one or more areas of study.

Eligibility for admission to the program requires a baccalaureate degree from an accredited institution and good standing at the last college attended. Admission can be granted in either classified or conditionally classified status. Classified admission can be granted to domestic and overseas applicants who satisfy the following conditions: applicants with a bachelor’s degree in computer science, software engineering, or computer engineering are required to have a minimum 3.0 grade point average, including a minimum 3.0 grade point average in major courses; applicants with a bachelor’s degree in a different field must have completed the required preliminary coursework listed in the table below and have a minimum grade point average of 3.25 for all undergraduate coursework.  Conditionally classified admission can be granted to domestic applicants who satisfy the following conditions: The applicant must hold a Computer Science minor obtained as part of their undergraduate study, or they must have successfully completed introductory and upper-division Computer Science coursework in the amount equivalent to the Computer Science minor (an equivalent of about 28-32 quarter units). Specifically, applicants are expected to have completed the equivalent of 24 units of coursework (6 courses) from the below list, prior to starting their MS in Computer Science study. 

All applicants must satisfy the following. A satisfactory score on the TOEFL is required for applicants with degrees from institutions from countries where English is not a native language; expected minimum scores are: 80 for internet-based test with a minimum 20 on each portion; 213 for computer-based test; 550 for paper-based test, plus 4.5 on TWE. All applicants must provide three letters of recommendation. Women and underrepresented minorities are strongly encouraged to apply for admission.

Students admitted as conditionally classified must complete the necessary undergraduate coursework to advance to candidacy. While fulfilling the undergraduate requirements, conditionally classified students retain official status as graduate students in the university. Conditionally classified students may advance to candidacy by completing coursework selected by the graduate coordinator from the following list of courses:

CSC 300Professional Responsibilities4
CSC 307Introduction to Software Engineering4
or CSC 308 Software Engineering I
CPE 315Computer Architecture4
CSC 349Design and Analysis of Algorithms4
CSC/CPE 357Systems Programming4
CSC 430Programming Languages4
CSC 445Theory of Computation I4
CSC/CPE 453Introduction to Operating Systems4

Each course must be completed with a grade of "B" or better.  These courses do not count toward the graduate degree.

The department may offer several graduate teaching assistantships. Preference is given to continuing graduate students and experienced teachers. Other grant, fellowship, scholarship and loan information can be obtained from the Financial Aid office.

Degree Requirements

Students must file a Formal Study Plan with the Computer Science Department office no later than the end of the quarter in which they complete the twelfth unit of coursework to be counted toward the degree. The formal study plan identifies specific courses to be taken to fulfill requirements of the MS degree. The formal study plan may be amended with approval of the graduate coordinator.

Degree Requirements and Curriculum

Blended BS + MS Computer Science Program

A blended program provides an accelerated route to a graduate professional degree, with simultaneous conferring of both Bachelor's and Master's degrees. Students in the blended program are provided with a seamless process whereby they can progress from undergraduate to graduate status. Students are required to complete all requirements for both degrees, including senior project for the Bachelor’s degree.

A blended program is available for MS Computer Science.

Eligibility

Majors that are eligible for the blended program are:

  • BS Computer Science
  • BS Computer Engineering
  • BS Software Engineering

Participation in a blended program is based upon prior academic performance and other measures of professional promise. Refer to Graduate Education for more information and for the minimum criteria required to be eligible for a blended program at Cal Poly. Contact the Graduate Program Coordinator in the Computer Science and Software Engineering department for any additional eligibility criteria.

Program of Study

Senior project requirements for the eligible undergraduate majors are satisfied as follows:

  • BS Computer Engineering students may complete either CPE 461 and CPE 462 or CSC 497 and CSC 498. Those that complete CPE 461 and CPE 462 to satisfy the senior project requirement must take CSC 596 and CSC 597 as prerequisites to CSC 599 to complete the MS degree requirements. Those that complete CSC 497 and CSC 498 to satisfy both the senior project requirement and the CSC 599 prerequisites must take an additional 500-level course to satisfy the MS degree requirements.
  • BS Computer Science students may complete either CSC 491 and CSC 492 or CSC 497 and CSC 498 to satisfy the undergraduate senior project requirement. Those that complete CSC 491 and CSC 492 to satisfy the senior project requirement must take CSC 596 and CSC 597 as prerequisites to CSC 599 to complete the MS degree requirements.  Those that complete CSC 497 and CSC 498 to satisfy both the senior project requirement and the CSC 599 prerequisites must take an additional 500-level course to satisfy the MS degree requirements.
  • BS Software Engineering students must complete the senior project requirement as satisfied by the software engineering capstone sequence culminating in CSC 406. BS Software Engineering students must complete CSC 596 and CSC 597 to satisfy the MS degree requirements.

In all cases, the master’s culminating experience (CSC 599) must be completed to satisfy the MS degree requirements. 

How to Read Course Descriptions

CSC Courses

CSC 101. Fundamentals of Computer Science. 4 units

Term Typically Offered: F, W, SP

Prerequisite: Appropriate Math Placement Level; or MATH 117 with a grade of C- or better; or MATH 118 with a grade of C- or better; or consent of instructor.

Basic principles of algorithmic problem solving and programming using methods of top-down design, stepwise refinement and procedural abstraction. Basic control structures, data types, and input/output. Introduction to the software development process: design, implementation, testing and documentation. The syntax and semantics of a modern programming language. Credit not available for students who have taken CSC/CPE 108. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 101.

CSC 121. Computing for All I. 4 units

Term Typically Offered: F

2020-21 or later catalog: GE Area B4

2019-20 or earlier catalog: GE Area B1

Prerequisite: MATH 115; or appropriate Math Placement Level.

Fundamentals of computational thinking in the study of non-computing disciplines. Ethical and social considerations of computing. Data gathering and representation. Logic and computational reasoning. Data and procedural abstraction. Problem decomposition. Code patterns for algorithmic problem-solving. 3 lectures, 1 activity. Fulfills GE Area B4 (GE Area B1 for students on the 2019-20 or earlier catalogs); a grade of C- or better is required in one course in this GE Area.

CSC 122. Computing for All II. 4 units

Term Typically Offered: W

2020-21 or later catalog: GE Area B4

2019-20 or earlier catalog: GE Area B1

Prerequisite: CSC 121.

Fundamentals of computational thinking in the study of non-computing disciplines. Ethical and social considerations of computing. Reading code and identifying patterns. Problem Decomposition. Algorithms and automation. Software Engineering. Creative Computing. 3 lectures, 1 laboratory. Fulfills GE Area B4 (GE Area B1 for students on the 2019-20 or earlier catalogs); a grade of C- or better is required in one course in this GE Area.

CSC 123. Introduction to Computing. 4 units

Term Typically Offered: F, W

Prerequisite: Basic computer literacy.

Use of a supportive software development environment to design, develop, and test applications in a selected topic domain that demonstrates the potential of careers in computing. An introduction to computing and to the selected topic domain. The Class Schedule will list topic selected. No programming experience required. Not for students with credit in CPE/CSC 103 or CPE/CSC 203. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 123.

CSC 200. Special Problems for Undergraduates. 1-2 units

Term Typically Offered: F, W, SP

Prerequisite: Consent of instructor.

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

CSC 202. Data Structures. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 101 with a grade of C- or better; or consent of instructor.

Introduction to data structures and analysis of algorithms. Abstract datatypes. Specification and implementation of advanced data structures. Theoretical and empirical analysis of recursive and iterative algorithms. Software performance evaluation and testing techniques. Not open to students with credit in CSC/CPE 108. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 202.

CSC 203. Project-Based Object-Oriented Programming and Design. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 202 with a grade of C- or better or consent of instructor.

Object-oriented programming and design with applications to project construction. Introduction to class design, interfaces, inheritance, generics, exceptions, streams, and testing. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 203.

CSC 225. Introduction to Computer Organization. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 202.

Introduction to computer systems. Simple instruction set architecture and the computer hardware needed to implement that architecture. Machine and assembly language programming. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 225.

CSC 231. Programming for Engineering Students. 2 units

Term Typically Offered: F, W, SP

Prerequisite: MATH 142; PHYS 121 or PHYS 131 or PHYS 141.

Programming techniques and procedures with applications to engineering problems. Introduction to numerical methods and simulation. Credit not allowed for CSC, Software Engineering or CPE majors. Course may be offered in classroom-based or online format. 2 activities.

CSC 232. Computer Programming for Scientists and Engineers. 3 units

Term Typically Offered: F, W, SP

Prerequisite: MATH 118 or equivalent.

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

CSC 234. C and Unix. 3 units

Term Typically Offered: F, W, SP

Prerequisite: MATH 142.

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

CSC 248. Discrete Structures. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 202 and CSC/CPE 203 with grades of C- or better; or consent of instructor.

Structures of computer science: logic, sets, relations, functions, graphs and trees. Propositional and predicate logic. Applications of predicate logic to preconditions, postconditions, and proof techniques. Complexity of algorithms. Not open to students with credit in CSC 141 or CSC 348. 4 lectures. Replaces CSC 348.

CSC 290. Selected Topics. 1-4 units

Term Typically Offered: F, W, SP

Prerequisite: Open to undergraduate students and consent of instructor.

Directed group study of selected topics. The Class Schedule will list topic selected. Total credit limited to 8 units. 1 to 4 lectures.

CSC 300. Professional Responsibilities. 4 units

Term Typically Offered: TBD

Prerequisite: Completion of GE Area A3 with a grade of C- or better; CSC/CPE 357; and junior standing.

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

CSC 304. Software Engineering without Programming. 4 units

Term Typically Offered: F

Prerequisite: Junior standing; one course in GE Area B4 with a grade of C- or better (GE Area B1 for students on the 2019-20 or earlier catalogs).

Introduction to software engineering for students pursuing non-computing degree objectives. Software development lifecycles. Stakeholders and roles in the software lifecycle. Product vision, user personas, and user stories. Software requirements. User interface prototyping. Data description for applications. Software architectures. Software testing. Not open to students in CPE, CSC, or SE. 4 lectures.

CSC 305. Individual Software Design and Development. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 203.

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

CSC 307. Introduction to Software Engineering. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 248 or CSC 348; and CPE/CSC 357.

Requirements, specification, design, implementation, testing and verification of large software systems. Study and use of the software process and software engineering methodologies; working in project teams. Not open to students with credit in CSC 308. 3 lectures, 1 laboratory.

CSC 308. Software Engineering I. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 248 or CSC 348.

Principles for engineering requirements analysis and design of large complex software systems. Software process models. Methods of project planning, tracking, documentation, communication, and quality assurance. Analysis of engineering tradeoffs. Group laboratory project. Technical oral and written presentations. 3 lectures, 1 laboratory.

CSC 309. Software Engineering II. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 308 and CSC/CPE 357.

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

CSC 312. Computational Thinking for Educators. 4 units

Term Typically Offered: SU

Prerequisite: Completion of GE Area C2; and completion of GE Area B4 with a grade of C- or better (GE Area B1 for students on the 2019-20 or earlier catalog.)

Fundamentals of computational thinking in the context of K-12 Education. Ethical and social considerations of computing. Data gathering and representation. Logic and computational reasoning. Data and procedural abstraction. Problem decomposition. Code patterns for algorithmic problem-solving. Course may be offered in classroom-based, online, or hybrid format. 3 lectures, 1 laboratory.

CSC 313. Teaching Computing. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 202 or CSC 314.

An introduction to pedagogical methods and practical techniques for computer science education: selecting appropriate content, designing assignments and activities, evaluating student learning, and evaluating teaching efficacy. Hands-on guided curricular design activities and real-world practice. 3 lectures, 1 laboratory.

CSC 314. Software Design and Data Structures for Educators. 4 units

Term Typically Offered: SU

Prerequisite: CSC 312.

A programming-based introduction to software design techniques, data structures, and algorithms, appropriate for K-12 computer science teachers. Satisfies a requirement for the computer science specific supplementary authorization for teaching K-12 computer science in California. Course offered online only. 3 lectures, 1 laboratory.

CSC 320. Practical Computer Security for Everyone. 4 units

Term Typically Offered: F, W, SP

2020-21 or later: Upper-Div GE Area B

2019-20 or earlier catalog: GE Area B5, B6, or B7

Prerequisite: Junior standing; completion of GE Area A with grades of C- or better; and one course in GE Area B4 with a grade of C- or better (GE Area B1 for students on the 2019-20 or earlier catalogs).

Exploration of practical computer security in everyday life for non-majors. Covering the principles, technologies and tools used to secure the Internet and keep ourselves digitally secure, including: privacy and anonymity, web and data security, cryptography, malware, authentication and access control. Course may be offered in classroom-based or online format. 3 lectures, 1 laboratory. Fulfills GE Area Upper-Division B (GE Areas B5, B6, or B7 for students on the 2019-20 catalog).

CSC 321. Introduction to Computer Security. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 357.

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

CSC 323. Cryptography Engineering. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 357.

An introduction to the theory and practice of building secure, cryptographic systems. Core cryptographic primitives. Implementation, evaluation and subversion of widely deployed cryptographic products and protocols. 3 lectures, 1 laboratory.

CSC 325. Introduction to Privacy: Policy and Technology. 4 units

Term Typically Offered: F, W, SP

Prerequisite: Completion of GE Area A3 with a grade of C- or better; CPE/CSC 203; CSC 300 or PHIL 323.

Introduction to policies and technologies related to digital privacy. Legal decisions and policies, domestic and global cultural expectations, and privacy related technologies including applications to surveillance, big data, websites, mobile, and privacy by design. 3 lectures, 1 laboratory.

CSC 344. Music Programming. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 248 or CSC 348; and CPE/CSC 357.

Music-producing programs. Software synthesizers: oscillators, coupled oscillators, wavetable synthesis. Sound processing units/filters: LTI, FIR, IIR, nonlinear. Physics of sound, mathematical foundations of sound synthesis and filtering, existing sound formats (both sampled and MIDI). 3 lectures, 1 laboratory.

CSC 349. Design and Analysis of Algorithms. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 102 and CPE/CSC 103 or CPE/CSC 202 and CPE/CSC 203; MATH 142; and CSC 248, CSC 348, or MATH 248.

Intermediate and advanced algorithms and their analysis. Mathematical, geometrical, and graph algorithms. NP-complete problems. Additional topics will be chosen from pattern matching, file compression, cryptology, dynamic and linear programming, and exhaustive search. Course may be offered in classroom-based or online format. 3 lectures, 1 laboratory.

CSC 350. Computing for Interactive Arts Capstone I. 2 units

Term Typically Offered: F, W, SP

Prerequisite: ART 384; CSC/CPE 103 or CSC/CPE 202; and junior standing.

Definition and specification of a team-based creative collaboration on a digital interactive art project (e.g. animation, video game, interactive media display, etc). Research and techniques, project planning and project team organization, prototype creation. 1 lecture, 1 laboratory. Crosslisted as ART/CSC 350.

CSC 357. Systems Programming. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 102 and CSC/CPE 103 with a grade of C- or better or consent of instructor, or CSC/CPE 202 and CSC/CPE 203 with a grade of C- or better or consent of instructor; and CSC 225 or CPE/EE 229 or CPE/EE 233.

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

CSC 364. Introduction to Networked, Distributed, and Parallel Computing. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 203.

Multisystem/multiprocessor coordination and computing. Networking: OSI stack, routing, link layer, mobile, wireless, and applications. Distributed and Parallel Computing: parallelism, concurrency, coordination, shared memory, messaging, task and data decomposition, and design and implementation challenges. 3 lectures, 1 laboratory.

CSC 365. Introduction to Database Systems. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 248 or CSC 348; or CPE/CSC 102 and CPE/CSC 103 and MATH 248; or CPE/CSC 202 and CPE/CSC 203 and MATH 248.

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

CSC 366. Database Modeling, Design and Implementation. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 365.

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

CSC 369. Introduction to Distributed Computing. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 102 and CSC/CPE 103, or CSC/CPE 202 and CSC/CPE 203; and one of the following: STAT 301, STAT 312, STAT 321 or STAT 350.

Introduction to distributed computing paradigms and cloud computing. Modern distributed computing infrastructures. Problem-solving in a distributed computing environment. 3 lectures, 1 laboratory.

CSC 371. Game Design. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 102 and CSC/CPE 103; or CSC/CPE 202 and junior standing.

In-depth study of game design including rules, player interaction, and storytelling. Exploration of effective use of sound, art, and game controls in creating meaningful play. Development of fully functioning and engaging games, following standard domain-specific software development processes and using physical prototyping and playtesting. Current, industry-tested game engines. Course may be offered in classroom-based or online format. 3 lectures, 1 laboratory.

CSC 377. Introduction to Mixed Reality. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 202. Recommended: ART 376.

Project-based study and application of Mixed Reality (MR) topics including integrated mixed reality development environments, Human Computer Interaction (HCI) peripherals, 3D environment scanning, physics interaction, diminished reality, motion capture, facial recognition, and visualization hardware. 3 lectures, 1 laboratory.

CSC 378. Interactive Entertainment Engineering. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 102 and CPE/CSC 103, or CPE/CSC 202 and junior standing.

Project-based, software oriented, introductory study of interactive entertainment. Discussion and evaluation of classic and historically influential games. Exploration of concepts in game design and development. Topics may include interactive storytelling, game physics, game AI, character development, animation, and development of virtual worlds. Projects require significant programming. 3 lectures, 1 laboratory.

CSC 400. Special Problems. 1-4 units

Term Typically Offered: F, W, SP

Prerequisite: Consent of instructor.

Individual investigation, research, studies or surveys of selected problems. Total credit limited to 4 units.

CSC 402. Software Requirements Engineering. 4 units

Term Typically Offered: F

Prerequisite: CSC 307 or CSC 309.

Software requirements elicitation, analysis and documentation. Team process infrastructure and resource estimation to support appropriate levels of quality. Software architectural design. 3 lectures, 1 laboratory.

CSC 405. Software Construction. 4 units

Term Typically Offered: W

Prerequisite: CSC 305 and CSC 402.

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

CSC 406. Senior Project - Software Deployment. 4 units

Term Typically Offered: SP

Prerequisite: CSC 405.

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

CSC 409. Current Topics in Software Engineering. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 307 or CSC 309.

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

CSC 410. Software Evaluation. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 349; and one of the following: STAT 301, STAT 312, STAT 321 or STAT 350.

Theory and practice of evaluation of software and software systems. Design of experiments for measuring software performance, measuring software output quality, analytical modeling for capacity planning, workload characterization and benchmarking, selection of appropriate software evaluation metrics and criteria. 3 lectures, 1 laboratory.

CSC 421. Binary Exploitation: Tools and Techniques. 4 units

Term Typically Offered: W

Prerequisite: CSC 321; CSC 300 or PHIL 323.

Introduction to the theory and practice of finding vulnerabilities in production systems with a focus on the evolution of vulnerabilities over time. Topics include buffer overflows, return-oriented-programming attacks, return to libc attacks, heap attacks, and common tools. 3 lectures, 1 laboratory.

CSC 422. Network Security. 4 units

Term Typically Offered: SP

Prerequisite: CSC 364 or CPE 464.

Introduction to network security, including denial of service, botnets, access control, routing attacks, transport layer attacks, tunneling mechanisms, VPNs, IDS, firewalls, penetration testing, key distribution, email security, jamming, and wireless security. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 422.

CSC 424. Software Security. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 307 or CSC 309; CPE/CSC 321.

Principles behind secure software design including threat models, trust management, common vulnerabilities and mitigation techniques, robust software development, isolation of untrusted code, auditability, and testing. 3 lectures, 1 laboratory.

CSC 425. Wireless Security. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 321. Recommended: CSC 300 or PHIL 323; CSC 364 or CPE 464.

Comprehensive overview of wireless networks and system security. Security issues and solutions in emerging wireless access networks and systems as well as multi-hop wireless networks. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 425.

CSC 429. Current Topics in Computer Security. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 321 and CPE/CSC 357.

Selected topics in emerging areas of computer security. Potential topics include: network and web security, critical infrastructure protection, embedded systems security, malware analysis, mobile security, and digital forensics, among others. The Class Schedule will list topic selected. Total credit limited to 8 units. Course may be offered in classroom-based, online, or hybrid format. 3 lectures, 1 laboratory.

CSC 430. Programming Languages. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 349.

Programming language design through evaluator implementation. Expressions, functions, environments, closures, mutation, objects, type systems, and syntactic abstraction. Syntactic, semantic, and static analysis properties. 3 lectures, 1 laboratory.

CSC 431. Compiler Construction. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 430.

Intermediate code representations, memory management, functions and parameter passing, code transformations and optimizations, code generation, register allocation. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 431.

CSC 436. Mobile Application Development. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 357.

Inception, development, testing, and deployment of mobile applications. Introduction to tools, libraries, and frameworks for one or more mobile platforms and devices. Emphasis on software engineering best practices for developing entrepreneurial or humanitarian mobile-centric applications. 3 lectures, 1 laboratory.

CSC 437. Dynamic Web Development. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 203.

Project-based study of web-based three-tiered applications, including current best practices and tools for design, implementation and testing of browser interface, serverside business logic, object-relational mapping, databases, and web services. 3 lectures, 1 laboratory.

CSC 445. Theory of Computation I. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 248 or CSC 348.

Theory of formal languages and automata. Turing machines. Chomsky hierarchy. Theory of decidability and computability. 4 lectures.

CSC 448. Bioinformatics Algorithms. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 349.

Introduction to the use of computers to solve problems in molecular biology. The algorithms, languages, and databases important in determining and analyzing nucleic and protein sequences and their structure. 3 lectures, 1 laboratory.

CSC 450. Computing for Interactive Arts Capstone II. 2 units

Term Typically Offered: F, W, SP

Prerequisite: ART/CSC 350.

Team-based design, construction and deployment of a collaborative interactive computational art project typically found in the fields of animation, game design, and interactive media. Management of inter-disciplinary teams, documentation, creative development, testing, and assessment. 2 activities. Crosslisted as ART/CSC 450.

CSC 453. Introduction to Operating Systems. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 357; and CSC 225, CPE/EE 229, or CPE/EE 233.

Introduction to sequential and multiprogramming operating systems; kernel calls, interrupt service mechanisms, scheduling, files and protection mechanisms, conventional machine attributes that apply to operating system implementation, virtual memory management, and I/O control systems. Course may be offered in classroom-based or online format. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 453.

CSC 454. Implementation of Operating Systems. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 453.

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

CSC 458. Current Topics in Computer Systems. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 357.

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

CSC 466. Knowledge Discovery from Data. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 349 and one of the following: STAT 252, STAT 302, STAT 312, STAT 321 or STAT 350.

Overview of modern knowledge discovery from data (KDD) methods and technologies. Topics in data mining (association rules mining, classification, clustering), information retrieval, web mining. Emphasis on use of KDD techniques in modern software applications. 3 lectures, 1 laboratory.

CSC 468. Database Management Systems Implementation. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 365.

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

CSC 469. Distributed Systems. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 357.

Foundations of distributed systems, distributed hash tables (peer-to-peer systems), failure detectors, synchronization, election, inter-process communication, consensus, replication, key-value stores, and measurements. 3 lectures, 1 laboratory. Crosslisted as CSC/CPE 469.

CSC 471. Introduction to Computer Graphics. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CPE/CSC 357.

Graphics software development and use of application programming interfaces for 3D graphics. The graphics pipeline, modeling, geometric and viewing transforms, lighting and shading, rendering, interaction techniques and graphics hardware. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 471.

CSC 473. Advanced Rendering Techniques. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 471.

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

CSC 474. Computer Animation. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 471.

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

CSC 476. Real-Time 3D Computer Graphics Software. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 471.

Basic and advanced algorithms for real-time, interactive, 3D graphics software. Modeling (polygon mesh, height field, scene graph), real-time rendering and shading (visibility processing, LOD, texture and light maps), collision detection (bounding volumes, complexity management), interactive controls, multi-player game technology, game engine architecture. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 476.

CSC 477. Scientific and Information Visualization. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 349.

Basic data processing (magnitude, grouping and segmentation), visualization design, cognition and perception, spatial data visualizations (2D and 3D, e.g. GIS data, medical data) information data visualization, spatial encoding, color encoding, and interaction. 3 lectures, 1 laboratory.

CSC 478. Current Topics in Computer Graphics. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC/CPE 471.

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

CSC 480. Artificial Intelligence. 4 units

Term Typically Offered: F, W, SP

Prerequisite: either CSC/CPE 102 and CSC/CPE 103 with a grade of C- or better or consent of instructor; or CSC/CPE 202 with a grade of C- or better and junior standing.

Programs and techniques that characterize artificial intelligence. Programming in a high level language. 3 lectures, 1 laboratory.

CSC 481. Knowledge Based Systems. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 480.

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

CSC 482. Speech and Language Processing. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 466 or CSC 480 or graduate standing. Recommended: CSC 349.

Introduction to natural language processing theory; speech processing; review of recent advancements. Topics include: tokenization, part-of-speech tagging, word-sense disambiguation, natural language understanding, natural language generation, data mining, voice processing, vocalization, semantic networks, intelligent assistants, computational linguistics, stylistics and machine learning. 3 lectures, 1 laboratory.

CSC 484. User-Centered Interface Design and Development. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 307 or CSC 308; junior standing.

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

CSC 486. Human-Computer Interaction Theory and Design. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 307 or CSC 308.

Application of the theories of human-computer interaction to the task of user-centered design. Survey of techniques for studying and involving users in different aspects of the design process, and demonstration of where and when applicable. Combining of theoretical understanding with practical experience to design solutions to problems facing interactive systems designers. 3 lectures, 1 laboratory.

CSC 487. Deep Learning. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 349, and MATH 206 or MATH 244. Recommended: CSC 466 or CSC 480.

Overview of current topics in Deep Learning. Theory and practice of Deep Learning (DL) paradigms. Convolutional Neural Networks (NN), Recurrent NN, Dropout, Momentum Gradient Descent, Batch Normalization, Adversarial and Siamese NN, and new developments. Emphasis on using DL to solve a real-world application of significant scope. 3 lectures, 1 laboratory.

CSC 490. Selected Advanced Topics. 1-4 units

Term Typically Offered: F, W, SP

Prerequisite: Consent of instructor.

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

CSC 491. Senior Project I. 2 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 307 or CSC 309; and consent of instructor.

Selection and completion of a project by individuals or team which is typical of problems which graduates must solve in their fields of employment. Project may include students from other disciplines. Formulation of outline, literature review, and project schedule.

CSC 492. Senior Project II. 2 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 491 and consent of instructor.

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

CSC 493. Cooperative Education Experience. 1-2 units

Term Typically Offered: F, W, SP

CR/NC

Prerequisite: Consent of instructor.

Work experience in an area related to computing. Positions are typically paid and usually require relocation and registration in course for one quarter. Registration in course is required at start of work experience. Formal evaluation by work supervisor required. Major and total credit limited to 4 units. Credit/No Credit grading only. Course offered online only.

CSC 496. Selected Advanced Laboratory. 1-4 units

Term Typically Offered: F, W, SP

Prerequisite: Consent of instructor.

Directed group laboratory study of selected topics for advanced students. Open to undergraduate and graduate students. The Class Schedule will list topic selected. Total credit limited to 8 units. 1 to 4 laboratories.

CSC 497. Research Senior Project I. 2 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 307 or CSC 309; and consent of instructor.

Individual research activity under faculty supervision. Problem statement and literature review. Intended for those planning to pursue graduate studies or research-oriented employment.

CSC 498. Research Senior Project II. 2 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 497 and consent of instructor.

Continued individual research activity under faculty supervision. Prototype development, analysis, documentation. Intended for those planning to pursue graduate studies or research-oriented employment.

CSC 500. Directed Study. 1-4 units

Term Typically Offered: F, W, SP

CR/NC

Prerequisite: Fully classified graduate standing and consent of instructor.

Individual directed study of advanced topics. Total credit limited to 4 units. Credit/No Credit grading only.

CSC 508. Software Engineering I. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 307 or CSC 308 and graduate standing, or consent of instructor.

In-depth study of requirements engineering, software project management, formal specifications and object-oriented analysis. 4 seminars.

CSC 509. Software Engineering II. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 508 and graduate standing, or consent of instructor.

In-depth study of software modeling and design. Formal design methodologies. Design patterns. Detailed case studies of existing projects. Tools and methods for designing large software systems. 4 seminars.

CSC 513. Computing Education Research and Practice. 4 units

Term Typically Offered: F

Prerequisite: Graduate standing or senior standing.

An overview of the current landscape of computing education research and practice, covering key research findings about how people learn computing, issues of diversity and inclusion in computer science, and a discussion of how and why we should teach everyone computing. 4 seminars.

CSC 515. Computer Architecture. 4 units

Term Typically Offered: TBD

Prerequisite: CPE 315 or CPE 333, and graduate standing; or consent of instructor.

Comparative study and design of multiprocessor, dataflow, RISC, high level language and other new computer architectures. VLSI processor design techniques. 3 seminars, 1 laboratory. Crosslisted as CPE/CSC 515.

CSC 521. Computer Security. 4 units

Term Typically Offered: TBD

Prerequisite: CPE/CSC 321 and graduate standing.

Exploration of advanced topics in computer security with an emphasis on research topics. 3 lectures, 1 laboratory.

CSC 522. Advanced Network Security. 4 units

Term Typically Offered: W

Prerequisite: CPE/CSC 321 and CPE 464; or graduate standing.

Exploration of network security and design. Particular emphasis will be placed on the threat modeling and security mechanisms design. Laboratory exploration of network security through possible theoretical and experimental experience in system design. 3 lectures, 1 laboratory.

CSC 524. System Security. 4 units

Term Typically Offered: TBD

Prerequisite: CPE/CSC 357 or graduate standing.

Exploration of system security and design. Particular emphasis will be placed on vulnerabilities and defenses in components, component selection, component interaction, sourcing, and system design. Laboratory exploration of system security through a hands-on experience in system design. 3 lectures, 1 laboratory.

CSC 530. Languages and Translators. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 430 and graduate standing, or consent of instructor.

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

CSC 540. Theory of Computation II. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 445 and graduate standing, or consent of instructor.

Advanced topics in theoretical computer science from such areas as automata theory, cellular automata theory, computational complexity, and program verification. 4 seminars.

CSC 549. Advanced Algorithm Design and Analysis. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 349.

Advanced study of algorithmic topics including dynamic programming, network flows, and linear programming. Complexity classes and reductions. NP-complete problems, with the introduction of approximation algorithms. 4 lectures.

CSC 550. Operating Systems. 4 units

Term Typically Offered: TBD

Prerequisite: CSC/CPE 453 and graduate standing, or consent of instructor.

General concepts of computer architecture and operating systems. Design features of advanced computers, general time-sharing systems and schemes for dynamic memory allocation, scheduling and protection. Dynamic linkage between subroutines. Intercommunication between input/output and processors. 4 seminars.

CSC 560. Database Systems. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 365 and graduate standing, or consent of instructor.

Current topics in database systems: distributed databases and transactions, nested and long-running transactions, distributed concurrency control, semantic and object-oriented data models, database systems for non-traditional applications: engineering design databases, active, logic, temporal, multimedia, and real-time databases. 4 seminars.

CSC 564. Computer Networks: Research Topics. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 364 or CPE 464, and graduate standing; or consent of instructor.

Exploration of advanced topics in emerging computer networking technologies; focus on leading edge computer network research topics. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 564.

CSC 566. Topics in Advanced Data Mining. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 466 or CSC 480 or CSC 582.

Advanced topics in the areas of data mining, knowledge discovery in data, machine learning, information retrieval and intelligent analysis of information. The Class Schedule will list topic selected. Total credit limited to 8 units. 4 lectures.

CSC 569. Distributed Computing. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 248 or CSC 348; and CPE/CSC 357; or graduate standing and consent of instructor.

Principles and practices in distributed computing: interprocess communications, group communications, client-server model, distributed objects, message queue system, distributed services, mobile agents, object space, Internet protocols. Distributed algorithms: consensus protocols, global state protocols. Fault tolerance: classification of faults, replication. 3 lectures, 1 laboratory. Crosslisted as CPE/CSC 569.

CSC 570. Current Topics in Computer Science. 2-4 units

Term Typically Offered: TBD

Prerequisite: Graduate standing and evidence of satisfactory preparation in computer science.

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

CSC 572. Computer Graphics. 4 units

Term Typically Offered: TBD

Prerequisite: Successful completion of CSC/CPE 471 and graduate standing, or consent of instructor.

Advanced topics in computer graphics with emphasis on leading edge computer graphics technologies and advanced topics in graphics fundamentals. 3 lectures, 1 laboratory.

CSC 574. Advanced Compute Shaders in Computer Graphics. 4 units

Term Typically Offered: F

Prerequisite: CPE/CSC 471 or graduate standing.

Advanced methods and techniques that utilize general-purpose computing on modern graphics processing units (GPUs) to achieve state-of-the-art effects with physics, animation and lighting. Parallel processing paradigms on the GPU with compute shaders. 3 lectures, 1 laboratory.

CSC 580. Artificial Intelligence. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 480 and graduate standing, or consent of instructor.

Current research in the field of artificial intelligence with emphasis on cooperative agents, distributed agents, and decision making in complex, concurrent environments. AI programming in a distributed environment. 3 lectures, 1 laboratory.

CSC 581. Computer Support for Knowledge Management. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 480 or consent of instructor.

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

CSC 582. Computational Linguistics. 4 units

Term Typically Offered: TBD

Prerequisite: CSC 482 or consent of instructor.

Research-based review of recent advancements in computational linguistics and natural language processing. Topics selected from: language morphology, natural language generation, feature extraction and unification, meaning representations, stylistics, discourse analysis and machine learning methods. 3 lectures, 1 laboratory.

CSC 587. Advanced Deep Learning. 4 units

Term Typically Offered: SP

Prerequisite: CSC 487; or Data Science Minor and DATA 402; or graduate standing.

Current research in the field of deep learning. Topics such as supervised, unsupervised, and semi-supervised learning; representation learning; probabilistic and generative models; reinforcement learning; application domains, including image, audio, and natural language processing; ethical concerns and fairness. 4 lectures.

CSC 590. Thesis Seminar. 1 unit

Term Typically Offered: F, W, SP

Prerequisite: Graduate standing or consent of instructor.

Preparation for conducting research in the field of computer science, through discussions, selected readings, and student presentations. 1 seminar.

CSC 593. Cooperative Education Experience. 2 units

Term Typically Offered: F, W, SP

CR/NC

Prerequisite: Graduate standing and consent of instructor.

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

CSC 594. Cooperative Education Experience. 6 units

Term Typically Offered: F, W, SP

CR/NC

Prerequisite: Graduate standing and consent of instructor.

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

CSC 595. Cooperative Education Experience. 12 units

Term Typically Offered: F, W, SP

CR/NC

Prerequisite: Graduate standing and consent of instructor.

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

CSC 596. Research in Computer Science I. 2 units

Term Typically Offered: F, W, SP

Prerequisite: Consent of instructor.

Individual research or activity under faculty supervision, beginning work in preparation for the master's thesis.

CSC 597. Research in Computer Science II. 2 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 596 and consent of instructor.

Individual research activity under faculty supervision, continuing work in preparation for the master's thesis.

CSC 599. Thesis. 4 units

Term Typically Offered: F, W, SP

Prerequisite: CSC 590; CSC 498 or CSC 597; graduate standing; and consent of instructor.

Individual research or activity under faculty supervision leading to an acceptable Master's thesis.

Paul E. Anderson
B.S., Wright State University, 2004; M.S., 2006; Ph.D. 2010.

Stephen Beard
B.S., California Polytechnic State University, San Luis Obispo, 2010 ; M.S., Princeton, 2011; Ph.D., 2019.

John M. Bellardo
B.S., California Polytechnic State University, San Luis Obispo, 1999; M.S., University of California, San Diego, 2001; Ph.D., 2006.

Rodrigo Canaan
B.S., Universidade Federal do Rio de Janeiro, 2011; Ph.D., New York University, 2021.

John Clements
B.A., Princeton University, 1996; M.S., Rice University, 2001; Ph.D., Northeastern University, 2005.

Bruce E. DeBruhl
B.S. Kettering University, 2009; M.S. Carnegie Mellon University, 2013; Ph.D. 2015.

Alexander Dekhtyar
Ph.D., University of Maryland College Park, 2000.

Christian Eckhardt
Ph. D., Vienna University of Technology, Austria, 2011.

Dongfeng Fang
B.S., Harbin Institute of Technology, China, 2009; M.S., Shanghai University, China, 2014; Ph.D., University of Nebraska, 2019.

Daniel P. S. Frishberg
B.A., Oberlin College, 2007; M.S., University of California, Irvine, 2020; Ph.D., 2023

Hasmik Gharibyan
M.S., Yerevan State University, Republic of Armenia, USSR, 1981; Ph.D., 1991.

Javier Gonzalez-Sanchez
B.S., University of Guadalajara, 1997; M.S., National Polytechnic Institute of Mexico, 2000; Ph.D., Arizona State University, 2016.

April Grow
B.S., University of California, Santa Cruz, 2011; M.S., 2014; Ph.D., 2019

Michael L. Haungs
B.S., University of California, Berkeley, 1992; M.S., Clemson University, 1998; Ph.D., University of Davis, 2002.

Ayaan M. Kazerouni
B.S., University of West Georgia, USA, 2015; Ph. D., Virgina Tech, 2020

Timothy J. Kearns
B.A., Boston College, 1969; M.S., University of Notre Dame, 1970; Ph.D., 1976.

Aaron W. Keen
B.S., University of California, Davis, 1997; M.S., 2000; Ph.D., 2002.

Foaad Khosmood
B.S., California Polytechnic State University, San Luis Obispo, 1999; M.S., 2005; Ph.D., University of California, Santa Cruz, 2011.

Franz J. Kurfess
M.S., Technical University of Munich, 1984; Ph.D., 1990.

Christopher Lupo
B.S., California State University, Fresno, 1997; M.S., University of California, Davis, 2007; Ph.D., 2008.

Theresa Migler
B.S., Math, Cal Poly, 2004; M.S., Math, Cal Poly, 2007; M.S. CS, Oregon State, 2013; Ph.D. CS, Oregon State, 2014.

Joydeep Mukherjee
B.E., National Institute of Technology, India, 2006; M.S., University of Calgary, 2012; Ph.D., 2018.

Sumona Mukhopadhyay
B.Tech., West Bengal University of Technology, 2006; M. Tech., 2008; Ph.D., University of Calgary, 2018.

Phillip L. Nico
B.A., University of California, Berkeley, 1991; M.S., University of California, Davis, 1994; Ph.D., 2000.

Maria Pantoja
B.S., University of Valencia, Spain, 1992; M.S., California State University, East Bay, 2004; Ph.D. Santa Clara University, 2009.

Zachary Peterson
B.S., Univ of CA, Santa Cruz, 2000; M.S., 2002; M.S., The Johns Hopkins University Information Security Institute, 2005; Ph.D., The Johns Hopkins University, 2006.

Mugizi Rwebangira
B.S., Howard University, 2002; M.S., Carnegie Mellon University, 2006; Ph.D., 2008.

John S. Seng
B.S., Northwestern University, 1997; M.S., University of California, San Diego, 1999; Ph.D., 2003.

Devkishen Sisodia
B.S., University of Texas at Arlington, 2015; Ph.D., University of Oregon, 2022.

Lubomir Stanchev
B.S., University of Sofia, 1998; M.S., 1998; Ph.D., University of Waterloo, 2005.

Ka Yaw Teo
B.S., University of Texas at Arlington; M.S., 2009; M.S., Purdue University, 2012; M.S., University of Texas at Dallas, 2018; Ph.D. 2023

Jonathan Ventura
B.S., University of California, Santa Barbara, 2005; M.S., University of California, Santa Barbara, 2010; Ph.D., University of California, Santa Barbara, 2012.

Zoe J. Wood
B.A., University of California, Santa Cruz, 1992; B.S., 1997; M.S., California Institute of Technology, 2000; Ph.D., 2003.

Bruno da Silva
B.S., Ruy Barbosa College, Brazil, 2005; M.S., Federal University of Rio Grande do Sul, Brazil, 2009; Ph.D., Federal University of Bahia, Brazil, 2015.