Approved Technical Electives

Petitioning to Approve a Course as a Technical Elective:

If you are interested in taking a course as a technical elective for your Bachelor’s degree and it is not in the below list of approved courses, then you must submit a typed letter or email explaining your reasons and attach a copy of the course syllabus with the letter. Please submit these documents to your Academic Advisor so that the CS department can review your petition for approval or denial. Make sure to include your full name, USC ID#, major, USC email, and your current GPA.  Petitions should be submitted prior to enrollment in the course.

Important Notes:

  • Courses used as part of your core major requirements cannot be used again later as a technical elective.
  • A graduate course can be used for technical elective credit with special permission. See your advisor for details.
  • CECS students may only take one approved Information Technology Program (ITP) (regardless of cross-listing) course for their 8 unit technical elective requirement.
  • CSBA students must take at least one upper division CSCI class (taught by the CS department) for their technical electives. Preferred options are CSCI 360, 430, 485. For the third technical elective option which may be from CS or Business, CSBA students may choose a course from the approved list below or the approved business courses on their STARS report.
  • CSCI students may only take one approved Information Technology Program (ITP) course for their 14 unit technical elective requirement.
  • The following Information Technology Program (ITP) courses are cross-listed to CSCI and therefore are exempt from the one course limit: ITP 368, 380, 435, 439, 485. (This applies only to CSCI majors.)

List of Approved Courses:

Computer Science

  • CSCI 310 (4 UNITS): Software Engineering Introduction to the software engineering process and software lifecycle. Covers project management, requirements, architecture, design, implementation, testing, and maintenance phase activities in team based projects. Prerequisites: CSCI 201L. Duplicates credit in CSCI 377. Required for CSCI & CSBA students as a core major course.
  • CSCI 353 (4 UNITS): Introduction to Internetworking Global Internet: design principles, layering, protocol design/analysis. Networked applications, Internet structure/architecture, Protocols for transport/congestion control, network layer/routing, link layer/MAC. Network security. Prerequisites: CSCI 201. Recommended preparation: Familiarity with C and C++. Duplicates credit in EE 450. Required for CECS & CSGM students as a core major course.
  • CSCI 360 (4 UNITS): Introduction to Artificial Intelligence Concepts and algorithms underlying the understanding and construction of intelligent systems. Agents, problem solving, search,representation, reasoning, planning, machine learning. Prerequisites: CSCI 104L and CSCI 170. Duplicates credit in CSCI 460. Required for CSCI & CSGM students as a core major course.
  • CSCI 401 (4 UNITS): Capstone: Design and Construction of Large Software Systems Group project with an outside stakeholder to develop real-world software solutions to large-scale problems.Topics include software engineering, professional preparation, and recent computer science research. Prerequisite: CSCI 270 and CSCI 310. (Duplicates credit in CSCI 477ab). Required capstone for CSCI and CSBA. May be used as capstone or technical elective for CECS.
  • CSCI 404 (4 UNITS): Capstone: Creating Your High-Tech Startup Capstone class in which students create their own technology startup, leveraging comprehensive CS knowledge and best industry practices. Prerequisite: CSCI 201, CSCI 270, and ITP 466.  Optional capstone for CSCI, CSBA, and CECS. May be used as a technical elective
  • CSCI 420 (4 UNITS): Computer Graphics Computer graphics, OpenGL, 2D and 3D transformations, Bezier splines, computer animation, rendering including ray tracing, shading and lighting, artistic rendering, virtual reality, visualization. Prerequisite: CSCI 104L and MATH 225. Duplicates credit in CSCI 480. Required for CSGM students as a core major course.
  • CSCI 423 (4 UNITS): Native Console Multiplayer Game Development Implementation of AAA style multiplayer game running on consoles and DX11. Console development in native C++, console SDKs, engine components, gameplay, networking, data prediction/replication. Prerequisite: CSCI 522 or ITP 380. Recommended Preparation: ITP 485. Required for CSGM students as a core major course.
  • CSCI 426 (4 UNITS): Game Protoyping Developing games or technology based on current and relevant special topics.
  • CSCI 430 (4 UNITS): Introduction to Computer and Network Security A broad overview of security threats and defenses, security systems and functionalities, as well as current security practices. Includes homeworks and in-class exercises to provide practical experience working with such systems. Prerequisite: CSCI 201.
  • CSCI 445 (4 UNITS): 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. Prerequisites: CSCI 103.
  • CSCI 467 (4 UNITS): Introduction to Machine Learning Methods for building intelligent and adaptive systems from statistical analyses; theoretical understanding of such methods and the computational implications. Prerequisites: CSCI 270 and MATH 225 and (EE 364 or MATH 407).
  • CSCI 476 (4 UNITS): Cryptography: Secure Communication and Computation Introduction to modern Cryptography; Mathematical/algorithmic studies of methods for protecting information in computer and communication systems: Public-Key Cryptosystems, zero-knowledge proofs, data privacy. Prerequisites: CSCI 270.
  • CSCI 485 (4 UNITS): 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: CSCI 201.
  • CSCI 490x (1-12 UNITS): Directed Research Individual research and readings. Only open to juniors and seniors. Not available for graduate credit.
  • CSCI 491ab (4, 2 UNITS): Final Game Project a: Design, iterative prototyping, and development of a 1st playable level. Open only to seniors. b: Design, iterative stage 2 prototyping and development of a refined game. Required for CSGM students as a core major course.
  • CSCI 499 (2-3-4 UNITS): Special Topics Selected topics in computer science. Irregularly offered.

