Computer Science (CSCI)
The terms indicated are expected but are not guaranteed. For the courses offered during any given term, consult the Schedule of Classes.
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.
105 Introduction to Computer Science (3, Sp) Gateway to the bachelor of science in computer science and computer engineering and computer science. An introduction to the discipline of computer science. The study of the history, ethics, legal issues, and sub-disciplines of computer science using the Java language.
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 grammar, 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)
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, Fa) 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 201; corequisite: EE 357.
430 Finite Automata Theory (3) Regular sets; finite state acceptors; right-linear grammar; 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 457x)
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)
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 (3) (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 561b.
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 561b 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.
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-3, FaSp) a: Foundations of symbolic intelligent systems. Agents, search, problem solving, representation, reasoning and symbolic programming. Prerequisite: CSCI 455x. b: Advanced capabilities for symbolic intelligent systems. Planning, reasoning under uncertainty, decision making, learning, natural language communication. Prerequisite: CSCI 561a.
564 Brain Theory and Artificial Intelligence (3) Introduces neural modeling, distributed artificial intelligence and robotics approaches to vision, motor control and memory. Prerequisite: graduate standing.
565 Compiler Design (4) Formal grammar; parsing methods and lexical analysis; code generation; local and global code optimization; and dynamic allocation. Prerequisite: CSCI 455x.
566 Neural Network Self-Organization (3) 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 561b.
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 561b.
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 561b.
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.
574 Computer Vision (3) Description and recognition of objects, shape analysis, edge and region segmentation, texture, knowledge based systems, image understanding. Prerequisite: CSCI 455x.
575 Neuroinformatics (3, Sp) Introduces databases, WWW, data mining, visualization and simulation for complex neuroscience data. Team projects will unite graduate students in computer science, neuroscience and related disciplines. Graduate standing. Prerequisite: CSCI 564 or BISC 421.
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 3D Graphics and Rendering (3, Fa) The process of creating images from 3D models. Includes transformations, shading, lighting, rasterization, texturing, and other topics. 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.
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.
593 Autonomous Learning and Discovery Agents (3, Sp) Active systems, using their own actions, percepts, and mental constructions, abstract a model from an unfamiliar environment in order to accomplish their missions. Prerequisite: CSCI 561b.
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 Knowledge Based Systems (3, Fa) Comparative studies of classical expert systems, real-time systems, intelligent agents; techniques of rule, model, constraint-based and probabilistic reasonings; tools for knowledge acquisition. Prerequisite: CSCI 561b 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.
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.
658 Diagnosis and Design of Reliable Digital Systems (3) (Enroll in EE 658)
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.
667 Seminar in Advanced Topics in Machine Learning (2) Seminar covering the latest results published in the field of machine learning and the research currently ongoing at USC. Prerequisite: CSCI 567.
674ab Advanced Topics in Computer Vision (3-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.
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.
695 Seminar in Advanced Database Systems (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