University of Southern California

Viterbi School of Engineering

Computer Science

Graduate Degrees

The requirements listed below are special to this department and must be read in conjunction with the general requirements of the USC Viterbi School of Engineering for master’s degrees and the general requirements of the USC Graduate School for Ph.D. degrees. The graduate program in computer science provides intensive preparation in the basic concepts and techniques related to the design, programming and application of digital computers. Both the Master of Science and Doctor of Philosophy degrees are offered.

A Master of Science degree with specialization in software engineering is also offered. The program seeks to prepare students for an industrial leadership career in software engineering. It also serves as an introduction to this area for students who wish to pursue advanced studies and research leading to a Ph.D.

A Master of Science degree with specialization in intelligent robotics is also offered. This program seeks to prepare students for an industrial career in the development of computer systems for CAD/CAM (Computer-Aided Design and Manufacturing) and robotics. It also serves as an introduction to this area for students who wish to pursue advanced studies and research leading to a Ph.D. The emphasis is on the domain of mechanical, electromechanical and mechatronic products. (CAD for digital systems is covered by a separate program offered by the Electrical Engineering-Systems department.)

A Master of Science degree with a specialization in computer networks is offered. This specialization prepares students in the areas of computer communications, networks and distributed processing.

A Master of Science in Computer Science (Multimedia and Creative Technologies) is also offered.

A Master of Science in Computer Science (High Performance Computing and Simulations) is also offered.

A Master of Science in Computer Science (Data Science) is also offered.

A Master of Science in Computer Science (Game Development) is also offered.

A Master of Science in Computer Science (Computer Security) is also offered.

A Master of Science in Computer Science (Technical Professionals) is also offered for students with three to five years of work experience.

A Master of Science in Computer Science (Scientists and Engineers) is also offered for students with limited background in computer science.

Admission and Prerequisites

Admission is determined by the Office of Admission and the Viterbi School of Engineering, in consultation with the Computer Science Department. The applicant is required to have a bachelor’s degree or its equivalent from an accredited college or university; satisfactory scores on the verbal and quantitative portions of the aptitude test of the Graduate Record Examinations (one advanced test from computer science, mathematics or engineering is recommended); and a substantial background in computing constitutes a minimum requirement. Foreign students must earn a satisfactory score on the Test of English as a Foreign Language (TOEFL) or International English Language Testing System (IELTS).

Master of Science in Computer Science

Requirements for Graduation without a Thesis

A minimum grade point average of 3.0 must be earned on all course work applied toward the master’s degree in computer science. This average must also be earned on all graduate courses completed at USC (400-level and above). Transfer units count as credit (CR) toward the master’s degree and are not computed in the grade point average. The required courses are as follows: CSCI 570 and one course from each of the following two categories: I. CSCI 551, CSCI 555, CSCI 571, CSCI 577a, CSCI 585, EE 557; II. CSCI 545, CSCI 561, CSCI 564, CSCI 574, CSCI 580, CSCI 582. A maximum of 4 units may be taken at the 400 level from approved courses in either electrical engineering or computer science; the remaining units must be approved courses at the 500 or 600 level. CSCI 590 and ENGR 596 may be counted for a maximum of 6 units. Total units required for the degree is 27. No examination is required for the degree. Other requirements for the Master of Science in computer science are the same as set forth in the general requirements for Viterbi School of Engineering master’s degrees.

A maximum of 4 units may be taken at the 400 level from approved courses in either electrical engineering or computer science; the specialization “Game Development” allows for up to 7 units at the 400 level. The remaining units must be approved courses at the 500 or 600 level.

Thesis Option

With the approval of a supervising professor, qualified students may be allowed to pursue a thesis option. Students pursuing the thesis option must satisfy all of the policies and course requirements for the master’s degree with the following exceptions: A maximum of 4 units from approved courses may be taken at the 400 level in either electrical engineering or computer science; and CSCI 590 and ENGR 596 may be counted for a maximum of 2 units. In addition, these students must enroll in a minimum of two semesters of CSCI 594abz for a maximum of 4 units. Total units required for the degree is 27. The thesis must comply with all requirements set by the Graduate School. The thesis option is available to students pursuing degrees in the following programs: M.S. in computer science and M.S. in computer science with specializations in computer networks, software engineering, intelligent robotics, multimedia and creative technologies, computer security and high performance computing simulations.

