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.

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.

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

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

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

This course will be dropped beginning fall 2007.

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

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

CSCI 180 Survey of Digital Games and Their Technologies (3, Fa) Historical, technical, and critical approach to the evolution of computer and video game architectures and game design, from its beginnings to the present day.

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

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

CSCI 280 Video Game Production (4, FaSpSm) (Enroll in ITP 280)

CSCI 281 Pipelines for Games and Interactives (3, Fa) Explores the aesthetic development/technical implementation necessary to achieve unique, compelling, intuitive visual design in games. Students will develop group visual game design portfolios.

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

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

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

CSCI 352L Computer Organization and Architecture (3, Sp) (Enroll in EE 352L)

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

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

CSCI 380 Video Game Programming (4, FaSpSm) (Enroll in ITP 380)

CSCI 390 Special Problems (1-4) Supervised, individual studies. No more than one registration permitted. Enrollment by petition only.

CSCI 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 or EE 352L.

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

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

CSCI 450 Introduction to Computer Networks (3) (Enroll in EE 450)

CSCI 452L Game Hardware Architectures (3, Fa) (Enroll in EE 452L)

CSCI 454L Introduction to Systems Design Using Microprocessors (4) (Enroll in EE 454L)

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

CSCI 457x Computer Systems Organization (3) (Enroll in EE 457x)

CSCI 458 Numerical Methods (4) (Enroll in MATH 458)

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

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

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

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

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

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

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

CSCI 486 Serious Games Development (3, Sp) Develop applications of interactive technology that extend beyond the traditional videogame market: education, health, training, policy exploration, analytics, visualization, simulation, the arts and therapy. Prerequisite: CTIN 488; corequisite: ITP 485.

CSCI 487 Programming Game Engines (4, FaSp) (Enroll in ITP 485)

CSCI 490x Directed Research (2-8, max 8) Individual research and readings. Not available for graduate credit. Prerequisite: departmental approval.

CSCI 491abL Final Game Project (4-2, FaSp) a: Design, iterative prototyping, and development of a first playable level. Prerequisite: CSCI 486. b: Design, iterative stage 2 prototyping and development of a refined game.

CSCI 495 Senior Project (3) (Enroll in PHYS 495)

CSCI 499 Special Topics (2-4, max 8) Selected topics in computer science.

CSCI 501 Numerical Analysis and Computation (3) (Enroll in MATH 501)

CSCI 502ab Numerical Analysis (3-3) (Enroll in MATH 502ab)

This new course is available beginning spring 2008.

CSCI 503 Parallel Programming (3, Sp) Exploration of parallel programming paradigms, parallel computing architectures, hands-on parallel programming assignments, contemporary and historical examples and their impact, context with parallel algorithms. Recommended preparation: CSCI 102 or CSCI 455; EE 452 or EE 457.

CSCI 504ab Numerical Solutions of Ordinary and Partial Differential Equations (3) (Enroll in MATH 504ab)

CSCI 505ab Applied Probability (3-3) (Enroll in MATH 505ab)

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

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

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

CSCI 522 Game Engine Development (4, Fa) The principles of developing game engines targeted at modern PC and game console hardware. Prerequisite: ITP 485; CSCI 480 or CSCI 580.

The prerequisite for these courses will be replaced by a recommended preparation of CSCI 480, CSCI 580 or an equivalent course in graphics in fall 2008.

CSCI 523 Networked Games (3, Fa) Design and implementation of networked games, from the origins of the supporting technologies in distributed systems, visual simulations, networked virtual environments, and shipped games. Prerequisite: CSCI 580.

CSCI 524 Networked Artificial Intelligence (3, Sp) Networked game communication architectures, protocol development, architecting networked game AI clients/services. Character following, knowledge representation and reasoning, dynamic play strategies, search, learning, and planning. Prerequisite: CSCI 523.

CSCI 526 Advanced Mobile Devices and Game Consoles (3, Sp) Explore the complex engineering process required to design and build a real-time graphics engine to support physical realism on mobile devices. Prerequisite: CSCI 523.

