Our courses offer students across the university — no matter their technological backgrounds — the opportunity to learn how to use advanced software, apply data analysis, write computer programs, and learn how technology interacts with individuals, business, and society.

Browse our course offerings and decide if you are going to develop an app for iOS and Android, write and pitch a video game concept, learn Adobe Photoshop and Final Cut Pro X, or publish an interactive website next semester.

Leverage data to make a social impact. Prepare to launch a high-tech startup. Use a 3D printer to prototype a product. Program the app you always thought someone should make.



Legend

Use the color-coded acronyms under each course name as a guide to determine which courses meet requirements for your minor program.

  • 3D Computer Graphics and Modeling (3DCG)
  • Applied Analytics (APAN)
  • Applied Computer Security (APCS)
  • Computer and Digital Forensics (CDF)
  • Connected Devices and Making (CNDM)
  • Computer Programming (COMP)
  • Innovation: The Digital Entrepreneur (DE)
  • Enterprise Information Systems (EIS)
  • Mobile App Development (MOAP)
  • Video Game Design and Management (VGDM)
  • Video Game Programming (VGM)
  • Web Technologies and Applications (WEBT)

ITP-101 “Introduction to Business Information Technologies”

units: 2

    This class surveys computer hardware, operating systems, networks, programming, and software in business and industry. The ever-increasing use of technology in workplace and society means there are increasing issues (old and new) for us to face, and we will cover these in our lectures. Students completing this class will understand the uses of information technology in business and will be comfortable using modern software to accomplish business goals, including the use of social media for marketing and public relations. Finally, we will discuss security issues and new and forthcoming technologies and their potential uses.

    ITP-104L “Web Publishing”

    units: 2

    • WEBT

    Start from the ground up in web development by learning HTML and CSS to design and publish webpages. Students will practice using web development tools, styling their webpages with custom layouts and fonts, and implementing basic forms and JavaScript for functionality and interactivity. This course will prepare students to approach more advanced topics in web development, programming, and scripting.

    ITP-109 “Introduction to Java Programming”

    units: 2

    • CNDM
    • COMP
    • MOAP

    Learn the fundamentals of the Java programming language, used for programming Android apps, server-side applications in finance and healthcare, and internet of things devices. This class is a great introduction to understanding how to write programs that accept user input, process conditions and logic, and store data. Upon completion of this class, students will have an understanding of object-oriented programming principles and applications.

    ITP-115 “Programming in Python”

    units: 2

    • CNDM
    • COMP
    • MOAP

    Start writing programs in the Python language, an easy-to-read programming language used for web applications, data analysis, and scientific research. You will be able to think like a programmer to solve problems, control flow, and implement graphical user interfaces in Python. By the end of this class, you will be on your way to doing more advanced work in object-oriented programming.

    ITP-125L “From Hackers to CEOs: Introduction to Information Security”

    units: 2

    • APCS
    • CDF

    This course is designed to be an introductory course in information and computer security. This course starts with an analysis of threats to information integrity. Students will then receive an introduction to security mechanisms and policies. Students will learn how security infrastructure will integrate with the rest of the business and IT infrastructure through the use of hands-on projects.

    ITP-165 “Introduction to C++ Programming”

    units: 2

    • CNDM
    • COMP
    • MOAP
    • VGM

    C++ is used for programming desktop applications, video games, database software, and applications in medicine and engineering. Learn the fundamentals of C++ syntax and semantics, including variables, control statements, functions, memory management, and object-oriented programming.

    ITP-168 “Introduction to MATLAB”

    units: 2

      Start using MATLAB, a high-performance numeric computation and visualization environment. You will gain proficiency in using MATLAB’s features, including problem-solving methodology, functions and data structures, solution of linear algebraic equations, statistics and probability, 2D and 3D visualization of scientific data, and more.

      ITP-190 “Tools for Digital Graphics”

      units: 2

        This course introduces industry-standard graphic design tools for images and photos, including Adobe Photoshop, Adobe InDesign, and Adobe Illustrator. You will work with customary tools and advanced features, navigate in the workspace by using standard and custom set-ups, use artboards, work with layers and masks, draw and create vector graphics, work with type, create documents, understand color, and prepare images for professional print and webpage output.

        ITP-211 “Power-Tools for Visual Communication”

        units: 2

          In a world where videos move millions and a picture is more powerful — and popular — than the written word, a key survival skill in college and into future careers is how well you communicate with images.

          In this course, you will learn how to use software in three key areas — still images, motion graphics and video editing — of visual communication to communicate your ideas with impact. Not all of us can be artists, but all of us can improve the power of our visual communication.

          ITP-215L “3-D Modeling, Animation, and Special Effects”

          units: 2

          • 3DCG

          Fundamentals of 3D modeling, animation, surfacing, and special effects. Understand the processes involved in the creation of 3D animation and the interaction of vision, budget, and time constraints. Develop and understanding of diverse methods for achieving similar results and the decision-making processes involved at various stages of development. You will learn to use Autodesk Maya to create 3D projects.

          ITP-230x “Video Game Quality Assurance”

          units: 4

          • VGDM

          Survey game software development through quality assurance and in-depth analysis of the development cycle with a focus on bug testing systems and methodologies. Use of online bug tracking software (Bugzilla) and offline bug-tracking spreadsheets (Excel) with best communication practices to report software problems so they can be fixed by the development team. Includes tips for working in QA and moving up in the game industry.

          ITP-250 “Database Systems for Analytics”

          units: 2

          • APAN
          • CNDM

          Learn to build and query Structured Query Language (SQL) and NoSQL databases to model data and extract business intelligence. You will learn how to normalize a relational database to the 3rd Normal Form, understand big data analytics, and design entity-relationship models. By the end of this class, you will be able to use Microsoft Access, MySQL, and MongoDB.

          ITP-256 “Blockchain”

          units: 4

            Blockchain is the distributed and decentralized database technology behind cryptocurrencies like Bitcoin. It is public, transparent, secure, immutable, and distributed — and can be used to record and transfer any digital asset (not just currency). Learn how this technology works and its potential disruptive impacts on financial services, governments, banking, contracting, and identity management.

            ITP-280 “Video Game Production”

            units: 4

            • VGDM

            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. Learn a variety of software tools used in game development. The course final project will be a working game/prototype.

            ITP-300 “Database Web Development”

            units: 3   |   prerequisite(s): ITP-301

            • WEBT

            Learn how to build dynamic, database-driven websites and gain skills in back-end web development. Students will learn the basics of relational database management systems (RDBMS), how to design and implement MySQL databases using MySQL Workbench and other MySQL database platforms, and use PHP to integrate database calls into dynamic webpages.

            ITP-301L “Interactive Web Development”

            units: 4   |   prerequisite(s): ITP-104

            • WEBT

            Learn how to create interactive webpages and gain skills in front-end web development using dynamic HTML and JavaScript. Students will learn how to develop an online shopping cart, validate forms, use AJAX to update page content, animate page elements, and use frameworks like React or Vue.js.

            ITP-302 “Advanced Web Publishing”

            units: 2   |   prerequisite(s): ITP-104

            • WEBT

            This course will teach students advanced web publishing skills as well introduce broader publishing topics relevant to publishers, developers, designers, and webmasters. Students will learn advanced HTML and CSS techniques and use tools and frameworks like Sass, flexbox, Bootstrap, and WordPress.

            ITP-303 “Full-Stack Web Development”

            units: 4   |   prerequisite(s): ITP-365 or CSCI-104

            • COMP
            • WEBT

            Students will first learn front-end technologies, including HTML, CSS, JavaScript, jQuery library, and other JavaScript-based plugins. They will learn how to access and manipulate objects displayed by browsers, as well as client browser properties. Then, the course will teach basics of database design and implementation using relational database management systems (RDBMS). Students will learn how to submit SQL queries to databases and how to create data interfaces using PHP scripting language. The course will also introduce Model-View-Controller (MVC) design pattern and software frameworks adhering to MVC. Students will be working with web servers, database tools, and other technologies currently used in the web industry.

            ITP-305 “Advanced 3D Modeling, Animation, and Special Effects”

            units: 3   |   prerequisite(s): ITP-215 or ARCH-207

            • 3DCG

            In this course, students build upon fundamental techniques to create professional quality imagery and motion. Students learn advanced animation construction, incorporation of and integration with external media, and techniques to automate and optimize development processes. Advanced modeling techniques such as NURBS modeling, advanced surfacing techniques such as specularity and sequenced mapping, and advanced animation and special effects including controllers, effectors, dynamics, and multiple emitters. In addition, students will be introduced to productivity and optimization techniques such as scripting and expressions. Students will also be introduced to a variety of compositing methods.

            ITP-308 “Computer-Aided Design for Bio-Mechanical Systems”

            units: 3

            • 3DCG

            Learn how to use SolidWorks, one of the widely-used Computer-Aided Design (CAD) tools used in the industry. You will be introduced to sketching, part assembly, drawings, motion tools, and a finite element analysis tool in order to create and analyze 2D and 3D designs. By the end of this course, students will be prepared for the Certified SolidWorks Associate (CSWA) certification.

            ITP-310 “Design for User Experience”

            units: 3

            • DE
            • MOAP
            • WEBT

            This course provides a comprehensive overview of the user experience design process. Students learn the fundamental methods, concepts and techniques necessary to design useful, functional, and delightful mobile and web products. The course focuses on both core theories and concepts as well as hands-on experience producing wireframes, designs, prototypes, and user flows. Students will learn how use Sketch, Adobe Photoshop, and InVision.

            ITP-320 “Enterprise Information Systems”

            units: 4

            • DE
            • EIS

            This course is designed to provide the student with a thorough understanding of both the role that Enterprise Resource Planning Systems (ERPs) play in an organization and the challenging task of managing the Information Systems (IS) function. During the semester, homework will be assigned that gives the student the opportunity to work through many real-life business situations using the SAP ECC system and explore the interaction among the different business processes. SAP is the world’s leading provider of Enterprise software designed to integrate every aspect of a company’s operation. The hands-on exercises, coupled with the in-class discussions of ERPs, will prepare the student with the knowledge sought by businesses looking to use technology to maintain their competitive edge in the market place.

            ITP-322 “Using GIS Technology for Social Impact”

            units: 2

              This course introduces students to technology for social enterprises (enterprises that tackle emergent and existing social concerns and issues). As the traditional lines blur between nonprofit enterprises, government, and business, it is critical that students understand the technology available for taking on opportunities and challenges in this new landscape. Through industry guest speakers, case studies and TED discussions, lecture, and student presentations, this course will explore the technologies available in the emerging field of Social Impact based on technology. Students will develop a concept and technology plan for a social product or enterprise with a focus on how ArcGIS — a geographic information system used to build and deploy applications with spatial capabilities — can be utilized.

              ITP-325 “Ethical Hacking and Systems Defense”

              units: 3   |   prerequisite(s): ITP-125

              • APCS
              • CDF

              This course is designed to introduce students to the fundamentals of ethical hacking and becoming an ethical hacker. The course focuses on the code of conduct and ethics of attacking systems. The course also teaches the mindset of the criminal hacker and evolution of the hacker. Students also gain fundamental understanding and education on the elements of compromising computer systems for the explicit purposes of securing them from criminals. The course makes a very clear distinction between criminal hacking and ethical hacking, and only teaches the latter. The course then focuses on some fundamentals of system defense, including configurations and software to prevent unauthorized system access.

              ITP-341 “App Development for Phones and Tablets [Android]”

              units: 3   |   prerequisite(s): ITP-365 or CSCI-104

              • CNDM
              • COMP
              • MOAP

              This course teaches you how to develop mobile Android applications. We will go through the process of building a mobile application from start to finish. You will learn how to use Java programming to design mobile interfaces, how to use the libraries to build applications that have the proper look and feel, and how to connect with REST (Representational State Transfer) APIs such as Instagram and Twitter.

              ITP-342 “Mobile Application Development [iOS]”

              units: 3   |   prerequisite(s): ITP-365 or CSCI-104

              • COMP
              • MOAP

              This course teaches how to develop applications for iOS mobile devices using the iOS SDK (Software Development Kit) and Apple’s Xcode IDE (Integrated Development Environment). Students learn the fundamentals of the Swift programming language and the various frameworks needed to build native mobile apps for iPhone and iPads. Students build various apps from start to finish that follow Apple’s Human Interface Guidelines, handle user input, and properly use important software design patterns.

              ITP-344 “Advanced Topics in Mobile App Development [iOS]”

              units: 3   |   prerequisite(s): ITP-342

              • MOAP

              This course teaches how to develop advanced applications for iOS mobile devices using the iOS SDK (Software Development Kit) and Apple’s Xcode IDE (Integrated Development Environment). Students use the Swift programming language and various frameworks needed to build native mobile apps for iPhone and iPads. Students build apps from start to finish that have advanced functionalities such as data from the network, background processing, and push notifications.

              ITP-350 “Technologies and Practices for Analytics”

              units: 4   |   prerequisite(s): ITP-250 and ITP-251

              • APAN
              • CNDM

              Skills in big data analytics are highly sought-after in business, engineering, services, science, and healthcare industries. You will learn how to analyze data to make informed business decisions, author enterprise dashboards to visualize real-time trends, create standard reports for business users, and generate insight using data mining techniques. Students in this class with use SAP, Microsoft Excel, Microsoft Access, and Teradata.

              ITP-365 “Managing Data in C++”

              units: 3   |   prerequisite(s): ITP-109, ITP-115, or ITP-165

              • COMP
              • MOAP
              • VGM

              In this C++ programming class, students will gain proficiency in using core data structures — including arrays, vectors, linked lists, stacks, queues, binary trees, and hash tables — to evaluate the performance of various algorithms and solve problems through recursion.

              ITP-368 “Programming Graphical User Interfaces”

              units: 3   |   prerequisite(s): ITP-365 or CSCI-104

              • COMP

              Learn to program applications with dynamic graphical user interfaces. Students will use the Java programming language and Eclipse IDE to write and debug applications that use animations, UI controls, events, input, and layout panes to create accessible and functional experiences for users.

              ITP-370 “Information Security Management”

              units: 3   |   prerequisite(s): ITP-125

              • APCS

              This course is designed to teach the fundamentals of security management, looking at security from a managerial perspective with regards to design, implementation, maintenance, and disaster recovery. Students will learn the laws and regulations surrounding information security and how to plan for disaster recovery and conduct security audits.

              ITP-375 “Digital Forensics”

              units: 3   |   prerequisite(s): ITP-125

              • APCS
              • CDF

              From cyber-terrorism to identity theft, the digital age has brought about a change in the way that crime is being committed. The usage of computers in crime has lead to the emerging field of computer forensics. This course is designed to give students the tools and techniques for investigating crime involving digital evidence, including the best practices for incident response. Students will perform a full computer forensic investigation and write an accompanying forensic report.

              ITP-380 “Video Game Programming”

              units: 4   |   prerequisite(s): ITP-365 or CSCI-104

              • COMP
              • VGM

              This course provides students with an in-depth introduction to technologies and techniques used in the game industry today. Students will program in C++ and create eight different types of games throughout the semester. The semester begins with 2D games (such as asteroids and breakout) and continues into 3D games (such as a first-person parkour game). These game projects support the different concepts covered during the semester, including game fundamentals, graphics, input, collisions, and artificial intelligence. This course also teaches students the fundamental mathematics that all professional game developers must know. This class prepares students for further study in the field of video game programming.

              ITP-382 “Mobile Game Programming”

              units: 3   |   prerequisite(s): ITP-365 or CSCI-104

              • MOAP
              • VGM

              Learn how to program cross-platform mobile games for iOS and Android using Unity, C#, and industry-standard tools and plugins. You will gain experience developing 2D and 3D game project prototypes and demos and using animation, artificial intelligence, augmented and virtual reality, accelerometers, and multi-touch gestures.

              ITP-393 “Video Game Design Documents”

              units: 2   |   prerequisite(s): ITP-230 or ITP-280

              • VGDM

              Over the course of the semester, students will each complete an original extended game concept document or “treatment,” as well as pitch presentations (verbal, written, and PowerPoint) following accepted industry standards. Students will explore the role of game designers in the industry and their role in creating story elements, game controls, art and audio designs, walkthroughs, and budgets.

              ITP-405 “Professional Applications and Frameworks in Web Development”

              units: 3   |   prerequisite(s): ITP-300 or ITP-303

                In this advanced back-end web development course, students will learn how to build server-side web applications and APIs. Students will gain experience with Git, database tools, Model-View-Controller (MVC) frameworks such as Laravel, Object Relational Mapping (ORM), and automated testing. They will also learn about using OAuth2 to consume APIs and create applications where users can log in with 3rd party providers such as Facebook, Google, and Twitter. Lastly, students will learn how to build server-side JavaScript applications using Node.js and see the differences between synchronous and asynchronous programming.

                ITP-411 “Multimedia and Video Production”

                units: 3

                • DE
                • WEBT

                This course can change your life! The purpose of this course is to provide an overview of creating powerful messages, images, and video for the web — with a focus on video. This is not a “theory class.” This is a “get your hands dirty” class.

                This course teaches how to think and create visually by showing how to use a variety of software — Adobe Photoshop, Apple Final Cut Pro X, Apple Motion, Apple Compressor — and techniques to create, edit, and deliver compelling images and video. This is not an “arts” class, it’s a “hands-on communications” class.

                ITP-415 “3-D Design and Prototyping”

                units: 2   |   prerequisite(s): ITP-215

                • 3DCG

                In this advanced 3D modeling course, you will explore the range of 3D printing and prototyping technologies and their applications to modern industrial, design, and creative fields. Students will use Autodesk Maya, SolidWorks, and Fusion 360 to design and prototype 3D models for successful printing.

                ITP-422L “Configuring Enterprise Resource Planning Systems”

                units: 3   |   prerequisite(s): ITP-320 or ISE-583

                • EIS

                In this class, students will gain in-depth experience configuring an Enterprise Resource Planning (ERP) system for a hypothetical company from the ground up. Students will design the organizational structure, master data, and rules & parameters to support core business process for the Production, procure-to-pay, order fullfilment, and simple finance for tracking functions of a business using SAP S/4HANA. Also, students will learn the key differences between SAP’s ERP product line and the new S/4 Hana which replaces ERP.

                ITP-435 “Professional C++”

                units: 3   |   prerequisite(s): ITP-365 or CSCI-104

                • COMP
                • MOAP
                • VGM

                This course teaches students how to use C++ as a professional developer in industry would. We will explore several different areas and applications where C++ sees significant use. We will learn applications of advanced concepts including lambda expressions, templates, secure coding, parallel programming, writing performant code, CMake, and continuous integration.

                ITP-439 “Compiler Development”

                units: 3   |   prerequisite(s): ITP-435

                • COMP

                Students will learn about practical applications of techniques used to develop a programming language compiler. Topics covered include how to parse the program’s text, represent the program in memory, optimize the code, and generate machine code. Throughout the semester, students will implement components of a working compiler for a subset of C called University Simple C, which was created specifically for this course. This compiler is implemented in C++. Students will also use the extremely popular and industry-standard LLVM framework for many aspects of the compiler.

                ITP-442 “Mobile App Project”

                units: 4   |   prerequisite(s): ITP-341 or ITP-342

                • MOAP

                In this capstone course, students work in teams to develop mobile apps that address real-world issues. Following the agile software development cycle, students gather requirements, design prototypes, and develop the apps. Students use industry-standard tools for source code control, project management, bug tracking, and testing.

                ITP-447 “Mobile Device Security and Forensics”

                units: 3   |   prerequisite(s): ITP-375

                • CDF

                This course is designed as an advanced course in computer forensics focusing on mobile devices and other devices not classifiable as desktop or servers. Students will engage in forensic acquisition and analysis of mobile computing devices, specifically Android, Blackberry and Windows Phone devices.

                ITP-449 “Data Mining: Descriptive and Predictive”

                units: 4   |   prerequisite(s): ITP-350

                • APAN

                Examine and compare practical methods in data mining – data preparation, classification, clustering. Knowledge discovery process is to find patterns and regularities from large datasets.

                ITP-454x “Enterprise Resource Planning, Design, and Implementation”

                units: 3   |   prerequisite(s): ITP-320

                • EIS

                This course takes an in-depth look at the process and requirements necessary to implement an Enterprise Resource Planning System (ERP) for an organization. The Accelerated SAP method (as outlined by the ERP tool SAP) will be followed throughout the semester. Students will first be grouped into small project teams. Each team will be responsible for setting up a Windows Server system and monitoring that server system during the semester. The teams will then implement onto the servers an ERP system used for coordinating an organization’s activities. The final tasks performed by the teams will be the transportation of data from a case company’s legacy system into the newly implemented ERP system and the configuration of that ERP system to model the case company’s Customer Order process.

                ITP-460 “Web Application Project”

                units: 4   |   prerequisite(s): ITP-300, ITP-303, or ACAD-276

                • WEBT

                In this capstone course, students will work in teams to develop and launch web applications that address real-world issues. Students also have an option to work with actual clients following current development stages and cycles. Students will use industry-standard tools and processes like Git, Search Engine Optimization practices, and Agile development methodology.

                ITP-466 “Building the High Tech Startup”

                units: 4

                • CNDM
                • DE

                In this course, students will learn the basic technologies and processes involved in building web and mobile startups — including Online Business models, product management, Agile development processes, customer development, and online marketing.

                ITP-470 “Information Technology Practicum”

                units: *1-4

                • 3DCG
                • APAN
                • DE
                • WEBT

                In ITP-470 “Information Technology Practicum,” exceptional students pursue individual practical or exploratory projects under the guidance of full-time faculty in ITP. To get d-clearance to register for this class, each student must submit a project proposal on MyViterbi, which the planned faculty member must approve. Each project proposal must include:

                1. the name of the faculty member who will be guiding the practicum,
                2. a description of the proposed project or exploration,
                3. the proposed number of units to be earned (one semester unit represents roughly 3 hours of work per week for a 15-week term),
                4. a planned schedule for how often the student and faculty member will meet to discuss the project,
                5. the expected format for the final project (the final project may be a demo of a program, app, website, or similar; students pursuing an exploration may submit a summative report or presentation),
                6. and the expectations (or rubric) for the student (all students pursuing ITP-470 must to adhere to their approved project proposal).

                If you intend to complete ITP-470 for minor credit, please be sure to get written approval of the faculty member that oversees your minor program.

                Once you have discussed your ITP-470 project with your planned faculty member, please log in to MyViterbi and complete the “Directed Research Request Form.” Your faculty member will be able to  approve the request online, and then you will receive an emailed receipt. You may use this receipt to request d-clearance from our advisement team at itpadvising@usc.edu.

                ITP-475 “Advanced Digital Forensics”

                units: 4   |   prerequisite(s): ITP-375

                • APCS
                • CDF

                In this class, students will learn to investigate Windows workstations and servers, how to collect forensic evidence, analyze file system evidence, artifacts, and computer memory, and complete a variety of case studies in digital forensics — culminating in a comprehensive final case that involves a moot court exercise.

                ITP-476 “Technologies for Interactive Marketing”

                units: 4

                • CNDM
                • DE

                This class introduces students to key concepts in lean startups and growth hacking, new media technologies that influence current marketing practices, and customer development. Students will learn to use Google Analytics, Moz Professional, BuzzSumo, MailChimp, and various social media platforms.

                ITP-479 “Cyber Law and Privacy”

                units: 3

                • CDF
                • DE

                Learn about how technology intersects with the law, privacy, and ethics. Taught by a veteran cyber-crime prosecutor, this course uses real-world examples to explore the limits of our privacy rights. Explore how the government or corporations have access to your data and what laws are in place to protect you. Students will discover and discuss basic issues of privacy and how it impacts them with an emphasis on technological privacy exposures. The course includes discussion of computer searches, tracking devices, and wiretaps. No legal or technological background is required, and the course is a great introduction for students interested in law, cyber security, or forensics.

                ITP-480 “Information Technology Internship”

                units: *1-4

                • 3DCG

                ITP-480 “Information Technology Internship” is a unique class that allows each student to earn academic credit for an approved project completed in tandem with an internship. Each student earns academic credit for an approved related project component and not solely for the work duties.

                To register for ITP-480, you will need both an internship offer and a project proposal approved by a full-time faculty member in ITP. Each student must submit a d-clearance request on MyViterbi, which the faculty member guiding the internship and project must approve. Each request must include:

                1. the name of the faculty member who will be guiding the internship,
                2. the name and contact information for the internship supervisor,
                3. the job description for the internship,
                4. the proposed number of units to be earned (one semester unit represents roughly 3 hours of work per week for a 15-week term),
                5. the expected format for the related project component (the related project component could be a demo of a program, app, website, or similar; it may also be an exploratory report or presentation),
                6. and the expectations (or rubric) for the student (all students pursuing ITP-480 must adhere to their approved d-clearance request).

                Once you have discussed your internship and related project component with your planned faculty member, please log in to MyViterbi and complete the “Directed Research Request Form.” Your faculty member will be able to approve the request online, and then you will receive an emailed receipt. You may use this receipt to request d-clearance from our advisement team at itpadvising@usc.edu.

                ITP-485 “Programming Game Engines”

                units: 4   |   prerequisite(s): ITP-380

                • VGM

                This course provides students with an in-depth exploration of 3D game engine architecture. Students will learn state-of-the-art software architecture principles in the context of game engine design, investigate subsystems typically found in a real game engine, survey engine architectures from actual shipped games, and explore how the differences between game genres can affect engine design.

                ITP-487 “Data Warehouses”

                units: 3   |   prerequisite(s): ITP-250 or ITP-320

                • APAN
                • EIS

                While the increased capacity and availability of data gathering and storage systems have allowed enterprises to store more information than ever before, most organizations still lack the ability to effectively consolidate, arrange, and analyze this vast amount of data. Analyzing large data sets to forecast and predict future events has become a highly sought-after skill in business, engineering, services, science, health, and other industries.

                ITP-489 “In-Memory Database Systems for Real Time Analytics”

                units: 3   |   prerequisite(s): ITP-250 or ITP-320

                • APAN
                • EIS

                Recent breakthroughs in multi-core architectures and the availability of large amounts of main memory at low costs have made in-memory database management possible, thus enabling enterprises to collect and analyze vast amounts of data in real time, transforming the way we perform analytics. This course is designed to provide students with a thorough understanding of the architecture, tools, capabilities, and use of in-memory database applications.

                ITP-496 “The Startup Launchpad Lab”

                units: 2   |   prerequisite(s): BAEP-452, ITP-466, and ITP-476

                • DE

                In this capstone course, students will work in teams to design, prototype, and implement version 1.0 of a high-tech web or mobile startup.

                ITP-499 “Data Structures and Applications”

                units: 4

                  This course will be using basic MATLAB programming skills as foundational knowledge to develop programs and applications that are capable of doing large-scale data analysis and simulation. Students will learn to organize extremely large sets of data into various configurations to perform analysis. Students will also learn to use the Graphical User Interface Development Environment (GUIDE) to provide user-friendly interfaces for client-side applications in conjunction with programming analysis on the back-end. Students will be able to develop and implement simple simulations for n-dimensional problems using domain-independent simulation techniques.

                  ITP-499 “Blockchain: Smart Contracts and Decentralized Applications”

                  units: 4

                    Learn about blockchain, the distributed and decentralized database technology behind cryptocurrencies like Bitcoin, how it works, and the real-world problems the technology is trying to solve. Students will explore platforms like Ethereum to build secure applications on blockchain.

                    ITP-499 “Game Programming Professional Development”

                    units: 2

                    • COMP
                    • VGM

                    This course will focus on the practical math and other topics relevant to new professionals in 3D video game programming. Students will get practice with the application of mathematics, physics, and geometry in the context of common video game scenarios.

                    Featured Courses

                     

                    Next Steps

                    Registration

                    Advisement

                    See advisement resources >

                    All students at USC are welcome to register for ITP courses, and our introductory courses do not require a background in technology or engineering. Departmental clearance (“d-clearance”) is not required for most of our courses during the regular registration period. However, after the first week of class each semester, all classes require the instructor’s permission and d-clearance — so register early!

                    You are not required to meet with a member of the ITP advisement team in order to register for our classes. If you have any questions about the course offerings, please email us or schedule an appointment.

                    Prerequisite waivers

                    Some students have already completed preparatory course work in CSCI, EE, or ISE; have completed online programming tutorials; or have worked on their own programming projects. In these cases, skipping a prerequisite and registering for a higher-level course may benefit the student. If you would like to skip a prerequisite and register for a higher-level course, you will need to obtain the written approval of the instructor of the higher-level course. If you obtain approval, please send the instructor’s approval with your USC ID number to itpadvising@usc.edu.

                    Some courses have already been approved as substitutions for minor or specialization requirements, so you should check the requirements for your program to see if you need an individual prerequisite waiver.