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, MAX 8): 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). Capstone option for CSCI, CSBA & CECS. This course can be taken for credit twice; once for capstone credit and a second time for technical elective credit for CSCI, CSBA, & 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. Prerequisites: CSCI 201 and CSCI 270.  ITP 466 is no longer a required prerequisite. Capstone option 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.
  • CSCI 591 (1 UNIT, MAX 2): Computer Science Research Colloquium Exploration and critical assessment of research activities in computer science. Course will serve as a forum for current research presentations from academic and industry. Graded CR/NC.  This course can be taken twice, with each enrollment worth 1 unit of credit. Undergraduates may take this course for technical elective units on a petition basis.

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 109. (Duplicates credit in EE 254 and in former EE 201L)
  • EE 450 (4 UNITS): Introduction to Computer Networks Network architectures; layered protocols, network service interface; local, wide area, wireless networks; Internet protocols; link protocols; addressing; routing; flow control; software defined network; multimedia networks. 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 (for CSCI & CECS only)

  • 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 103 or ITP 265.
  • 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 (4 UNITS): Android App Development App development for the Android open-source platform utilizing core mobile device functionalities, third-party API integration, and backend services. Prerequisite: CSCI 103 or ITP 265.
  • ITP 342 (4 UNITS): iOS App Development Introduction to the Swift programming language, various frameworks, and design patterns needed to develop applications for iOS mobile devices such as iPhones and iPads. Prerequisite: CSCI 103 or ITP 265.
  • ITP 344 (4 UNITS): Advanced iOS App Development App development for iOS devices using advanced functionalities including background data processing, network services and push notifications. 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] (4 UNITS): Programming Graphical User Interfaces Programming applications with dynamic graphical user interfaces. Topics include events, controls, resources, data bindings, styles, and user experience. Prerequisite: CSCI 103 or ITP 265.
  • 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 Application of techniques used to develop games for mobile devices. Sprites, mobile input, mobile graphics and monetization. Prerequisite: CSCI-104 or ITP-365.
  • ITP 382 (4 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. Prerequisite: CSCI 103 or ITP 265.
  • ITP 404 (4 UNITS): Advanced Front-End Web Development The technologies, techniques, conventions and best practices used in contemporary front-end web development. Prerequisites: ITP 301 or ITP 303 or ACAD 275.
  • ITP 405 (4 UNITS): Advanced Back-End Web Development Topics include Model-View-Controller (MVC) pattern, RESTful APIs, Object Relational Mapping (ORM), testing, and Node.js, an asynchronous server-side alternative using JavaScript. Prerequisites: ITP 303 or ITP 304 or ACAD 276.
  • 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] (4 UNITS): Professional C++ Applications of advanced concepts in C++ including lambda expressions, templates, secure coding, parallel programming, writing performant code, CMake and continuous integration. Prerequisite: CSCI 104 or ITP 365x.
  • ITP 439 [CSCI 439] (4 UNITS): Compiler Development Practical applications of techniques used to develop a programming language compiler. Prerequisite: CSCI 104 or ITP 365x.
  • 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 341 or ITP 342.
  • 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. Prerequisites: ITP 303 or ITP 304 or ACAD 276.
  • 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.
  • 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): Enterprise Data Analytics Methodology to store, organize, cleanse, harmonize and stage enterprise data for analytics. Report, visualize, slice and dice, forecast and predict trends. Prerequisite: ITP 249 or ITP 320.  CSCI 485 can also provide sufficient preparation.