University of Southern California
 
  CS Courses
     Offered
  Related Links 
Related Courses
Course Registration Instructions (Spring 2008)
Spring 2008 Schedule
Online Course Registration

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Back to Top 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Back to Top

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Back to Top

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Back to Top

Home > Academics > CS Courses Offered

 

CS 101L Fundamentals of Computer Programming
Introduction to the design of solutions to computer solvable problems. Algorithm design, solution implementation using a high-level programming language, program correctness and verification.
 
CS 102L Data Structures
Linear lists, strings, arrays, and orthogonal lists; graphs, trees, binary trees, multilinked structures, sorting techniques; dynamic storage allocation; applications.
Prerequisite: CS 101L.
 
CS 105 Object-Oriented Programming
The principles of object-oriented programming are examined using Java. Topics include graphics, graphical user interfaces and multi-threaded programming.
Prerequisite: CSCI 101L.
 
CS 106x Introduction to Computer Engineering/Computer Science
(Enroll in EE 106Lx)
 
CS 180 Survey of Digital Games and Their Technologies

Historical, technical, and critical approach to the evolution of computer and video game architectures and game design, from its beginnings to the present day.
 

CS 201L

(Wilczynski)
(Francois)

Principles of Software Development
How to program complex systems; a look at software engineering and operating systems concepts; programming projects based on existing applications emphasizing concurrent programming and unit testing.
Prerequisite: CS 102L, CS 105
Languages: Java
 
CS 271 Discrete Methods in Computer Science
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: CS 102L
 
CS/ITP 280x Video Game Production
History of video games; overview of game genres; phases of video game development (concept, preproduction, production, post-production); roles of artists, programmers, designers, and producers.
 
CSCI 281 Pipelines for Games and Interactives
Explores the aesthetic development/technical implementation necessary to achieve unique, compelling, intuitive visual design in games. Students will develop group visual game design portfolios.
 
CS 303 Design and Analysis of Algorithms
Upper and lower bounds on sorting and order median. Deterministic and random computation, data structures, NP-completeness, cryptography, Turing machines and undecidability.
Prerequisite: CS 102L and CS 271
 
CS 351 Programming and Multimedia on World Wide Web
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: CS 201
 
CSCI/EE 352L Computer Organization and Architecture
Computer organization & architecture. Concepts include: computer evolution & performance, system busses, cache memory, internal and external memory, input/output, operating system support, computer arithmetic.
Prerequisite: CSCI 102
 
CS 377 Introduction to Software Engineering
Introduction of principles, methods, techniques and tools for multi-person construction of multi-version software systems.
Prerequisite: CS 102
 
CS 380x Video Game Programming
Underlying concepts and principles required for programming video games (topics include vectors, transformations, 3-D math, geometric primitives, matrices).
Prerequisite: CSCI 102 or ITP 165x
 
CS 390 Special Problems
Supervised, individual studies. No more than one registration permitted. Enrollment by petition only.
 
CS 402x Operating Systems
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.
CS 410x Translation of Programming Languages
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: CS 201
Corequisite: EE 357
 
CS 445 Introduction to Robotics
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: CS 101L or C language programming
 
CS/EE 450 Introduction to Computer Networks
Network architectures; layered protocols, network service interface; local networks; long-haul networks; internal protocols; link protocols; addressing; routing; flow control; higher level protocols. Prerequisite: junior standing.
 
CSCI/EE 452L Game Hardware Architectures
Architectural principles underlying modern game console hardware design; introduction to the programming techniques, optimization strategies, & hardware insights to create powerful games.
Prerequisite: CSCI/EE 352L
 
CS 455x Introduction to Programming Systems Design
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.
 
CS 459 Computer Systems & Applications Modeling
Fundamentals

Techniques and tools needed to construct/evaluate models of computer systems and applications. Analytical and simulation methods, capacity planning, performance/reliability evaluation, & decision-making.
Prerequisites: Math 225, CSCI 201
 
CS 460 Introduction to Artificial Intelligence
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: CS 102L or CS 455x.
 
CS 464

Foundations of Exotic Computation

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.

 
CS 477L Design and Construction of Large Software Systems
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: CS 201, CS 377
 
