Journey into Computer Science: Which path will you choose?

USC Viterbi offers a variety of courses that will introduce you to computer science and programming. Whether you’re a first year, senior, or graduate student – it’s never too late to start!

For all cs pre-engineering students, prospective minors, and admitted majors with limited prior programming experience:

CSCI 102 – Fundamentals of Computation
Fundamental concepts of algorithmic thinking as a primer to programming. Introduction to C++. It provides a slower-paced introduction to computation and programming for students who have had little exposure to these topics or who simply want to ensure a solid foundation before beginning CSCI 103.

For our undergraduate students in the following majors:
Computer Science [CSCI]
Computer Science / Business Administration [CSBA]
Computer Science (Games) [CSGM]
and the Computer Science minor

CSCI 109 – Introduction to Computer Science
An introduction to, and overview of, Computer Science; both as a discipline and a body of knowledge. 

CSCI 103 – Introduction to Programming*
Basic datatypes, assignments, control statements (if, switch, for, while), input/output (printf, scanf, cin, cout), functions, arrays, structures, recursion, dynamic memory, file handling. Programming in C/C++.

*Non-Viterbi undergraduate students with no prior programming experience that are considering a switch to CS must take CSCI 102 before CSCI 103.

For our undergraduate students in the Computer Engineering & Computer Science [CECS]  major:

EE 109 – Introduction to Embedded Systems
Information representations, embedded C language constructs, assembly programming, state machines, and fundamental circuit analysis. Embedded topics will include digital I/O, serial I/O protocols, analog-to-digital conversion and interrupt mechanisms.
Recommended Preparation: Knowledge of C or C++.

CSCI 103 – Introduction to Programming*
Basic datatypes, assignments, control statements (if, switch, for, while), input/output (printf, scanf, cin, cout), functions, arrays, structures, recursion, dynamic memory, file handling. Programming in C/C++.

*Non-Viterbi undergraduate students with no prior programming experience that are considering a switch to CS should consider ITP 115 Python before CSCI 103.

Prospective Undergraduate Applicants: For more information about applying directly to CS@USC, visit: Viterbi Undergraduate Admissions

 

Current USC Students: For more information about Changing Majors to CS/Viterbi, visit: Viterbi Pre-Engineering Change of Major Process

 

USC Viterbi’s Information Technology Program offers a variety of courses for students interested in an introduction to several popular programming languages:

Note: CSCI 103 already teaches C/C++. CSCI 201 teaches Java. These two courses are mandatory in all CS majors.
Note: These introductory ITP courses count as free electives for the CS majors, and for most other major programs. They do not count as technical electives for CS majors.

ITP 104 – Web Publishing (HTML & CSS)
Web publishing using HTML, CSS and other Web technologies. Concepts and theory of Web site creation, page layout and production. Introduction to advanced topics.

ITP 109 – Introduction to Java Programming
Introduction to object-oriented software design for business problems. Creation of console applications, windowed applications, and interactive Web applets. Note: Java is already taught in CSCI 201.

ITP 115 – Programming in Python
Python’s high level data structures and clear syntax make it an ideal first language with powerful applications to science, business, finance, math, and the web.

ITP 165 – Introduction to C++ Programming
Fundamentals of C++ syntax and semantics, including function prototypes, overloading, memory management, abstract data types, object creation, pointers to class members, and I/O streams. Note: C/C++ is already taught in CSCI 103.

ITP 168 – Introduction to MATLAB
Fundamentals of MATLAB: a high-performance numeric computation and visualization environment. Overview of linear algebra and matrix manipulation; using 2-D and 3-D plotting routines; programming in MATLAB; basic numerical analysis.

For non-computer science undergraduate students interested in computer science as a General Education option, consider the following course for your GE-F Quantitative Reasoning requirement:

CSCI 100xg – Explorations in Computing
A behind-the-scenes overview of the computational/algorithmic principles that form the basis of today’s digital society. Exploration areas include social media, web search, video games and location-based services.
Note: No credit will be awarded to computer science majors (CSCI, CECS, CSGM, or CSBA).

For non-computer science juniors/seniors and graduate students interested in an accelerated programming introduction:

CSCI 455x – Introduction to Programming Systems Design
Intensive introduction to programming principles, discrete mathematics for computing, software design and software engineering concepts.
Prerequisite: departmental approval.
Not available for credit to computer science majors, graduate or undergraduate.

Along with a traditional M.S. and Ph.D. program in Computer Science, we also offer a transitional M.S. in Computer Science for Scientists and Engineers, which welcomes prospective graduate students with undergraduate degrees in other engineering fields and sciences to start their journey into computer science.

 

Prospective M.S. Applicants: For more information about applying directly to CS@USC, visit: Viterbi M.S. Programs: How to Apply

 

Prospective Ph.D. Applicants: For more information about applying directly to CS@USC, visit: CSCI Ph.D. Application Information