Electrical Engineering

  • EE 354 (4 UNITS): Introduction to Digital Circuits Digital system design and implementation; synchronous design of datapath and control; schematic/Verilog-based design, simulation, and implementation in Field Programmable Gate Arrays; timing analysis; semester-end project. Prerequisite: EE 101 or EE 154L or EE 209. (Duplicates credit in EE 254 and in former EE 201L)
  • EE 450 (3 UNITS): 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. Duplicates credit in CSCI 353.
  • EE 451 (4 UNITS): Parallel and Distributed Computation Introduction to parallel programming techniques, models and optimization strategies; Application mapping to multi-core, accelerator, GPU and cloud platforms; High Performance Computing and Data Science applications. Prerequisite: EE 355 or CSCI 201. Recommended preparation: High-level programming. Required for CECS students as a core major course.
  • EE 454L (4 UNITS): Introduction to System-on-Chip Design flow, tools, and issues related to System/Network-on-Chip (S/Noc) design for real-time embedded systems with applications in mobile, cloud, aerospace, and medical electronics. Prerequisite: EE 354. Required for CECS students as a core major course.
  • EE 457 (4 UNITS): Computer Systems Organization Register Transfer level machine organization; performance; arithmetic; pipelined processors; exceptions, out-of-order and speculative execution, cache, virtual memory, multi-core multi-threaded processors, cache coherence. Prerequisites: EE 354L or graduate standing. Required for CECS students as a core major course.
  • EE 459L (3 UNITS) Embedded Systems Design Laboratory Specification, design, implementation, testing and documentation of a digital system project using embedded processors, programmable logic, analog I/O interfaces and application specific hardware. Capstone design experience. Prerequisites: EE 357. Recommended preparation: Knowledge of C programming. Open only to seniors. Prerequisite: EE 354. Capstone option for CECS students. Technical elective for CSCI or CSBA.
  • EE 477L (4 UNITS): MOS VLSI Circuit Design Analysis and design of digital MOS VLSI circuits including area, delay and power minimization. Laboratory assignments including design, layout, extraction, simulation and automatic synthesis. Prerequisite: EE 338 or EE 354. Required for CECS students as a core major course.
  • EE 490x (1-12 UNITS): Directed Research Individual research and readings. Only open to juniors and seniors. Not available for graduate credit.
  • EE 499 (2-3-4 UNITS): Special Topics Course content will be selected each semester from current developments in the field of electrical engineering.

Engineering Co-Op / Internship

  • ENGR395abc (1-2 UNITS, MAX 5): Cooperative Education Work Experience Supervised work experience in a professional environment related to specific degree program, academic level, and career objective. Acceptance into Cooperative Program is required. Graded IP or CR/NC. Degree credit by department approval.


  • MATH 458 (4 UNITS): Numerical Methods Rounding errors in digital computation; solution of linear algebraic systems; Newton’s method for nonlinear systems; matrix eigenvalues; polynomial approximation; numerical integration; numerical solution of ordinary differential equations. Prerequisite: linear algebra and calculus.