CS 480 Computer Graphics
Introduction to graphics display hardware and applications, interactive techniques, 2D scan conversion, 2D & 3D transformations, 3D viewing, visible surface algorithms, illumination models, smooth shading, ray tracing, shadows, transparency, texture mapping.
Prerequisite: CS 102L
 
CS 485 File and Database Management
File input/output techniques, basic methods for file organization, file managers, principles of databases, conceptual data models, and query languages.
Prerequisite: CS 201.
 
CSCI/ITP 486 Serious Games
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 CSCI487/ITP485.
 
CS 490x Directed Research
Individual research and readings. Not available for graduate credit.
Prerequisite: departmental approval.
 
CS 491aL Final Game Projects
Design, iterative prototyping, & development of a 1st playable level.
Prerequisite: CSCI 487/ITP 485 OR CTIN 484 or consent of instructor.
 
CS 491bL Final Game Projects
Design, iterative stage 2 prototyping and development of a refined game.
Prerequisite: CSCI 491aL or Instructor's approval
 
CS 499

Special Topics
Selected topics in computer science.
Intelligent agents and science fiction

 
CS 503 Parallel Programming
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
 
CS 510 Software Management and Economics
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.
 
CS 511 Personal Software Process (PSP) and Project
Personal Software Process (PSP) and Project: Individual analysis, planning, development, and maintenance of a software product or development artifact, using principles and practices the Personal Software Process. Analysis of project lessons learned.
Prerequisite: none. Recommended: Any software project course or development experience.
 
CS 520

Computer Animation
Fundamental techniques of computer animation and simulation, knowledge and/or experience in the design, scripting, production and post-production stages of computer animation.
Pre-requisite: CSCI 480 or Permission of instructor.

 
CS 522 Game Engine Development
The purpose of this course is to familiarize the student with the principles of developing game engines targeted at modern PC and game console hardware.
Prerequisite: CSCI 487/ITP 485; CSCI 480 or CSCI 580
 
CS 523 Networked Games
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.
 
CS 524 Networked Artificial Intelligence
Networked game communication architectures, protocol development, architecting networked game AI clients/services. Character following, knowledge representation & reasoning, dynamic play strategies, search, learning, & planning.
Prerequisite: CSCI 523 or consent of instructor.
 
CS 526 Advanced Mobile Devices and Game Consoles
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
 
CS 529a Advanced Game Projects
Team projects intended to address the multifaceted technical and creative challenges that are inherent to comprehensive game development.
Prerequisite: CSCI 487/ITP 485 OR CTIN 484 or consent of instructor.
 
CS 529b Advanced Game Projects
This course provides students in various areas of game specialization the practice of design, iterative stage 2 prototyping and development of a refined game.
Prerequisite: CSCI 529a
 
CS 530 Security Systems
Protecting data and computing resources. Systems/ network/data security; cryptography; authentication; authorization; intrusion prevention/detection/ response; Wireless technologies & security implications. 
Prerequisite: CSCI 402
 
CS 531 Applied Cryptography
This course will provide an intensive overview of the field of cryptography, providing a historical perspective on early systems, building to the number theoretic foundations of modern day cryptosystems. This course does not emphasize on mathematical proofs but emphasize on the applied side of cryptography. Students will also learn through implementing various parts of a cryptosystem in C/C++.  
Prerequisite: CS 102L or graduate standing
 
CS 534 Affective Computing
Overview of the theory of human emotion, techniques for recognizing and synthesizing emotional behavior, and design application.
Prerequisite: CSCI 561
 
CS 537 Immersive Environments
Design and implementation of immersive environments, from the origins of the supporting technologies in visual simulation, to interactive 3D graphics and interfaces, and interactive games.
Prerequisite: CSCI 580
 
CS 538 Human Performance Engineering
Tools and techniques for addressing issues related to of Human Performance Engineering (HPE) of computing systems.
Prerequisite: CSCI 537 or consent of instructor.
 
CS 541 Artificial Intelligence Planning
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: CS 561
 
CS 542 Neural Computation with Artificial Neural Networks
The course will introduce fundamental and advanced techniques of computation and adaptation in networks of distributed interconnected processing unit. Skills from this course will be beneficial for applied and basic research in artificial intelligence (e.g., robotics, machine learning, process control), computational neuroscience (e.g., motor control, functional brain modeling) and cognitive sciences (e.g., perception, memory, reasoning). 
Prerequisite: Basic knowledge in linear algebra, calculus, and programming in C (or another language), or permission by instructor.
Recommended preparation: basic statistics, linear algebra
 
