The terms indicated are expected but are not guaranteed. For the courses offered during any given term, consult the Schedule of Classes.
Computer Science (CSCI)
101L Fundamentals of Computer Programming (3, FaSp) Introduction to the design of solutions to computer solvable problems. Algorithm design, solution implementation using a high-level programming language, program correctness and verification.102L Data Structures (4, FaSp) Linear lists, strings, arrays, and orthogonal lists; graphs, trees, binary trees, multilinked structures, sorting techniques; dynamic storage allocation; applications. Prerequisite: CSCI 101L.
110 Introduction to Digital Logic (3) (Enroll in EE 101)
120 Fundamental Concepts of Computer Science (4) Introduction to problem solving, algorithmic development, and data structures. Programs will be developed in a high level programming language. Duplicates credit in CSCI 101L and/or CSCI 102.
201L Principles of Software Development (4) The object-oriented paradigm for programming-in-the-large (using the C++ language); UNIX tools for software development; developing window-based applications under X-windows. Prerequisite: CSCI 102 or CSCI 120.
271 Discrete Methods in Computer Science (4, FaSp) Models for discrete structures in computer science, including selected applications of logic, induction, recursion and graphs to program correctness, design algorithms, programming language semantics and databases. Corequisite: CSCI 102.
301 Theory of Computation (3) Finite state automata, regular sets; context-free grammars, pushdown automata; Turing machines, undecidability, the halting problem, Church's thesis, recursive functions, effective procedures. Prerequisite: CSCI 102 and CSCI 271.
303 Design and Analysis of Algorithms (3) Design techniques including backtracking, dynamic programming, divide and conquer, data structure, fast Fourier transform; finite combinatorial mathematics. Prerequisite: CSCI 102 and CSCI 271.
351 Programming and Multimedia on the World Wide Web (3, Sp) HTML programming for creating home pages, installation and modification of Web server, writing programs that offer enhanced services, manipulation of graphics, video and sound. Prerequisite: CSCI 201.
357 Basic Organization of Computer Systems (3) (Enroll in EE 357)
362x Machines That Think (4) Introduction to artificial intelligence; computing machines and programs that sense, reason, and act; problem solving by machines, inference mechanisms, robotics; social and philosophical implications. Not available for major credit to engineering or computer science majors.
390 Special Problems (1-4) Supervised, individual studies. No more than one registration permitted. Enrollment by petition only.
402x Operating Systems (3) Basic issues in concurrency, deadlock control, synchronization scheduling, memory management, protection and access control, inter-process communication, and structured design. Laboratory experiences with Unix-like operating system. Not available for graduate credit to computer science majors. Prerequisite: CSCI 201L or CSCI 455x.
410x Translation of Programming Languages (4) Concepts of assemblers, compilers, interpreters and their design; macro assemblers, Polish notation and translation techniques; operator precedence parsing, code generation. Not available for graduate credit to computer science majors. Prerequisite: CSCI 102 and EE 357.
420 Concepts in Programming Languages (3) Concepts in programming languages; syntax description, procedures and parameters, scope, recursion, data types; examples from FORTRAN, ALGOL60, PASCAL, SIMULA, EUCLID, ALPHARD, and CLU. Prerequisite: CSCI 402 and CSCI 410.
430 Finite Automata Theory (3) Regular sets; finite state acceptors; right-linear grammars; finite state machines; set operations; Kleene theorem; state minimization; incomplete state reduction; selected other topics. Prerequisite: CSCI 301 or MATH 410 or departmental approval.
445 Introduction to Robotics (3) Programming robots to identify, avoid, grasp, and relocate objects; mathematics of spatial transforms, kinematics of robot arms: forward, inverse, and differential; robot vision. Duplicates credit in EE/CS 545. Prerequisite: C-language programming or equivalent; CSCI 101L and senior standing.
446 Robotics and Sensing for Automated Assembly (3) Fundamental principles of mechanics of parts and devices for automated assembly. Robots, parts feeders, automated guided vehicles, industrial sensing. Programming of robots and sensors. Junior or senior standing or departmental approval. Prerequisite: CSCI 101L.
450 Introduction to Computer Networks (3) (Enroll in EE 450)
454L Introduction to Systems Design Using Microprocessors (4) (Enroll in EE 454L)
455x Introduction to Programming Systems Design (4) Intensive introduction to programming principles, discrete mathematics for computing, software design and software engineering concepts. Not available for credit to computer science majors, graduate or undergraduate. Prerequisite: departmental approval.
457x Computer Systems Organization (3) (Enroll in EE 457)
458 Numerical Methods (4) (Enroll in MATH 458)
460 Introduction to Artificial Intelligence (3, FaSp) Concepts and algorithms underlying the understanding and construction of intelligent systems. Agents, problem solving, search, representation, reasoning, planning, communication, perception, robotics, neural networks. Junior standing. Prerequisite: CSCI 102L or CSCI 455x.
465 Probabilistic Methods in Computer Systems Modeling (3) (Enroll in EE 465)
466 Simulation of Computer Systems (3) Simulation and queueing models, simulation languages, generation of random numbers, analysis of data, model validation, statistical sampling and selected applications. Prerequisite: CSCI 102 and either MATH 407 or EE 464.
477L Design and Construction of Large Software Systems (4) Programming methodologies; intra-group and inter-group communication; software life-cycle; software economics. A large software project is a central aspect of the course. Laboratory. Prerequisite: CSCI 102.
480 Computer Graphics (3) Hardware for interactive graphic systems; picture representations; data structures for graphics; picture processing techniques; languages for graphics; survey of applications such as animation and simulation. Prerequisite: CSCI 102.
482 Introduction to Geometric Modeling (3) Role of geometry in CAD/CAM. Graphic user interfaces; motions and projections; cubes, surfaces and solids; fundamental algorithms. Applications in analysis, manufacturing, inspection and robots. Junior or senior standing. Prerequisite: CSCI 101 or departmental approval.
485 File and Database Management (3) File input/output techniques, basic methods for file organization, file managers, principles of databases, conceptual data models, and query languages. Prerequisite: CSCI 201.
490x Directed Research (2-8, max 8) Individual research and readings. Not available for graduate credit. Prerequisite: departmental approval.
495 Senior Project (4) (Enroll in PHYS 495)
499 Special Topics (2-4, max 8) Selected topics in computer science.
501 Numerical Analysis and Computation (3) (Enroll in MATH 501)
502ab Numerical Analysis (3-3) (Enroll in MATH 502ab)
504ab Numerical Solutions of Ordinary and Partial Differential Equations (3) (Enroll in MATH 504ab)
505ab Applied Probability (3-3) (Enroll in MATH 505ab)
510 Software Management and Economics (3) Theories of management and their application to software projects. Economic analysis of software products and processes. Software cost and schedule estimation, planning and control. Prerequisite: graduate standing.
533 Combinatorial Analysis and Algebra (3) (Enroll in MATH 533)
541 Reasoning about Actions and Plans (3, Irregular) Foundations and techniques of automated planning, including representations of actions and plans, approaches to planning, controlling search, learning for planning, and interaction with the environment. Prerequisite: CSCI 561.
544 Natural Language Processing (3) Examination of the issues which enable computers to employ and understand natural language; knowledge representation, memory modeling, parsing, language analysis, story understanding, and generation. Prerequisite: CSCI 460 or CSCI 561 or departmental approval.
545 Robotics (3) Fundamental skills for programming robots for industrial applications; spatial transforms and kinematics; geometric algorithms for identifying, avoiding, grasping, and relocating objects; current research issues. Duplicates credit in CSCI 445. Prerequisite: C-language programming.
547 Software Methods in Robotics (3) (Enroll in EE 547)
551 Computer Communications (3, Sp) Protocol design for computer communication networks, network routing, transport protocols, internetworking. Prerequisite: CSCI 402, EE 450 and C-language programming.
552 Logic Design and Switching Theory (3) (Enroll in EE 552)
553 Computational Solution of Optimization Problems (3) (Enroll in EE 553)
554 Real Time Computer Systems (3) (Enroll in EE 554)
555 Advanced Operating Systems (3) Advanced issues in computer organization, naming, kernel design, protection mechanisms and security policies, reliable computing, data base OS, secure networks, systems specification, decentralized systems, real time systems. Prerequisite: CSCI 402.
556 Introduction to Cryptography (3) Modern secret codes. Public key cryptosystems of Rivest-Shamir-Adelman, Diffie-Hellman and others. The underlying number theory and computational complexity theory. Prerequisite: CSCI 570 or CSCI 572 or CSCI 581 or departmental approval.
557 Computer Systems Architecture (3) (Enroll in EE 557)
558L Internetworking and Distributed Systems Laboratory (3, FaSp) Students complete laboratory exercises in operating system and network management, distributed systems, TCP/IP, SNMP, NFS, DNS, etc. Term project required. Prerequisite: CSCI 402 and EE/CSCI 450; recommended preparation: CSCI 551 and CSCI 555.
559 Mathematical Pattern Recognition (3-3) (Enroll in EE 559)
560L Advanced Microcomputer-Based Design (3) (Enroll in EE 560L)
561ab Artificial Intelligence (3) Problem-solving techniques in artificial intelligence; search methods, game-playing, knowledge-based systems, formal logic representations and theorem proving, planning systems, natural language understanding. Prerequisite: CSCI 455x.
564 Brain Theory and Artificial Intelligence (3) Introduces neural modelling, distributed artificial intelligence and robotics approaches to vision, motor control and memory. Prerequisite: graduate standing.
565 Compiler Design (4) Formal grammars; parsing methods and lexical analysis; code generation; local and global code optimization; and dynamic allocation. Prerequisite: CSCI 455x.
566 Neural Network Self-Organization (2) Differential equations for network pattern formation. Dynamic link architecture. Simulation of brain organization processes (retinotopy, orientation columns) and face recognition by elastic matching. Recommended preparation: CSCI 564 and either MATH 225 or MATH 245.
567 Machine Learning (3) The study of self-modifying computer systems that acquire new knowledge and improve their own performance. Topics include induction, explanation-based learning, analogy, discovery, and connectionist learning. Prerequisite: CSCI 561.
568 Commonsense Reasoning (3) Formalism for representing commonsense knowledge about quantities, time, space, physics, minds, plans, goals and society. Methods for making commonsense inferences. Prerequisite: CSCI 561.
569 Integrated Intelligent Systems (3) Approaches to solving the artificial intelligence problem: combining components of intelligent behavior - learning, problem solving, planning, knowledge, language, perception, action - into integrated intelligent systems. Prerequisite: CSCI 561.
570 Analysis of Algorithms (3) Explores fundamental techniques such as recursion, Fourier transform ordering, dynamic programming for efficient algorithm construction. Examples include arithmetic, algebraic, graph, pattern matching, sorting, searching algorithms.
571 Issues of Programming Language Design (3, Fa) Advanced study of programming languages; abstract data types, semantic definition, object-oriented programming, programming for concurrency. Examples taken from: FORTRAN, C, C++, ADA, Lisp, Prolog, and others. Prerequisite: graduate standing and knowledge of at least two programming languages.
572 Advanced Theory of Computation (3) Machine models of effective computability; subrecursive hierarchies; P and NP problems; effective and efficient reducibility; time, space, and abstract complexity. Prerequisite: CSCI 301 or departmental approval.
573 Foundations of Logic Programming (3) Theoretical foundations of logic programming and related paradigms. Least-model semantics, resolution theorem proving, approaches to negation, models of execution, relationships to PROLOG, deductive databases, etc. Prerequisite: CSCI 571 and knowledge of PROLOG, or CSCI 581, or departmental approval.
574 Computer Vision (3) Description and recognition of objects, shape analysis, edge and region segmentation, texture, knowledge based systems, image understanding. Prerequisite: CSCI 455x.
576 Multimedia Title Development (3, Sp) Covers most technical aspects of the production of a multimedia title, from the low level mechanisms up to the development methodologies. Prerequisite: CSCI 480.
577ab Software Engineering (4-4) a: Software life cycle processes; planning considerations for product definition, development, test, implementation, maintenance. Software requirements elicitation and architecture synthesis. Team project. b: Software development, test, implementation, and maintenance methods. CASE tools and software environments. Software product engineering, configuration management, quality engineering, documentation. Application via projects. Prerequisite: a: graduate standing; b: CSCI 577a.
579 Graph and Combinatorial Algorithms (3) Review of basic graph theory and graph searching, connectivity, flows, matching, ear decomposition, planarity, NP-completeness, sorting, geometric algorithms, parallel algorithms, parallel random access machines. Prerequisite: CSCI 303.
580 Image Synthesis (3, Fa) The process of creating images from geometric models. Commonly called the rendering pipeline, it involves 3D transformations, projection, rasterizing, illumination, hidden surface removal, texturing, and antialiasing. Prerequisite: CSCI 480.
581 Logic and its Applications (3) Formal systems, first order logic, truth, completeness, compactness, Godel incompleteness, recursive functions, undecidability. Selected applications, e.g., theorem proving, artificial intelligence, program verification, databases, computational complexity. Prerequisite: CSCI 430 and MATH 470.
582 Geometric Modeling (3) Mathematical models and computer representations for three-dimensional solids; underlying topics from set theory, geometry, and topology. Fundamental algorithms; applications to CAD/CAM and robotics. Prerequisite: EE 441 and CSCI 102 or equivalent knowledge of linear algebra and data structures.
583 Computational Geometry (3) Geometric algorithms from graphics, vision, geometric modeling, and optimization are studied in a unified way. Topics include proximity, motion planning, Voronoi diagrams, convex hulls. Prerequisite: CSCI 303.
584 Intelligent Systems for Design and Manufacture (3) Computational geometry and AI applications in design, manufacture, assembly and inspection. Feature recognition; setup, process, and path planning. Conceptual design for mechanical and mechatronic products. Prerequisite: CSCI 582 and CSCI 561.
585 Database Systems (3) Database system architecture; conceptual database models; semantic, object-oriented, logic-based, and relational databases; user and program interfaces; database system implementation; integrity, security, concurrency and recovery. Prerequisite: CSCI 485 or departmental approval.
586 Database Systems Interoperability (3, Sp) Federated and multi-database systems, database networking, conceptual and schematic diversity, information sharing and exchange, knowledge discovery, performance issues. Prerequisite: CSCI 585.
587ab Mathematical Models of Neurons and Neural Networks (3-3) (Enroll in MATH 587ab)
588 Specification and Design of User Interface Software (3) The design and implementation of user interface software. Study of issues relating to human/computer interaction. Visual design and real-time interfaces. Prerequisite: CSCI 577a.
590 Directed Research (1-12) Research leading to the master's degree. Maximum units which may be applied to the degree to be determined by the department. Graded CR/NC.
592 Symbolic Computation for Artificial Intelligence (3) Symbolic computation; LISP programming; implementation of advanced techniques such as pattern matching and object oriented computation; survey of knowledge representation languages (PROLOG, KRL, others). Prerequisite: CSCI 455x; corequisite: CSCI 561.
595 Advanced Compiler Design (4, Fa) Code generation, data-flow analysis, global optimization, register allocation, data dependency analysis, unimodular transformations, vectorization, parallelization, data and computation decomposition. Prerequisite: CSCI 565.
598 Expert Systems (3) Techniques for building, using, and maintaining domain-specific problem-solving or consultation systems; comparative studies of existing expert systems; explanation generators; knowledge of acquisition and maintenance. Prerequisite: CSCI 561 and EE 592 or departmental approval.
599 Special Topics (2-4, max 9) Course content to be selected each semester from recent developments in computer science.
612 Software Analysis and Formal Methods (3) Techniques and tools for analyzing software performance, reliability, safety, security, and correctness. Formal methods; specification, verification, constructive correctness. Prerequisite: graduate standing.
615 Robot Motion Planning (3) Current research topics in robot motion planning, focusing on geometric algorithms for grasping, manipulation, manufacturing, and navigation. Prerequisite: CSCI 545.
620 Design and Analysis of Parallel Computation (3) Routing and algorithm design for parallel machines. PRAM model, fixed connection models, circuit depth, randomization. Parallel algorithms including independent set, matching, evaluation, linear system, sparse techniques. Prerequisite: CSCI 570.
655 Automata and Formal Language Theory (3) Phase structure languages, especially context-free and context-sensitive; grammars, acceptors, and characterization results; ambiguity; operations; transducers; solvability; applications. Prerequisite: CSCI 430.
656 AFL Theory (3) Elementary properties; AFA and multitape AFA; AFA representation of AFL properties and operations; principal AFL; applications to well-known families of formal languages. Prerequisite: CSCI 655.
658 Diagnosis and Design of Reliable Digital Systems (3) (Enroll in EE 658)
663 Computational and Cognitive Neuroscience (4) Models of brain function using approaches from psychology, neurophysiology, linguistics and computer science. Basic issues in vision, learning, memory, language and cognitive processes. Neural networks. Prerequisite: graduate standing.
664 Neural Models for Visually Guided Behavior (3, max 9, Sp) Review of neural mechanisms of visuo-motor coordination, and methods for constructing models of these mechanisms. Topics include locomotion, cognitive maps, looking, reaching and grasping. Prerequisite: CSCI 564.
665 Advanced Software Engineering Project (3) Team analysis, planning, development, and maintenance of a software product, using principles and practices from CS 577ab. Analysis of project lessons learned. Prerequisite: CSCI 577a; corequisite: CSCI 577b.
667ab Seminar in Advanced Topics in Machine Learning (2-2, max 8) Seminar covering the latest results published in the field of machine learning and the research currently ongoing at USC. Prerequisite: CSCI 567.
674 Advanced Topics in Computer Vision (3) Selected topics from current active research areas including image segmentation, shape analysis and object recognition, inference of 3-D shape, motion analysis, knowledge-based system, neural nets. Prerequisite: CSCI 574 or CSCI 569.
682 Advanced Programmable Automation (3) Intensive study of currently active research topics: geometric uncertainty; constraint-based geometric design; Minkowski operations; algebraic geometry for solid modeling; and automatic planning of manufacturing tasks. Prerequisite: CSCI 582 or departmental approval.
685 Relational Data Base Theory (3) Relational model; algebraic operators; dependencies and inference rules; dependency families; query languages and processing; tableaux; applications to design and query optimization; selected other topics. Prerequisite: CSCI 585 and MATH 470, or departmental approval.
690 Directed Research (1-4, max 8) Study of problems of an advanced nature by graduate students in computer science. Graded CR/NC. Prerequisite: departmental approval.
693ab Seminar in Theoretical Databases (1-3; 1-3) Study of recent literature on theoretical aspects of databases. Prerequisite: CSCI 585.
694ab Topics in Computer Networks and Distributed Systems (3-3) Current topics in network and distributed systems; verbal and written presentation skills, effective critiquing, and evaluation. Prerequisite: CSCI 551 and CSCI 555.
695ab Seminar in Advanced Database Systems (1-4; 1-4) Study of recent literature on techniques in database systems. Emphasis on developing skills in critical reading, technical writing, oral presentation, and database implementation techniques. Departmental approval is required. Prerequisite: CSCI 484 or CSCI 585.
790 Research (1-12) Research leading to the doctorate. Maximum units which may be applied to the degree to be determined by the department. Graded CR/NC.
794abcdz Doctoral Dissertation (2-2-2-2-0) Credit on acceptance of dissertation. Graded IP/CR/NC.
Produced by the USC Division of Student Affairs,
Office of University Publications
univpub@usc.edu