Computer Engineering
Undergraduate Degree
Education Program Objectives
The undergraduate program in computer engineering and computer science has the following objectives:(1) Graduates will design and develop computer hardware that reflects the exigencies imposed by software design and development considerations.
(2) Graduates will develop software that makes efficient use of current and developing hardware technologies.
(3) Graduates will continue to develop the scientific and engineering skills and knowledge that will enable them to design and implement computer systems that effectively and efficiently integrate developing hardware and software technologies.
(4) Graduates will be exposed to extensive work experiences in both the areas of computer engineering and computer science.
(5) Most graduates will enter employment in their field.
(6) Some graduates will undertake graduate education in computer engineering and/or computer science.
(7) Graduates will engage in lifelong learning and understand contemporary developments in the field.
(8) The reputations of the electrical engineering and computer science departments, which jointly sponsor the CECS program, for attracting quality students and producing quality graduates, will be continuously improved.
Bachelor of Science in Computer Engineering and Computer Science
Students attaining the Bachelor of Science degree in computer engineering and computer science would possess the scientific and engineering skills and knowledge that would enable them to design and implement computer systems that effectively and efficiently integrate developing hardware and software technologies. This degree is administered jointly by the Departments of Computer Science and Electrical Engineering.In order to earn the Bachelor of Science degree in computer engineering and computer science, the student must: (1) earn 128 class units as described below; (2) achieve a minimum grade point average of 2.0 on all course work undertaken at USC; (3) attain a minimum grade point average of 2.0 on all course work completed in electrical engineering and computer science at USC.
In addition, CECS majors must complete a minimum of 30 units of course work in humanities and social sciences.
composition/writing requirements | Units | |
---|---|---|
WRIT 140* | Writing and Critical Reasoning | 4 |
WRIT 340 | Advanced Writing | 3 |
General Education (see here) | Units | |
---|---|---|
General education*+ | 20 |
Pre-major requirements | units | |
---|---|---|
Math | ||
MATH 125 | Calculus I | 4 |
MATH 126 | Calculus II | 4 |
MATH 225 | Linear Algebra and Differential Equations | 4 |
MATH 226 | Calculus III | 4 |
EE 364 | Introduction to Probability and Statistics for Electrical Engineering and Computer Science, or | 3 |
MATH 407 | Probability Theory | 4 |
400-level math elective** | 4 | |
Physics | ||
PHYS 151L*** | Fundamentals of Physics I: Mechanics and Thermodynamics | 4 |
PHYS 152L | Fundamentals of Physics II: Electricity and Magnetism | 4 |
Science elective**** | 4 |
major requirements | Units | |
---|---|---|
Computer Science | ||
CSCI 101L | Fundamentals of Computer Programming | 3 |
CSCI 102L | Data Structures | 4 |
CSCI 105 | Object-Oriented Programming | 2 |
CSCI 201L | Principles of Software Development | 4 |
CSCI 271 | Discrete Methods in Computer Science | 3 |
CSCI 303 | Design and Analysis of Algorithms | 3 |
CSCI 377 | Introduction to Software Engineering | 3 |
CSCI 402 | Operating Systems | 3 |
Electrical Engineering | ||
EE 101 | Introduction to Digital Logic | 3 |
EE 106L | Introduction to Computer Engineering/Computer Science | 3 |
EE 201L | Introduction to Digital Circuits | 2 |
EE 328Lx | Circuits and Electronics for Computer Engineers | 4 |
EE 357 | Basic Organization of Computer Systems | 3 |
EE 454L | Introduction to Systems Using Microprocessors | 4 |
EE 457x | Computer Systems Organization | 3 |
Industrial and Systems Engineering | ||
ISE 460 | Engineering Economy | 3 |
Senior Design Project | ||
CSCI 477 | Design and Construction of Large Software Systems, or | |
EE 459L | Embedded Systems Design Laboratory | 3 |
Electives | ||
Technical elective++ | 9 | |
Free elective | 4-5 | |
Total units: | 128 |
** Any 400-level mathematics course except MATH 450.
*** Satisfies GE Category III requirement.
**** Any course in physics, biology or chemistry beyond the basic science requirement or in another scientific discipline. See department for approval.
+ The university allows engineering majors to replace the GE Category IV with a second course in Categories I, II or VI. Choosing this option is the most efficient way to satisfy the 30-unit requirement in humanities and social sciences.
++ Choose three from approved course list. Applicable courses include: CSCI 351, CSCI 410x, CSCI 445, CSCI 460, CSCI 464, CSCI 480, CSCI 485, CSCI 490x, CSCI 499; EE 321, EE 450, EE 465, EE 477L, EE 490x, EE 499. Other courses may be applicable; please see an advisor for approval.
Minor in Multimedia and Creative Technologies
See listing under Multimedia and Creative Technologies.Graduate Degrees
The graduate program in computer engineering, offered through the Department of Electrical Engineering, is designed to provide students with an intensive background in the analysis, structure, design and function of digital computers and information processing systems. In addition to giving each student a fundamental background in digital logic, computer architecture and operating systems, a wide variety of elective courses allows for study in the following specialized areas: artificial intelligence; computer architecture; computer networks; computer system performance; design automation; fault-tolerant computers; microprocessors; parallel processing; real-time systems; robotics; and VLSI design.
Master of Science in Computer Engineering
The Master of Science in Computer Engineering is earned by completing an integrated program of at least 27 units of approved course work in computer engineering and computer science. No more than three courses (maximum 12 units) may be counted at the 400 level — at least 18 advisor approved units must be taken at the 500 or 600 level.All applicants must have taken the entrance requirement courses (or equivalent in other institutions) in order to be admitted to the program. Entrance requirement course credit cannot be applied toward the degree. A fundamental courser may be waived by taking a placement exam. In case a placement exam is not offered, a fundamental course may be waived by a designated faculty member. At least 18 units must be taken at the 500-level or above. At least 18 units must be taken in electrical engineering, 15 of which must be taken at USC. Units taken outside of electrical engineering or computer science must be approved in advance by a computer engineering advisor and must be substantive in content and related to the degree objective. Up to 3 units of Directed Research (EE 590) with a computer engineering faculty member may be applied toward the degree.
Entrance Requirement Courses | Units | |
---|---|---|
CSCI 455x | Introduction to Programming Systems Design | 4 |
EE 357 | Basic Organization of Computer Systems | 3 |
Students must take or waive all four of the following fundamental courses (with the option of EE 450 or EE 465):
Fundamental Courses | Units | |
---|---|---|
CSCI 402x | Operating Systems | 3 |
EE 450 | Introduction to Computer Networks, or | |
EE 465 | Probabilistic Methods in Computer Systems Modeling | 3 |
EE 457x | Computer Systems Organization | 3 |
EE 477L | MOS VLSI Circuit Design | 4 |
Students must take at least two of the following core courses (with the option of EE 550 or EE 555): |
Core Courses | Units | |
---|---|---|
EE 550 | Design and Analysis of Computer Communication Networks, or | |
EE 555 | Broadband Network Architectures | 3 |
EE 557 | Computer Systems Architecture | 3 |
EE 577a | VLSI System Design | 3 |
Students must take at least 6 units from the following list of elective courses (cannot overlap with the core courses): | ||
Computer Science: CSCI 545, CSCI 546, CSCI 547, CSCI 551, CSCI 555, CSCI 558L, CSCI 561, CSCI 565, CSCI 570, CSCI 584, CSCI 585, CSCI 595 | ||
Electrical Engineering: EE 532, EE 533ab, EE 536, EE 549, EE 550, EE 552, EE 554, EE 555, EE 557, EE 558, EE 560, EE 577ab, EE 579, EE 630, EE 650, EE 652, EE 653, EE 657, EE 658, EE 659, EE 677, EE 680, EE 681 |
A minimum grade point average of 3.0 (A = 4.0) must be earned on all course work applied toward the master’s degree in computer engineering. This average must also be achieved on all 400-level and above course work attempted at USC beyond the bachelor’s degree. Transfer units which count as credit (CR) toward the master’s degree are not computed in the grade point average. All other Viterbi School of Engineering requirements for the Master of Science apply.
Doctor of Philosophy in Computer Engineering
The requirements for the Doctor of Philosophy (Ph.D.) degree in computer engineering are in strict conformity with the requirements of the Graduate School. Program requirements for the Ph.D. in computer engineering are the same as those for the Ph.D. in electrical engineering except that the major field is computer engineering. See general requirements for graduate degrees.Screening and qualifying examinations are administered by the computer engineering faculty. Students should contact the Electrical Engineering-Systems Department Office for further information.
Major Areas in Computer Engineering and Relevant Courses (not applicable to Master of Science, Computer Engineering requirements)
Computer Systems Architecture | Units | |
---|---|---|
EE 457x | Computer Systems Organization | 3 |
EE 554 | Real Time Computer Systems | 3 |
EE 557 | Computer Systems Architecture | 3 |
EE 653 | Advanced Topics in Microarchitecture | 3 |
EE 657 | Parallel and Distributed Computing | 3 |
EE 659 | Interconnection Networks | 3 |
Artificial Intelligence | Units | |
---|---|---|
CSCI 544 | Natural Language Processing | 3 |
CSCI 561 | Foundations of Artificial Intelligence | 3 |
CSCI 574 | Computer Vision | 3 |
CSCI 674a | Advanced Topics in Computer Vision | 3 |
EE 559 | Mathematical Pattern Recognition | 3 |
Robotics | Units | |
---|---|---|
AME 541 | Linear Control Systems II | 3 |
AME 548 | Analytical Methods in Robotics | 3 |
CSCI 545 | Robotics | 3 |
CSCI 547 | Sensing and Planning in Robotics | 3 |
Computer Networks and Distributed Systems | Units | |
---|---|---|
CSCI 551 | Computer Communications | 3 |
CSCI 555 | Advanced Operating Systems | 3 |
EE 450 | Introduction to Computer Networks | 3 |
EE 532 | Wireless Internet and Pervasive Computing | 3 |
EE 549 | Queueing Theory for Performance Modeling | 3 |
EE 550 | Design and Analysis of Computer Communication Networks | 3 |
EE 555 | Broadband Network Architectures | 3 |
EE 650 | Advanced Topics in Computer Networks | 3 |
Digital Systems Design | Units | |
---|---|---|
EE 552 | Logic Design and Switching Theory | 3 |
EE 560 | Digital System Design -- Tools and Techniques | 3 |
EE 577ab | VLSI System Design | 3-2 |
EE 658 | Diagnosis and Design of Reliable Digital Systems | 3 |
EE 680 | Computer Aided Design of Digital Systems I | 3 |
EE 681 | Computer-Aided Design of Digital Systems II | 3 |