CS 543 Software Multiagent Systems
Investigate computational systems in which several software agents or software agents and humans interact
 
CS 544 Natural Language Processing
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: CS 460 or CS 573 or departmental approval.
 
CS 545 Robotics
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-programming, basic algebra, calculus.
 
CS 546 Intelligent Embedded Systems
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. 
Prerequisite: Graduate standing required.
 
CS 547 Sensing and Planning in Robotics
Introduction to software methods in robotics including sensing, sensor fusion, estimation, fault tolerance, sensor planning, robot control architectures, planning and learning.
Prerequisite: Graduate standing required.
 
CS 548 (pdf) Information Integration on the Web
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
 
CS 549 Nanorobotics
Introduction to nanotechnology. Nanorobotic systems: sensing; actuation propulsion; control; communication; power; programming and coordination of robot swarms. Nanomanipulation and nanoassembly with atomic force microscopres.
Prerequisites: Graduate standing in science or engineering.
CS 551

Computer Communications
Protocol design for computer communication networks, network routing, transport protocols, internetworking.
Prerequisite: CS402, EE450 & C- language programming.
 
CS 555

Advanced Operating Systems
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: CS 402x
 
CS 556

Introduction to Cryptography
Modern secret codes. Public key cryptosystems of Rivest-Shamir-Adelman, Diffie-Hellman and others. The underlying number theory and computational complexity theory.
Prerequisite: CS 570 or CS 581
 
CS 558L

Internetworking and Distributed Systems Laboratory
Students complete laboratory exercises in operating system and network management, distributed systems, TCP/IP, SNMP, NFS, DNS, etc. Term project required.
Prerequisite: CS 402 and EE/CS 450; Recommended preparation: CS 551 and CS 555.
 
CS 561

Artificial Intelligence
Foundations of symbolic intelligent systems. Agents, search, problem solving, representation, reasoning and symbolic programming.
Prerequisite: For a: CS 455x.
Recommended preparation: good programming and algorithm analysis skills.
 
CS 562

Empirical Methods in Natural Language Processing
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: CS 561.
 
CS 564

Brain Theory and Artificial Intelligence

Introduces neural modeling, distributed artificial intelligence and robotics approaches to vision, motor control and memory.
Prerequisite: graduate standing.
Prerequisite: Graduate Standing.
 
CS 565

Compiler Design
Formal grammar; parsing methods and lexical analysis; code generation; local and global code optimization; and dynamic allocation.
Prerequisite: CS 455x
 
CS 566

Neural Network Self-Organization
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.
 
CS 567

Machine Learning
A broad exposure to the field that deals with the issue of designing machines, algorithms and tools which automatically improve with experience. Topics include optimization and information theory, explanation-based learning, analogy & discovery, and connectionist learning - both supervised and unsupervised. Should be of interest to anybody who does research in learning/inference with data (refer to web page for details).
Prerequisite: CSCI 573
 
CS 569

Integrated Intelligent Systems
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: CS 573
 

CS 570

(Golubchik)
(Kempe)

Analysis of Algorithms
This is a basic course in Algorithms, and should be of interest both to graduate Computer Science students and to students in other scientific disciplines and in the industry. Check the linked page for more information.
 
CS 571

Web Technologies
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.
Prerequisite: graduate standing and knowledge of at least two programming languages.
Recommended preparation: Knowledge of at least two programming languages.
 
CS 572

Information Retrieval and Web Search Engines

Search engines have become a critical application on the World Wide Web. This course examines closely the computer science techniques that make these systems so valuable. Included in the course is a study of Information Retrieval concepts and Database concepts as employed by web search engines.
Also covered are advanced techniques for ranking to produce high quality results.

 
CS 573

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

Computer Vision
Description and recognition of objects, shape analysis, edge and region segmentation, texture, knowledge based systems, image understanding.
Prerequisite: CS 455x
 
CS 576

(Havaldar)
(Kang)
Multimedia Systems Design
This course covers the state-of-the-art technology for networked multimedia systems. We will study all the current media (images, video, audio, graphics etc) related issues, algorithms and requirements for modern distributed multimedia systems both in terms of data processing and network communication. We will also discuss efficient design solutions and established standards for multimedia.
Recommended Preparation: familiarity with C or C++.
 