Master of Science in Computer Science (Data Science)

The Master of Science in Computer Science (Data Science) provides students with a core background in computer science and specialized algorithmic, statistical and systems expertise in acquiring, storing, accessing, analyzing and visualizing large, heterogeneous and real-time data associated with diverse real-world domains including energy, the environment, health, media, medicine and transportation. Students must satisfy all the requirements for the Master of Science degree in Computer Science. The following additional requirements must be met to obtain an M.S. in Computer Science with a specialization in Data Science.

Required Courses units
CSCI 561 Artificial Intelligence 3
CSCI 570 Analysis of Algorithms 3
CSCI 585 Database Systems 3
EE 517 Statistics for Engineers 3
Group Electives (must take 3 courses with a minimum of 1 course from each group): units
Group 1 (Data Systems):
CSCI 548 Information Integration on the Web 3
CSCI 572 Information Retrieval and Web Search Engines 3
CSCI 586 Database Systems Interoperability 3
CSCI 587 Geospatial Information Management 3
CSCI 653 High Performance Computing and Simulations 3
CSCI 685 Advanced Topics in Database Systems 3
Group 2 (Data Analysis):
CSCI 567 Machine Learning 3
CSCI 573 Probabilistic Reasoning 3
CSCI 686 Advanced Big Data Analytics 3
ISE 520 Optimization: Theory and Algorithms 3
MATH 467 Theory and Computational Methods for Optimization 4
MATH 574 Applied Matrix Analysis 3
Electives (a minimum of 2 courses) units
Any 500- or 600-level course in CSCI (including additional group electives)
MATH 458 Numerical Methods 4
MATH 501 Numerical Analysis and Computation 3
MATH 502ab Numerical Analysis 3-3
MATH 505a Applied Probability 3
MATH 601 Optimization Theory and Techniques 3
MATH 650 Seminar in Statistical Consulting 3
Total units required for the degree is 27. No more than 4 units may be taken at the 400-level.

Master of Science in Computer Science (Game Development)

The goal of the M.S. in Computer Science (Game Development) program is to graduate students with a core in computer science, an engineering-oriented game development core and a concentration in one of the key research directions in game development infrastructure, cognition and games, immersion and serious games. Infrastructure is researching and developing the software and hardware infrastructure necessary for the development of the future of interactive games and large-scale simulations; massively multiplayer online games (MMOGs) and simulation networks; game engines and tools; instant games; wireless and mobile games and infrastructures; and next generation consoles. Cognition and games is developing theories for modeling and simulating computer characters and story; developing methods for modeling, simulating and displaying human emotion; analyzing large-scale game play; and developing theories for infusing pedagogy with game play. Immersion is researching and developing the technologies to engage the mind of the game player via sensory stimulation; reading the human emotional state and providing that as an input to the game; and emotionally adaptive game software architectures. Serious games and simulations is developing a theory for the deployment of games and simulations for purposes of education and training, health, public policy and strategic communication; game evaluation; serious game development; and human performance engineering. Students graduating from this program will be capable of engineering next generation games and simulations and their required technologies immediately upon graduation in the entertainment and serious game fields. Additionally, graduates from this program will be able to further their education in graduate programs in game development and computer science. The long-term goal with this M.S. degree is to establish research and development directions that create a science of games and an accompanying archival literature that improves game development for both serious and entertainment purposes.

