Explore Student Resources
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.
- Courses used as part of your core major requirements cannot be used again later as a technical elective.
- All technical elective courses must be upper division (300-level and above). Lower division coursework will not be approved for technical elective credit.
- 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 technical elective requirement. Petitions for a second ITP course will not be approved.
- 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.)
- If courses outside of the CSCI department require pre-requisites or d-clearance, students are responsible for reaching out to the designated department to request any waivers or clearance.
List of Approved Courses:
- Aerospace and Mechanical Engineering (AME)
- Civil Engineering (CE)
- Computer Science
- Electrical Engineering
- Engineering Co-Op / Internship (for CSCI & CECS only)
- Information Technology Program (ITP)
Aerospace and Mechanical Engineering (AME)
- AME 404-Computational Solutions to Engineering Problems (3 UNITS) Mathematical aspects of the solutions to typical advanced mechanical engineering problems. Modeling, simulation, computational aspects, computer solutions, and computational tools. Recommended preparation: FORTRAN, MATLAB, and Maple
Civil Engineering (CE)
- CE 486A-Innovation in Engineering and Design for Global Crises (3 UNITS) Engineering innovation to design products, services and technologies with a human-centered approach to help solve the needs of people affected by global crises.
- 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 CSCI & CECS 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 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 or (EE 141L and (MATH 126 or MATH 127 or MATH 129)).
- 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.
- 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 445L (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 461 (4 UNITS): Artificial Intelligence for Sustainable Development Hands-on AI: data mining, machine learning, optimization and fairness in the context of applications with environmental and societal benefit. Prerequisites: CSCI 270 and CSCI 467. Recommended Preparation: Python programming skills. Courses that use Python (depending on instructor include: CSCI 353, CSCI 360, CSCI 445L, EE 250L, EE 364, ITP 115, and ITP 116).
- 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). Recommended Preparation: CSCI 360, comfortable with mathematical derivations, such as those in MATH 225; comfortable with manipulating vectors and matrices.
- CSCI 475 (4 UNITS): Theory of Computation History of the theory of computing, foundational theorems and theoretical frameworks of computer science, solvable and unsolvable problems. Prerequisite: CSCI 270.
- 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, MAX 8): 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.
- EE 354L (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 109L. (Duplicates credit in former EE 254)
- 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 355x or CSCI 201L. 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 354 or graduate standing. Required for CECS students as a core major course.
- EE 459Lx (4 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 354L. Recommended preparation: Proficient in programming in the “C” language; Knowledge of programming on the level of EE 155L or CSCI 103L. Open only to seniors. Prerequisite: EE 354L. Capstone option for CECS students. Not available for graduate credit. 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 354L. 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, MAX 8): 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)
- ENGR395abcx (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. Prerequisites: MATH 225 or MATH 245. Crosslisted as CSCI-458.
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 103L 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 (4 UNITS): Ethical Hacking Ethical Hacking. Penetration Testing. Vulnerability Assessment. Red Teams. Hacker environments, infrastructure, and frameworks. Lateral movement and data exfiltration techniques. Evasion and Anti-Forensics. 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 103L 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 103L or ITP 265. Crosslisted as ACAD 342.
- 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 348 (4 UNITS): Making Smart Devices: Introduction to Electronics/Wearables Design of electronic devices that interact with the physical world; electronic interfaces; development of software algorithms; micro-controller implementation.
- ITP 356 (4 UNITS): Blockchain: Decentralized Applications Blockchain technology; transactions without the need for a trusted third-party; and decentralized applications on public blockchains.
- 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 103L or ITP 265.
- ITP 375 (3 UNITS): Digital Forensics and Cybersecurity Investigations Forensic science techniques. Digital evidence preservation. Processes and methodologies for digital examinations. Cyber crime investigations. Windows file system analysis. Real case scenario analysis and reporting 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 (4 UNITS): Mobile Game Development Application of techniques used to develop games for mobile devices. Sprites, mobile input, mobile graphics and monetization. Prerequisite: CSCI 103L 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 425 (4 UNITS): Web Application Security Examine web applications from an offensive security standpoint. Topics include information gathering, vulnerability discovery and validation, exploitation and privilege escalation techniques. Prerequisite: ITP 301 or ITP 325 or ACAD 275.
- 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 104L or ITP 365.
- ITP 438 (4 UNITS): Advanced Gameplay Programming Advanced gameplay programming techniques for both single player and networked multiplayer games using an industry-standard game engine. Prerequisite: ITP 380.
- ITP 439 [CSCI 439] (4 UNITS): Compiler Development Practical applications of techniques used to develop a programming language compiler. Prerequisite: ITP 365 or CSCI 104L.
- 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 481 (2 UNITS): Game Programming Professional Development Application of mathematics, physics, geometry and programming algorithms in the context of video game programming practice. Prerequisite: ITP 380.
- 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 (4 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 or DSCI 351. CSCI 485 can also provide sufficient preparation.