Information Technology Program (ITP)

  • Effective Fall 2017, ITP 300 and ITP 301 are NOT ELIGIBLE for technical elective credit. Students interested in a web development course should consider ITP 303.  (Prior to Fall 2017, only the Intermediate sections of ITP 300 and ITP 301 were eligible for technical elective credit.)
  • ITP 303 (4 UNITS): Full-Stack Web Development Modern web development techniques and technologies used to create web applications from ground up. Topics include front-end, back-end, and web servers. Prerequisite: CSCI 104 or ITP 365.
  • ITP 320 (4 UNITS): Enterprise Information Systems The role Information Systems play in an organization. Integration of Business Processes by using Enterprise Resource Planning Systems (ERP).
  • ITP 325 (3 UNITS): Ethical Hacking and Systems Defense Hacking from a defense perspective. Hacker ethics and laws. Penetration testing. Vulnerability Assessment. Securing workstations, servers, and networks. Prerequisite: ITP 125.
  • ITP 341 (3 UNITS): App Development for Phones and Tablets Develop phone and tablet applications for open-source platforms such as Android that utilize the core functionality of mobile devices such as GPS, accelerometers, touch gestures. Prerequisite: CSCI 104L or ITP 365x or ITP 367x.
  • ITP 342 (3 UNITS): Mobile Application Development Develop applications for mobile devices such as iPhones and iPads (iOS) and other smart phones (Android). Build a mobile application from start to finish. Prerequisites: CSCI 104 or ITP 365 or ITP 367.
  • ITP 344 (3 UNITS): Advanced Topics in Mobile App Development Advanced topics in mobile app development such as using REST services, security, cloud integration, NFC (near field communication), wireless networking for mobile apps, monetizing apps, and the latest frameworks to create advanced apps. Prerequisite: ITP 342.
  • ITP 350 (4 units): Technologies and Practices for Analytics Overview of the process of data analysis. Reporting, visualization and prediction. Practical applications of analytics through case studies. Prerequisite: ITP 250x and ITP 251x. CSCI 485 can also provide sufficient preparation.
  • ITP 368 [CSCI 368] (3 UNITS): Programming Graphical User Interfaces Programming applications with dynamic graphical user interfaces. Topics include events, controls, resources, data bindings, styles, and user experience. Prerequisites: CSCI 104 or ITP 365.
  • ITP 375 (3 UNITS): Digital Forensics Forensic science techniques. Digital evidence preservation and presentation. Processes and methodologies for digital analysis. Prerequisite: ITP 125.
  • ITP 380 [CSCI 380] (4 UNITS): Video Game Programming Underlying concepts and principles required for programming video games (topics include vectors, transformations, 3-D math, geometric primitives, matrices). Prerequisite: CSCI-104 or ITP-365.
  • ITP 382 (3 UNITS): Mobile Game Programming Concepts and techniques required to develop games for smartphones and tablets. Topics include sprites, collision detection, mobile input, artificial intelligence, and augmented reality games. Prerequisites: CSCI 104 or ITP 365x.
  • ITP 404 (3 UNITS): Modern Technologies of Web Development Provide students with the necessary skills to build web applications using modern techniques, frameworks, libraries, and tools that are used among developers within the industry. Prerequisites: ITP 301x or CSCI 351.
  • ITP 405 (3 UNITS): Professional Applications and Frameworks in Web Development Provide students with the necessary skills to build structured, maintainable, scalable, and testable web applications using frameworks, tools, and techniques common in the industry. Prerequisites: ITP 300 or CSCI 351.
  • ITP 425 (4 UNITS): Web Application Security Web application security techniques. eCommerce vulnerabilities. Online fraud. Solutions to spam and identity theft. Prerequisites: CSCI 351 or ITP 301 or ITP 325.
  • ITP 435 [CSCI 435] (3 UNITS): Professional C++ Applications of advanced concepts in C++ including lambda expressions, template metaprogramming, secure coding, parallel programming techniques, and the boost library. Prerequisite: CSCI 104 or ITP 365x.
  • ITP 439 [CSCI 439] (3 UNITS): Compiler Development Practical applications of techniques used to develop a programming language compiler. Prerequisite: ITP 435x.
  • ITP 442 (4 UNITS): Mobile App Project Capstone course for Mobile App Development minor. Work in project teams to develop new mobile app from start to finish. Meet with client, create app design, develop, test, and demonstrate app to client. Prerequisite: ITP 140.
  • ITP 445 (3 UNITS): Macintosh, OSX, and iOS Forensics Digital Forensics. Digital Evidence. Apple. Mac. Macintosh. OSX. iOS. iPhone. iPad. Prerequisite: ITP 375.
  • ITP 447 (3 UNITS): Mobile Device Security and Forensics Mobile device security. Mobile device forensics. Android. Blackberry. Windows Phone. Symbian. Prerequisite: ITP 375.
  • ITP 457 (4 UNITS): Network Security Network policy and mechanism, firewalls, malicious code; intrusion detection, prevention, response; cryptographic protocols for privacy; risks of misuse, cost of prevention, and societal issues. Prerequisite: ITP 357.
  • ITP 460 (4 UNITS): Web Application Project Skills to plan, analyze, build, and launch professional Web sites with actual clients. Includes project management, documentation, technology assessment, security, UI, Q/A, and various methodologies. Recommended preparation: One 300-level Web minor course.
  • ITP 466 (4 UNITS): Building the High Tech Startup Teach students the basic technologies and processes involved in the building web and mobile startups. Students will be introduced to the different aspects of building a web startup including Online Business models, Product management, Agile development processes, Technology platforms and Operations, customer development and online marketing.This course is also a required prerequisite for the CSCI 404 Capstone: Building Your High-Tech Startup.
  • ITP 475 (4 UNITS): Advanced Digital Forensics Advanced forensic techniques. Live image analysis. Network level forensic investigation. Server forensic techniques. Deposition and trial. Prerequisite: ITP 375.
  • ITP 484 (3 UNITS): Multiplayer Game Programming Techniques for developing networked multiplayer games. Topics include Internet protocols, network topology, data streams, object sharing, client prediction, latency, and back-end databases. Prerequisite: ITP 380.
  • ITP 485 [CSCI 487] (4 UNITS): Programming Game Engines Techniques for building the core components of a game engine; 2-D/3-D graphics, collision detection, artificial intelligence algorithms, shading, programming input devices. Prerequisite: ITP 380.
  • ITP 487 (3 UNITS): Data Warehouses Role of data warehouses in analytics. Modeling and building data warehouses. Extraction, transformation and loading data into cubes. Prerequisite: ITP 250x or ITP 320x.  CSCI 485 can also provide sufficient preparation.