CS 577a

Software Engineering
Software life cycle processes; planning considerations for product definition, development, test, implementation, maintenance. Software requirements elicitation and architecture synthesis. Team project. Software development, test, implementation, and maintenance methods. CASE tools and software environments. Software product engineering, configuration management, quality engineering, documentation. Application via projects.
Prerequisite: graduate standing.
 
CS 577b

Software Engineering II
Software Engineering II focuses on software product creation, integration, test and maintenance with an emphasis on quality software production. Much of the content is organized around the key practices in the SEI Integrated Capability Maturity Model (CMMI).
Prerequisite: CS 577a.
 
CS 578

Software Architectures
Software architecture has become an area of intense research in the software engineering community. A number of architecture modeling notations and support tools, as well as new architectural styles, have emerged. The focus of architecture-based software development is shifted from lines-of-code to coarser-grained building blocks and their overall interconnection structure. Explicit focus on architecture has shown tremendous potential to improve the current state-of-the-art in software development and alleviate many of its problems.
 
CS 580

3D Graphics and Rendering
The process of creating images from 3D models. Includes transformations, shading, lighting, rasterization, texturing, and other topics.
 
CS 581

Logic and its Applications
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: CS 430 and MATH 470
 
CS 582

Geometric Modeling
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 CS 102 or equivalent knowledge of linear algebra and data structures.
 
CS 583

Computational Geometry
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: CS 303
 
CS 584

Control and Learning in Mobile Robots and Multi-Robot Systems
Survey of control and learning methods from technical papers. Control architectures, adaptation, learning, cooperation, distributed vs. centralized approaches, cooperative and competitive systems.
Prerequisite: CS 460 or CS 445 or CS 561 or CS547
 

CS 585

Fall 2007:
(McLeod)

Database Systems
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: CS485 or Departmental permission
 
CS 586

Database Systems Interoperability
Federated and multi-database systems, database networking, conceptual and schematic diversity, information sharing and exchange, knowledge discovery, performance issues.
Prerequisite: CS 585
 
CS 588

Specification and Design of User Interface Software
The design and implementation of user interface software. Study of issues relating to human/ computer interaction. Visual design and real-time interfaces.
 
CS 589

Software Engineering for Embedded System
Software Engineering methods and techniques for embedded, resource constrained, and mobile environments.Application to real-time operating systems and wireless networking systems. Class project.
Prerequisite: CSCI 577a.
CS 590

Directed Research
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. Please contact individual professor to register.
Center for Software Engineering DR Information: http://sunset.usc.edu/classes/
 
CS 591ab

Applied Software Engineering
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. (Duplicate credit in CSCI 577ab.)
Recommended preparation: experience in software development.
 
CS 592

Emerging Best Practices in Software Engineering
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.
 
CS 593

Autonomous Learning and Discovery Agents
Active systems, using their own actions, percepts, and mental constructions, abstract a model from an unfamiliar environment in order to accomplish their missions.
Prerequisite: CS 573
 
CS 594ab

Master's Thesis
Credit on acceptance of thesis. Graded IP/CR/NC
 
CS 595

Advanced Compiler Design

Compiler Analysis and Optimization for High-Performance Architectures
Prerequisite: CS 565
 
CS 596

Scientific Computing and Visualization
Particle and continuum simulations are used as a vehicle to learn basic elements of high performance scientific computing and visualization. Students will obtain hands-on experience in: i) Formulating a mathematical model to describe a physical phenomenon; ii) discretizing the model, which often consists of continuous differential or integral equations, into algebraic forms in order to allow numerical solutions on computers; iii) designing/analyzing numerical algorithms to solve algebraic equations efficiently on parallel computers; iv) translating the algorithms into a program; v) performing a computer experiment by executing a program; vi) visualizing simulation data in an immersive and interactive virtual environment; and vii) managing/mining large datasets.
Prerequisite: basic knowledge of programming, data structures, linear algebra, and differential equations.
 
CS 597

Seminar in Computer Science Research
Introduction of Ph.D. students to a broad range of computer science research.
Two semesters registration required. Open to Computer Science doctoral students only.
 
CS 599

Advanced Topics