CSCI 529ab Advanced Game Projects (4-3, FaSp) a: Team projects intended to address the multifaceted technical and creative challenges that are inherent to comprehensive game development. Prerequisite: ITP 485 or CTIN 484. b: This course provides students in various areas of game specialization the practice of design, iterative stage 2 prototyping and development of a refined game.

CSCI 530 Security Systems (4, FaSp) 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.

CSCI 531 Applied Cryptography (3, Fa) Intensive overview of cryptography for practitioners, historical perspective on early systems, number theoretic foundations of modern day cryptosystems and basic cryptanalysis.

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

CSCI 534 Affective Computing (3, Sp) Overview of the theory of human emotion, techniques for recognizing and synthesizing emotional behavior, and design application. Prerequisite: CSCI 561.

CSCI 537 Immersive Environments (3, Sp) Design and implementation of immersive environments, from the origins of the supporting technologies in visual simulation, to interactive 3-D graphics and interfaces, and interactive games. Prerequisite: CSCI 580.

CSCI 538 Human Performance Engineering (3) Tools and techniques for addressing issues related to Human Performance Engineering (HPE) of computing systems. Prerequisite: CSCI 537.

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

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

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

CSCI 544 Natural Language Processing (3, Sp) Examination of the issues which enable computers to employ and understand natural language; knowledge representation, memory modeling, parsing, language analysis, story understanding, and generation. Recommended preparation: CSCI 562.

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

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

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

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

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

CSCI 551 Computer Communications (3, FaSp) Protocol design for computer communication networks, network routing, transport protocols, internetworking. Prerequisite: CSCI 402, EE 450 and C-language programming.

CSCI 552 Asynchronous VLSI Design (3) (Enroll in EE 552)

CSCI 553 Computational Solution of Optimization Problems (3) (Enroll in EE 553)

CSCI 554 Real Time Computer Systems (3) (Enroll in EE 554)

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

CSCI 556 Introduction to Cryptography (3, Sp) 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.

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

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

CSCI 559 Mathematical Pattern Recognition (3-3) (Enroll in EE 559)

CSCI 560L Advanced Microcomputer-Based Design (3) (Enroll in EE 560L)

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

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

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

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

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

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

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

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

CSCI 571 Web Technologies (3, FaSp) 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.

CSCI 572 Information Retrieval and Web Search Engines (3, Sp) Examines key aspects of information retrieval as they apply to search engines; web crawling, indexing, querying and quality of results are studied. Prerequisite: CSCI 351, CSCI 485.

CSCI 573 Advanced Artificial Intelligence (3, FaSp) 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.)

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

CSCI 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++.

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

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

CSCI 579ab Computational Molecular Biology (3-3, FaSp) (Enroll in MATH 578ab)

CSCI 580 3-D Graphics and Rendering (3) The process of creating images from 3-D models. Includes transformations, shading, lighting, rasterization, texturing, and other topics.

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

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

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

CSCI 584 Control and Learning in Mobile Robots and Multi-Robot Systems (3, Fa) 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.

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

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

CSCI 587ab Mathematical Models of Neurons and Neural Networks (3-3) (Enroll in MATH 587ab)

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

CSCI 589 Software Engineering for Embedded Systems (3) 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.

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

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

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

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

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

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

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

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

CSCI 598 Mathematical Foundations for Computer-Aided Design of VLSI Circuits (3, Sp) (Enroll in EE 581)

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

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

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

CSCI 658 Diagnosis and Design of Reliable Digital Systems (3) (Enroll in EE 658)

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

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

CSCI 675 Topics in Engineering Approaches to Music Cognition (3, max 6) (Enroll in ISE 575)

The prerequisite will change to CSCI 551 or CSCI 555 beginning fall 2008.

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

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

CSCI 794abcdz Doctoral Dissertation (2-2-2-2-0) Credit on acceptance of dissertation. Graded IP/CR/NC.