Approved Non-CS 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 double count 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 Technology and Applied Computing Program (TAC) (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 Technology and Applied Computing Program (TAC) course for their technical elective requirement. Petitions for a second TAC course will not be approved.
  • The following Technology and Applied Computing Program (TAC) courses are cross-listed to CSCI and therefore are exempt from the one course limit: TAC 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)

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

    Electrical Engineering

    • 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

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

    Technology and Applied Computing Program (TAC)

    • Effective Fall 2017, TAC 300 and TAC 301 are NOT ELIGIBLE for technical elective credit. Students interested in a web development course should consider TAC 303.  (Prior to Fall 2017, only the Intermediate sections of TAC 300 and TAC 301 were eligible for technical elective credit.)
    • TAC 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 TAC 265.
    • TAC 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).
    • TAC 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: TAC 125.
    • TAC 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 TAC 265.
    • TAC 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 TAC 265. Crosslisted as ACAD 342.
    • TAC 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: TAC 342.
    • TAC 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.
    • TAC 356 (4 UNITS): Blockchain: Decentralized Applications Blockchain technology; transactions without the need for a trusted third-party; and decentralized applications on public blockchains.
    • TAC 368 [CSCI 368] (4 UNITS): Cross-Platform App Development Programming applications with dynamic graphical user interfaces. Topics include events, controls, resources, data bindings, styles and user experience. Prerequisite: CSCI 103 or TAC 265.
    • TAC 375 (4 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: TAC 125.
    • TAC 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 TAC 365.
    • TAC 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 TAC 265.
    • TAC 404 (4 UNITS): Advanced Front-End Web Development The technologies, techniques, conventions and best practices used in contemporary front-end web development. Prerequisites: TAC 301 or TAC 303 or ACAD 275.
    • TAC 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: TAC 303 or TAC 304 or ACAD 276.
    • TAC 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: TAC 301 or TAC 325 or ACAD 275.
    • TAC 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 TAC 365.
    • TAC 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: TAC 380.
    • TAC 439 [CSCI 439] (4 UNITS): Compiler Development Practical applications of techniques used to develop a programming language compiler. Prerequisite: TAC 365 or CSCI 104L.
    • TAC 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: TAC 341 or TAC 342.
    • TAC 445 (3 UNITS): Macintosh, OSX, and iOS Forensics Digital Forensics. Digital Evidence. Apple. Mac. Macintosh. OSX. iOS. iPhone. iPad. Prerequisite: TAC 375.
    • TAC 447 (3 UNITS): Mobile Device Security and Forensics Mobile device security. Mobile device forensics. Android. Blackberry. Windows Phone. Symbian. Prerequisite: TAC 375.
    • TAC 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: TAC 357.
    • TAC 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: TAC 303 or TAC 304 or ACAD 276.
    • TAC 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.
    • TAC 475 (4 UNITS): Advanced Digital Forensics Advanced forensic techniques. Live image analysis. Network level forensic investigation. Server forensic techniques. Deposition and trial. Prerequisite: TAC 375.
    • TAC 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: TAC 380.
    • TAC 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: TAC 380.
    • TAC 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: TAC 249 or TAC 320 or DSCI 351.  CSCI 485 can also provide sufficient preparation.
    Published on June 14th, 2016Last updated on April 2nd, 2025