CSCI (9 units) Units
CSCI 570 Analysis of Algorithms 3
CSCI 580 3-D Computer Graphics and Rendering 3
One of the following:
CSCI 555 Advanced Operating Systems 3
CSCI 561 Foundations of Artificial Intelligence, or
CSCI 573 Probabilistic Reasoning 3
CSCI 571 Web Technologies 3
CSCI 577a Software Engineering 4
CSCI 585 Database Systems 3
EE 557 Computer Systems Architecture 3
Game development core (11 units) units
CSCI 522 Game Engine Development 4
CTIN 488 Game Design Workshop 4
EE 452 Game Hardware Architectures 3
Project Classes (7 units) units
CSCI 529ab Advanced Game Projects 4-3
electives units
Complete two courses from one of the following areas of concentration: Infrastructure; Cognition and Games; Immersion; Serious Games.
Infrastructure
CSCI 503 Parallel Programming 3
CSCI 520 Computer Animation and Simulation 3
CSCI 522 Game Engine Development 4
CSCI 523 Networked Games 3
CSCI 524 Networked Artificial Intelligence 3
CSCI 526 Advanced Mobile Devices and Game Consoles 3
Cognition and Games
CSCI 524 Networked Artificial Intelligence 3
CSCI 534 Affective Computing 3
CSCI 541 Artificial Intelligence Planning 3
CSCI 543 Software Multiagent Systems 3
CSCI 573 Probabilistic Reasoning 3
Immersion
CSCI 520 Computer Animation and Simulation 3
CSCI 523 Networked Games 3
CSCI 574 Computer Vision 3
CSCI 588 Specification and Design of User Interface Software 3
CTAN 502a Experiments in Stereoscopic Imaging 2
CTIN 488 Intermediate Game Design Workshop 4
EE 619 Advanced Topics in Automatic Speech Recognition 3
Serious Games
CSCI 520 Computer Animation and Simulation 3
CSCI 537 Immersive Environments 3
CSCI 538 Human Performance Engineering 3
Other courses may be eligible subject to adviser approval.
Total units: 33

Master of Science in Computer Science (Computer Networks)

Under the networks option students must satisfy the requirements for the Master of Science in Computer Science and the following courses must be included in the program: EE 450, CSCI 551, CSCI 555 and three of the following: CSCI 558; CSCI 599 or CSCI 694a or CSCI 694b; EE 549, EE 550 and EE 555. Total units required for the degree is 27. Students who can demonstrate that they have already taken these courses (or equivalent) may be waived out of the requirement by a memo from their faculty adviser. All courses must be approved by a faculty adviser. A list of suggested electives is available from the department office.

Master of Science in Computer Science (Computer Security)

Completion of this program satisfies all the requirements for the Master of Science in computer science.

Required Courses Units
CSCI 530 Security Systems 4
CSCI 531 Applied Cryptography 3
CSCI 551 Computer Communications 3
CSCI 555 Advanced Operating Systems 3
CSCI 570 Analysis of Algorithms 3
CSCI 577a Software Engineering, or 4
CSCI 578 Software Architectures 3
At least one of the following courses:
CSCI 545 Robotics 3
CSCI 561* Foundations of Artificial Intelligence 3
CSCI 564 Brain Theory and Artificial Intelligence 3
CSCI 573* Probabilistic Reasoning 3
CSCI 574 Computer Vision 3
CSCI 580 3-D Graphics and Rendering 3
CSCI 582 Geometric Modeling 3
At least two of the following courses:
CSCI 556 Introduction to Cryptography 3
CSCI 558L Internetworking and Distributed Systems Laboratory 3
CSCI 571 Web Technologies 3
CSCI 585 Database Systems 3
CSCI 599** Special Topics 2-4, max 9
CSCI 694a Topics in Computer Networks and Distributed Systems 3
Total units: 28
*CSCI 561 or CSCI 573 is recommended for this specialization. CSCI 573 may be used in place of CSCI 561 to satisfy the requirements for the general M.S. degree.

**Topics must be pre-approved by an adviser. Course must be a minimum of 3 units.

Master of Science in Computer Science (High Performance Computing and Simulations)

Students in the MSCS-HPCS program must satisfy the current core requirements for the Master of Science in computer science and the following elective courses must be included in the program:

Required Core course units
CSCI 596* Scientific Computing and Visualization 3
Technical Elective courses units
Three of the following courses — students must take courses from both the computer science track and the computational science/engineering application track.
Computer Science Track
CSCI 503 Parallel Programming 3
CSCI 520 Computer Animation and Simulation 3
CSCI 551* Computer Communications 3
CSCI 558L Internetworking and Distributed Systems Laboratory 3
CSCI 580 3-D Graphics and Rendering 3
CSCI 583* Computational Geometry 3
CSCI 595 Advanced Compiler Design 4
CSCI 653* High Performance Computing and Simulations 3
EE 653 Advanced Topics in Microarchitecture 3
EE 657* Parallel and Distributed Computing 3
EE 659* Interconnection Networks 3
MATH 501 Numerical Analysis and Computing 3
Computational Science/Engineering Application Track
AME 535a* Introduction to Computational Fluid Dynamics, or
AME 535b* Introduction to Computational Fluid Dynamics 3
CE 529a* Finite Element Analysis 3
CHE 502 Numerical Methods for Diffusive and Convective Transport 3
EE 553* Computational Solution of Optimization Problems 3
MASC 575* Basics of Atomistic Simulations of Materials 3
MATH 578a Computational Molecular Biology 3
PHYS 516 Methods of Computational Physics 3
PTE 582* Fluid Flow and Transport Processes in Porous Media 3
Adviser approved remainder of elective units 6
*Courses offered through the Distance Education Network (DEN).

Master of Science in Computer Science (Multimedia and Creative Technologies)

Students may earn a specialization in multimedia and creative technologies by completing the general requirements for the Master of Science in computer science and the following additional courses:

Every student must complete CSCI 576 Multimedia Systems Design (3). Students must also complete at least two courses selected from one of the two specialization tracks: Graphics and Vision or Networks and Databases.

Graphics and Vision Track Units
CSCI 520 Computer Animation and Simulation 3
CSCI 574 Computer Vision 3
CSCI 580 3-D Graphics and Rendering 3
CSCI 582 Geometric Modeling 3
CSCI 674 Advanced Topics in Computer Vision 3
EE 569 Introduction to Digital Image Processing 3
Networks and Databases Track Units
CSCI 551 Computer Communications 3
CSCI 558L Internetworking and Distributed Systems Laboratory 3
CSCI 585* Database Systems 3
CSCI 586 Database Systems Interoperability 3
CSCI 694ab Topics in Computer Networks and Distributed Systems 3-3
EE 450 Introduction to Computer Networks 3
Suggested Core and Elective Courses

Since this specialization is systems oriented, it is recommended (but not required) that students select CSCI 555 Advanced Operating Systems and EE 557 Computer Systems Architecture as two of their three core courses. Additional electives may be taken from the two tracks or from the partial list of suggestions below.

CSCI 561* Foundations of Artificial Intelligence 3
CSCI 573 Probabilistic Reasoning 3
CSCI 577ab* Software Engineering 4-4
CSCI 583 Computational Geometry 3
CSCI 588 Specification and Design of User Interface Software 3
CSCI 590 Directed Research 1-12
EE 554 Real Time Computer Systems 3
*Also satisfies a core course requirement in the general requirements for the M.S. degree in Computer Science.

Master of Science in Computer Science (Software Engineering)

Students must satisfy all requirements for the Master of Science degree in Computer Science. In addition, they must take the following courses, CSCI 510, CSCI 577ab and CSCI 578, plus three of the following six courses: CSCI 503, CSCI 511, CSCI 555, CSCI 585, CSCI 588 and EE 557 (EE 557, CSCI 555, CSCI 577a, and CSCI 585 may be used to satisfy both the general master’s degree requirements and the specialization requirements.) Students may also include research for an optional master’s thesis in their programs.

Master of Science in Computer Science (Intelligent Robotics)

Students must take CSCI 545 and three of the following courses: CSCI 445L, CSCI 547 and CSCI 584. Other requirements are the same as for the Master of Science degree in computer science, described above. (CSCI 561 and CSCI 545 may be used to help satisfy both the general master’s requirements and the specialization requirements.) Students may include in their programs research for an optional master’s thesis conducted in collaboration with industry.

Master of Science in Computer Science (Scientists and Engineers)

Designed for students with engineering or science bachelor’s degree but limited background in computer science, this comprehensive, two-year, 37-unit program combines an introductory sequence of undergraduate preparatory and foundational course work with all the graduate breadth requirements necessary to satisfy the traditional master’s degree. Applicants to this program must meet the admissions standards of the Viterbi School of Engineering.

