USC School of 

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

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)

201L Principles of Software Development (4, FaSp) 201L Principles of Software Development (4, FaSp) 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.

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, FaSp) 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, FaSp) 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, FaSp) 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, push down automata, code generation. Not available for graduate credit to computer science majors. Prerequisite: CSCI 201; corequisite: EE 357.

445 Introduction to Robotics (4, Fa) Designing, building and programming mobile robots; sensors, effectors, basic control theory, control architectures, some advanced topics, illustrations of state-of-the-art. Teamwork; final project tested in a robot contest. Junior standing or higher. Prerequisite: CSCI 101L or C language programming.

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, FaSp) 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, Sp) 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, FaSp) 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, Sp) 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, FaSp)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, Fa) 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.

511 Personal Software Process (PSP) and Project (3, Sp) Individual analysis, planning, development and maintenance of a software product or development artifact, using the principles and practices of PSP. Analysis of project’s lessons learned. Prerequisite: CSCI 577a.

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 561a.

542 Neural Computation with Artificial Neural Networks (3, Sp) Computation and adaptation in networks of interconnected distributed processing units; classical and statistical approaches to neural nets; state-of-the-art neural network research. Recommended preparation: basic statistics, linear algebra.

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, Sp) Fundamental skills for modeling and controlling of dynamic systems for robotic applications and graphics animations; control theory; kinematics; dynamics; sensor processing; real-time operating systems; robot labs. Prerequisite: C-programming, basic linear algebra, calculus.

547 Sensing and Planning in Robotics (3, Fa) Introduction to software methods in robotics including sensing, sensor fusion, estimation, fault tolerance, sensor planning, robot control architectures, planning and learning. Prerequisite: CSCI 561a.

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, FaSp) 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.

557 Computer Systems Architecture (3) (Enroll in EE 557)

558L Internetworking and Distributed Systems Laboratory (3) 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.

562 Empirical Methods in Natural Language Processing (3, 2 years, Fa) Acquiring computer-tractable linguistic knowledge has always been a bottleneck in building natural language systems. We will examine statistical techniques for extracting knowledge automatically from online text. Prerequisite: CSCI 561a.

563 Applications of Natural Language Processing (3, 2 years, Fa) Having learned the basic symbolic and statistical techniques of computational language processing, students in this course learn to apply them in two or more practical application areas. Prerequisite: CSCI 544.

564 Brain Theory and Artificial Intelligence (3, Fa) Introduces neural modeling, distributed artificial intelligence and robotics approaches to vision, motor control and memory. Prerequisite: graduate standing.

565 Compiler Design (4, Sp) 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, Sp) 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, FaSp) 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 with application to the Web. Languages for client-side and server-side processing. Examples taken from: HTML, Java, JavaScript, Perl, XML and others. Recommended preparation: 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, Fa)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 Systems Design (3, FaSp) State-of-the-art technology for networked multimedia systems such as: system design, I/O technologies, data management, data compression, networking and telecommunications. Design of real-world multimedia solution. Recommended preparation: familiarity with C or C++.

577ab Software Engineering (4-4, FaSp) 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.

578 Software Architectures (3, Sp) Study of concepts, principles and scope of software system architectures, including architectural styles, languages, connectors, middleware, dynamism, analysis, testing and domain-specific approaches. Prerequisite: 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, Sp) 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 Control and Learning in Multi-Robot/Agent Systems (3, Sp) Survey of control and learning methods from technical papers. Distributed multi-robot/agent systems. Mobile robotics, distributed AI, control architectures, adaptation, learning, cooperative and competitive systems. Prerequisite: CSCI 460 or CSCI 445 or CSCI 561a.

585 Database Systems (3, FaSp) 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, Fa) 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)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) Code generation, data-flow analysis, global optimization, register allocation, data dependency analysis, unimodular transformations, vectorization, parallelization, data and computation decomposition. Prerequisite: CSCI 565.

597 Seminar in Computer Science Research (1, max 2, FaSp) Introduction of Ph.D. students to a broad range of computer science research. Two semesters registration required. Open to Computer Science doctoral students only.

598 Knowledge Based Systems (3) 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.

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) 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.

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.

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.