USC
University of Southern California
black horizontal bar for print styles

Courses of Instruction

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 Object-Oriented Programming (2, Sp) The principles of object-oriented programming are examined using Java. Topics include graphics, graphical user interfaces and multi-threaded programming. Prerequisite: CSCI 101L.

106Lx Introduction to Computer Engineering/Computer Science (3, Fa) (Enroll in EE 106Lx)

107 Computers and Society (3, Sp) What computers are and how they function. Impact of computer technology on society. Economic, political and social issues raised by computers.

110 Introduction to Digital Logic (3) (Enroll in EE 101)

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 (3, FaSp) Models for discrete structures; finite state automata, regular sets. Selected applications of logic and combinatorics to program correctness, algorithms and complexity, programming language semantics and databases. Prerequisite: CSCI 102.

303 Design and Analysis of Algorithms (3, FaSp) Upper and lower bounds on sorting and order median. Deterministic and random computation, data structures, NP-completeness, cryptography, Turing machines and undecidability. Prerequisite: CSCI 102 and CSCI 271.

320 Digital Media Basics for Multimedia (3, FaSp) (Enroll in EE 320)

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 102L.

357 Basic Organization of Computer Systems (3) (Enroll in EE 357)

377 Introduction to Software Engineering (3, Fa) Introduction of principles, methods, techniques and tools for multi-person construction of multi-version software systems. Prerequisite: CSCI 102.

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; EE 357.

410x Translation of Programming Languages (3, 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)

459 Computer Systems and Applications Modeling Fundamentals (3, Sp) Techniques and tools needed to construct/evaluate models of computer systems and applications. Analytical and simulation methods, capacity planning, performance/reliability evaluation, and decision-making. Prerequisite: MATH 225, CSCI 201.

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.

464 Foundations of Exotic Computation (3, Sp) Introduction to new approaches to computation: quantum -- inspired by quantum mechanics; neural -- inspired by the study of the brain; and molecular -- inspired by the genome. Prerequisite: MATH 225 or MATH 245 or EE 241.

465 Probabilistic Methods in Computer Systems Modeling (3) (Enroll in EE 465)

477 Design and Construction of Large Software Systems (3, Sp) Programming methodologies; intra-group and inter-group communication; software lifecycle; software economics. A large software project is a central aspect of the course. Prerequisite: CSCI 201, CSCI 377.

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.

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

520 Computer Animation and Simulation (3, Sp) Fundamental techniques of computer animation and simulation, knowledge and/or experience in the design, scripting, production and post-production stages of computer animation. Prerequisite: CSCI 480.

530 Security Systems (4, Sp) Protecting computer networks and systems using cryptography, authentication, authorization, intrusion detection and response. Includes lab to provide practical experience working with such systems. Prerequisite: CSCI 402x.

533 Combinatorial Analysis and Algebra (3) (Enroll in MATH 533)

541 Artificial Intelligence Planning (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.

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.

543 Software Multiagent Systems (3, Sp) Investigate computational systems in which several software agents or software agents and humans interact. Prerequisite: CSCI 561 or CSCI 573.

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.

546 Intelligent Embedded Systems (3, Sp) Survey of techniques for the design of large-scale, distributed, networked, embedded systems. Examples include sensor/actuator networks, wearable computing, distributed robotics and smart spaces. Graduate standing in CSCI or EE.

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. Graduate standing in CSCI or EE.

548 Information Integration on the Web (3, Sp) Foundations and techniques in information integration as it applies to the Web, including view integration, wrapper learning, record linkage, and streaming dataflow execution. Prerequisite: CSCI 561, CSCI 585; recommended preparation: CSCI 571, CSCI 573.

549 Nanorobotics (3, Sp) Introduction to nanotechnology. Nanorobotic systems: sensing; actuation and propulsion; control; communication; power; programming and coordination of robot swarms. Nanomanipulation and nanoassembly with atomic force microscopes. Graduate standing in science or engineering.

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

561 Foundations of Artificial Intelligence (3, Sp) Foundations of symbolic intelligent systems, search, logic, knowledge representation, planning, learning. Recommended preparation: good programming and algorithm analysis skills.

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

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

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

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 Web Technologies (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.

573 Advanced Artificial Intelligence (3, Fa) Advanced topics in AI, covering reasoning under uncertainty, decision theory, knowledge-based and inductive learning. Recommended preparation: a previous undergraduate or graduate level course in AI. (Duplicates credit in former CSCI 561b.)

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.

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.

580 3-D 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 Mobile Robots and Multi-Robot Systems (3, Sp) Survey of robot control and learning methods from technical papers. Control architectures, adaptation, learning, cooperation, distributed vs. centralized approaches, cooperative and competitive systems. Prerequisite: CSCI 445 or CSCI 460 or CSCI 547 or CSCI 561.

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.

589 Software Engineering for Embedded Systems (3, FaSp) Software engineering methods and techniques for embedded, resource constrained, and mobile environments. Applications to real-time operating systems and wireless networking systems. Class project. 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.

591ab Applied Software Engineering (3-3, Sp) a: Engineering software systems: negotiating goals; defining life cycle and process; project planning; defining requirements, architecture and design; incorporating COTS; analyzing project artifacts. b: Engineering software systems: design, implement, test and maintain software product; management of quality, configuration and transition. Open to Software Engineering Certificate Program students only. (Duplicates credit in CSCI 577ab .) Recommended preparation: experience in software development.

592 Emerging Best Practices in Software Engineering (3, SpSm) Perspective and experiences with emerging best practices, including integrated maturity models, distributed and mobile software, RAD, agile methods, COTS, assessment and integration, portfolio and product line management. Open to Software Engineering Certificate Program students only. Recommended preparation: CSCI 510.

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

594abz Master's Thesis (2-2-0, FaSpSm) Credit on acceptance of thesis. Graded IP/CR/NC.

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.

596 Scientific Computing and Visualization (3, Fa) Hands-on training on the basics of parallel computing and scientific visualization in the context of computer simulations in science and engineering. Prerequisite: CSCI 101L or CSCI 455x; CSCI 102L; MATH 458.

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.

599 Special Topics (2-4, max 9) Course content to be selected each semester from recent developments in computer science.

652 Wireless Sensor Networks (3) (Enroll in EE 652)

653 High Performance Computing and Simulations (3, Sp) Advanced high-performance computer simulation techniques; multiscale deterministic and stochastic simulation algorithms on parallel and distributed computing platforms; immersive and interactive visualization of simulation data. Prerequisite: CSCI 596 or CSCI 580.

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.