Preparatory Programming Requirement units
CSCI 455x* Introduction to Programming Systems Design 4
Foundational Requirements units
CSCI 402 Operating Systems 4
EE 457 Computer Systems Organization, or
EE 450 Introduction to Computer Networks 3
Breadth Requirements units
CSCI 561 Foundations of Artificial Intelligence 3
CSCI 570 Analysis of Algorithms 3
CSCI 577ab Software Engineering 4-4
CSCI 585 Database Systems 3
Electives units
Select three courses, 9 units, from approved 500-level course work from Computer Science or Electrical Engineering** 9
Total Program units: 37
Total Degree units: 33
*Note: CSCI 455 is a preparatory requirement for this program, but the units for this course do not count toward the 33 units required for the degree.
**See departmental adviser for a list of approved electives.

Master of Science in Computer Science (Technical Professionals)

The M.S. program offers a cohort-based degree designed for computer science technical professionals with three to five years of work experience. Students may begin the program at any point in the year — fall, spring, or summer. It is possible to complete the degree in one calendar year. The GRE general exam is recommended but not required. An interview is required of all finalists.

Required Courses* units
CSCI 402** Introduction to Operating Systems 4
CSCI 561 Foundations of Artificial Intelligence, or
CSCI 580*** 3-D Graphics and Rendering 3
CSCI 570 Analysis of Algorithms 3
CSCI 571 Web Technologies 3
CSCI 576 Multimedia Systems Design 3
CSCI 577ab Software Engineering 4-4
CSCI 585 Database Systems 3
Total units: 27
*Students enrolled in the program are not limited to the courses listed here. These are simply the courses which we routinely offer in evening sessions. Schedule permitting, students are free to take advantage of our full array of courses, including those offered during the day. However, any course selection beyond this list should be done in consultation with an academic adviser.
**Students who can demonstrate programming proficiency may replace CSCI 402 with another 500-level elective.
***If a student wishes to take both CSCI 561 and CSCI 580, the second course may be taken in place of CSCI 571, CSCI 576 or CSCI 585.

Graduate Certificate in Software Architecture

This certificate program will provide engineers with the skills required to face the increasingly complex future in architecting systems, systems of systems and software-intensive systems. Students will be exposed to the concepts, principles and state-of-the-art methods in software architectures. This program introduces principles and approaches for modeling systems using SysML; applies software engineering process models and management approaches to the design and architecture of large software systems; and guides the architect through every phase of the conception, implementation, deployment and finally retirement of software systems. It is expected that participants in the certificate program will have completed an undergraduate degree in computer science or a related field and will have several years of practical experience in software engineering and/or systems engineering. If students are later admitted to the Master of Science in Computer Science, the courses taken for the certificate may be applied to that program.

Required Courses Units
CSCI 568 Requirements Engineering 3
CSCI 578 Software Architectures 3
SAE 547 Model-Based Systems Architecting and Engineering 3
SAE 549 Systems Architecting 3
Electives (Choose One) Units
CSCI 510 Software Management and Economics 3
CSCI 530* Security Systems 4
CSCI 555* Advanced Operating Systems 3
CSCI 577a Software Engineering 4
CSCI 577b Software Engineering 4
CSCI 589** Software Engineering for Embedded Systems 3
EE 557*** Computer Systems Architecture 3
SAE 541 Systems Engineering Theory and Practice 3
Total units: 15
*Prerequisite: CSCI 402
**Prerequisite: CSCI 577a
***Prerequisite: EE 457

Doctor of Philosophy in Computer Science

The Doctor of Philosophy degree in computer science is awarded in strict conformity with the general requirements of the USC Graduate School. Admission to the Ph.D. program in computer science is highly selective, based upon a superior academic record, prior training in computer science, letters of recommendation, a statement of purpose and Graduate Record Examinations scores. Applicants are expected to have completed the equivalent course work necessary to satisfy the general breadth requirements outlined in the Master’s Admissions and Prerequisites section. Particular attention is given to the applicant’s potential to perform original research in an area of computer science. Since research potential is a key factor in the evaluation, new students are strongly urged to begin research with a computer science faculty member as soon as possible. See general requirements for graduate degrees.

Screening Procedure

When a student has completed 21 units or more of graduate level studies or no later than his or her fourth semester in computer science at USC, he or she must apply for screening. The screening evaluation takes place during the regular review of Ph.D. students; based upon the student’s performance in course work, overall record, and research potential, the screening evaluation determines whether or not the student will be allowed to continue toward the Ph.D. A screening determination of “pass,” “no pass” or “postpone” is made; in the latter case, the student must reapply for screening the subsequent semester(s) until a “pass” or “no pass” determination is made.

Qualifying Exam Committee

After passing the screening procedure, the student must select a dissertation adviser and form a qualifying exam committee consisting of the dissertation adviser and at least four other faculty members. The committee must include a faculty member from another department who does not hold a joint appointment in computer science. All qualifying exam committees must be approved by the department chair and the Graduate School.

Course Requirements

Each Ph.D. student is expected to demonstrate breadth of knowledge as well as depth in a chosen area of concentration. Hence, the required courses fall into two groups: (1) a common core, required of all doctoral students, and (2) additional required courses which depend on the student’s area of concentration. The common core consists of five courses selected from the following five groups. Students must complete one class from each group: Group 1: EE 557 Computer Systems Architecture, CSCI 551 Computer Communications, CSCI 555 Advanced Operating Systems; Group 2: CSCI 577a Software Engineering, CSCI 571 Web Technologies, CSCI 585 Database Systems; Group 3: CSCI 545 Robotics, CSCI 561 Foundation of Artificial Intelligence, CSCI 564 Brain Theory and Artificial Intelligence; Group 4: CSCI 574 Computer Vision, CSCI 580 Graphics and Rendering, CSCI 582 Geometric Modeling; Group 5: CSCI 670 Advanced Analysis of Algorithms, CSCI 581 Logic and its Applications, MATH 501 Numerical Analysis and Computation. A minimum GPA of 3.5 must be obtained in these five core courses.

In addition, all Ph.D. students must register for two semesters of CSCI 597 Seminar in Computer Science Research for a maximum of 2 units during their first year. Ph.D. programs in computer science are grouped into the following specializations: Network and Systems (Interaction); Databases (Interaction); Software Engineering (Interaction); Robotics (Autonomy); Intelligent Agents and Organizations (Autonomy); Natural Language Processing (Autonomy); Graphics and Multimedia (Immersion); Vision (Immersion); Theory of Computation: Genomic, Molecular and Quantum Computation (Computation); Brain Theory and Neural Networks (Computation); High Performance Computing and Parallel Computation (Computation).

Each student must select a specialization as his or her area of concentration. Each specialization requires a minimum of three additional courses. Specific specialization requirements (which may change as the fields change) will be provided to the students by the department.

Required courses may be taken in any chronological order, with due attention to prerequisites, and may precede or follow the Screening Evaluation.

A total of 60 units, at least 40 at the 500 level or above, beyond the bachelor’s degree is required (including the above required courses). A minimum grade point average of 3.5 must be maintained. Students with a Master of Science degree may transfer up to 27 units.

Qualifying Examination

All doctoral students must pass a qualifying examination in computer science within four years before being admitted to candidacy. The qualifying examination tests the student’s broad knowledge of computer science and deep insight into a chosen area of research.

Permission to take the qualifying examination must be obtained from the dean of graduate studies at least 60 days prior to its occurrence, and must be taken in the semester for which permission is granted. The qualifying exam committee administers the qualifying examination and evaluates the student’s performance. If the examination is failed, the qualifying exam committee may recommend that the student repeat the examination 6–12 months later. The examination cannot be taken more than twice.

Dissertation

An acceptable dissertation based upon original research is required. The dissertation must show mastery of some special field, must be an original contribution to that field and must be presented in scholarly form.

Defense of the Dissertation

When all other requirements are satisfied, the candidate must pass a public final oral examination in defense of the dissertation.