Courses

Students entering the University of San Diego and/or declaring a major during 2020-2021, should follow information contained in the printed course catalog (also known as the "catalog of record") published on April 1, 2020. Access the catalog of record at https://catalogs.sandiego.edu.

COMP 100 is text display
INTRODUCTORY COMPUTER PROGRAMMING is text display

Units: 3 Repeatability: No

is text display
An elementary introduction to computer programming and applications for non-majors and non-minors. Computer organization; problem solving; algorithms; structured programming in a simple computer language; computer applications; and current issues and trends in computer science. This course does not satisfy any of the requirements for the computer science major or minor and is not a substitute for COMP 150. is text display
COMP 110 is text display
COMPUTATIONAL PROBLEM SOLVING is text display

Units: 3.5 Repeatability: No

is text display
Prerequisites: MATH 115 with a minimum grade of C- or MATH 150 or MATH 151 is text display
An introduction to computational problem solving using the Python programming language. Students will learn the basic elements of programming (e.g. conditionals, loops, inputs/outputs), modular program design, and the basics of data abstraction through object-oriented programming. is text display
COMP 120 is text display
PROGRAMMING ABSTRACTIONS AND METHODOLOGIES is text display

Units: 3.5 Repeatability: No

is text display
Prerequisites: COMP 110 with a minimum grade of C- is text display
A continued exploration of computational problem solving, with a focus on using abstraction to manage program complexity. Students will learn to use both functional and data abstractions, analyze the time and space complexity of algorithms, and utilize functional, object-oriented, and event-driven paradigms within their programs. is text display
COMP 150 is text display
COMPUTER PROGRAMMING I is text display

Units: 3

is text display
Prerequisites: MATH 115 with a minimum grade of C- or Passing the appropriate departmental placement test within the previous year or MATH 130 with a minimum grade of C- or MATH 150 with a minimum grade of C- is text display
Algorithms and programming in a selected computer language; expressions, statements, basic data types; sequence, decision, iteration; functions and procedures; arrays; recursion; file input and output; loop invariants; syntax analysis; and program design, documentation, validation, and debugging. Prereq: MATH 115 with a minimum grade of C-, or pass Level 2 mathematics placement exam. COMP 100 is not a prerequisite. is text display
COMP 151 is text display
COMPUTER PROGRAMMING II is text display

Units: 3 Repeatability: No

is text display
Prerequisites: COMP 150 with a minimum grade of C- is text display
Continuation of COMP 150. Basic data structures, including lists, stacks, queues, and binary trees; abstract data types; sorting and searching algorithms; exception handling; event driven programming;. is text display
COMP 160 is text display
PROGRAMMING LANGUAGES is text display

Units: 1-3 Repeatability: Yes (Can be repeated for Credit)

is text display
Prerequisites: COMP 110 with a minimum grade of C- is text display
Introduction to a particular high-level programming language such as C, C++, Java, Ruby, MATLAB, and Maple. Programming assignments appropriate to the language studied. This course does not satisfy any of the requirements for the major in computer science. is text display
COMP 230 is text display
ADVANCED COMPUTATIONAL PROBLEM MODELING is text display

Units: 3.5 Repeatability: No

is text display
Prerequisites: (COMP 120 with a minimum grade of C- or COMP 151 with a minimum grade of C-) and (MATH 160 with a minimum grade of C- or MATH 260 with a minimum grade of C- or MATH 222 with a minimum grade of C- or MATH 262 with a minimum grade of C-) is text display
Advanced data structures (e.g. graphs, priority queues, quad trees, etc.) from the perspective of solving advanced computational problems. Students will learn to program in the Java programming language using object-oriented features such as inheritance, interfaces and generics. is text display
COMP 280 is text display
INTRODUCTION TO COMPUTER SYSTEMS is text display

Units: 3.5 Repeatability: No

is text display
Prerequisites: COMP 120 with a minimum grade of C- or COMP 151 with a minimum grade of C- is text display
Introduction to computer systems; data representation; machine/assembly languages; memory organization; virtual memory; and concurrency. is text display
COMP 285 is text display
DATA STRUCTURES & ALGORITHMS is text display

Units: 3

is text display
Prerequisites: (COMP 151 with a minimum grade of C- and MATH 160 with a minimum grade of C-) is text display
Data structures, algorithm analysis and general programming design and applications; balanced trees, hashing, priority queues, sets, and graphs; more on sorting and searching; Prereq: COMP 151 with a grade of C- or better and MATH 160 with a grade of C- or better. is text display
COMP 294 is text display
SPECIAL TOPICS IN COMPUTER SCIENCE is text display

Units: 1-4 Repeatability: Yes (Can be repeated for Credit)

is text display
Special topics course in areas of special interest to computer science. May be repeated for credit with a different topic. is text display
COMP 299 is text display
INDEPENDENT STUDY is text display

Units: 1-3 Repeatability: Yes (Can be repeated for Credit)

is text display
Individual study including library or laboratory research or program writing. A written report is required. Project proposal must be submitted and approved prior to enrollment. May be repeated for credit. is text display
COMP 300 is text display
PRINCIPLES OF DIGITAL HARDWARE is text display

Units: 3.5 Repeatability: No

is text display
Prerequisites: MATH 160 with a minimum grade of C- and COMP 280 with a minimum grade of C- is text display
Combinational and sequential logic, registers, arithmetic units. Introduction to computer architecture. Three lectures and one laboratory per week. is text display
COMP 305 is text display
OBJECT-ORIENTED DESIGN AND PROGRAMMING is text display

Units: 3 Repeatability: No

is text display
Prerequisites: COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C- is text display
Classes, encapsulation, inheritance, polymorphism, class derivation, abstract classes, namespaces, function overloading and overriding, function name overload resolution, container classes, template classes; unified modeling language (UML); constructing conceptual models, system sequence diagrams; design patterns; case studies. is text display
COMP 310 is text display
OPERATING SYSTEMS is text display

Units: 3.5 Repeatability: No

is text display
Prerequisites: COMP 280 with a minimum grade of C- is text display
Principles of computer operating systems; process management; memory management; file systems; protection; deadlock. Concurrent programming. is text display
COMP 340 is text display
NUMERICAL ANALYSIS is text display

Units: 3 Repeatability: No

is text display
Prerequisites: (COMP 110 with a minimum grade of C- or MATH 150 with a minimum grade of C-) and MATH 151 with a minimum grade of C- is text display
Approximate computations and round-off errors; Taylor expansions; numerical solution of equations and systems of equations; systems of linear equations; numerical integration; numerical solution of differential equations; interpolation; and problem solving on the computer. is text display
COMP 341 is text display
NUMERICAL ANALYSIS II is text display

Units: 3

is text display
Prerequisites: MATH 250 with a minimum grade of C- and MATH 320 with a minimum grade of C- and MATH 330 with a minimum grade of C- (Can be taken Concurrently) and COMP 340 with a minimum grade of C- is text display
Estimation of eigenvalues and eigenvectors of matrices; numerical solutions of differential equations, existence, and stability theory; and computer lab assignments. Prereq: MATH 250, 320, 330 (may be taken concurrently), and COMP 340, all with a grade of C- or better. Cross-listed as MATH 341. is text display
COMP 345 is text display
DATABASE MANAGEMENT SYSTEMS DESIGN is text display

Units: 3 Repeatability: No

is text display
Prerequisites: COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C- is text display
Introduction to database concepts; data models; query facilities; and file organization and security. is text display
COMP 350 is text display
COMPUTER GRAPHICS is text display

Units: 3 Repeatability: No

is text display
Prerequisites: (COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-) and MATH 320 with a minimum grade of C- is text display
The development of high-level, device-independent graphics routines; basic line drawing algorithms, text design, and other graphics primitives; 2-D representations of coordinate systems, image segmentation, and windowing. is text display
COMP 355 is text display
DIGITAL MODELING AND SIMULATION is text display

Units: 3

is text display
Prerequisites: MATH 151 with a minimum grade of C- and COMP 305 with a minimum grade of C- is text display
Mathematical modeling; probabilistic and deterministic simulations; pseudo-random number generators; event generators; queuing theory; game theory; and continuous models involving ordinary and partial differential equations. Prereq: COMP 305 with a grade of C- or better and MATH 151 with a grade of C- or better. is text display
COMP 360 is text display
PRINCIPLES OF PROGRAMMING LANGUAGES is text display

Units: 3 Repeatability: No

is text display
Prerequisites: (COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-) and (MATH 160 with a minimum grade of C- or MATH 222 with a minimum grade of C-) or (MATH 260 with a minimum grade of C- or MATH 262 with a minimum grade of C-) is text display
The organization of programming languages with emphasis on language semantics; language definition, data types, and control structures of various languages. is text display
COMP 365 is text display
PRINCIPLES OF INFORMATION SECURITY is text display

Units: 3 Repeatability: No

is text display
Prerequisites: COMP 280 with a minimum grade of C- is text display
Introduction to fundamental concepts in cyber security: policies, threats, vulnerabilities, risk and controls; Identification and authentication; Access control; Cryptographic mechanisms: Ciphers, hashes, message authentication codes, and digital certificates; Malware, infection vectors, and mitigations; Attacks on various application domains, such as web applications; Tools and techniques for developing secure software. is text display
COMP 370 is text display
AUTOMATA, COMPUTABILITY AND FORMAL LANGUAGES is text display

Units: 3 Repeatability: No

is text display
Prerequisites: (COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-) and (MATH 160 with a minimum grade of C- or MATH 260 with a minimum grade of C- or MATH 262 with a minimum grade of C-) is text display
Finite state machines; formal grammars; computability and Turing machines. is text display
COMP 375 is text display
NETWORKING is text display

Units: 3.5 Repeatability: No

is text display
Prerequisites: COMP 280 with a minimum grade of C- is text display
Introduction to the design and implementation of computer and communication networks. The focus is on the concepts and the fundamental design principles that have contributed to the global Internet’s success. Topics covered will include MAC layer design (Ethernet/802.11), the TCP/IP protocol stack, routing algorithms, congestion control and reliability, and applications (HTTP, FTP, etc.) and advanced topics such as peer-to-peer networks and network simulation tools. Recent trends in networking such as multimedia networking, mobile/cellular networks and sensor networks will also be discussed. Prereq: COMP 280 with a grade of C- or better. is text display
COMP 380 is text display
NEURAL NETWORKS is text display

Units: 3 Repeatability: No

is text display
Prerequisites: (COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-) and MATH 320 with a minimum grade of C- is text display
A study of the fundamental concepts, architectures, learning algorithms and applications of various artificial neural networks, including perceptron, Kohonen self organizing maps, learning vector quantization, backpropagation, and radial basis functions. is text display
COMP 382 is text display
INTRODUCTION TO DATA MINING is text display

Units: 3 Repeatability: No

is text display
Prerequisites: (COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-) and ISYE 330 with a minimum grade of C- is text display
The course provides a comprehensive introduction to data mining with a primary focus on fundamental concepts, algorithms and applications of association analysis, classification and clustering modeling. It will also cover ethical issues related to data mining. is text display
COMP 421 is text display
EMBEDDED SOFTWARE DEVELOPMENT is text display

Units: 3 Repeatability: No

is text display
Prerequisites: COMP 280 with a minimum grade of C- is text display
Development of "bare metal" embedded software, running on a microcontroller with no operating system support. Real-time requirements for finishing tasks within a fixed interval of time and for responding to asynchronous events are emphasized, along with techniques for writing reliable code for a memory-constrained microcontroller. All code is written in C using freely available development tools. is text display
COMP 422 is text display
ADVANCED EMBEDDED SOFTWARE DEVELOPMENT is text display

Units: 3 Repeatability: No

is text display
Prerequisites: COMP 421 with a minimum grade of C- or GENG 421 with a minimum grade of C- is text display
Development of embedded software (firmware) using a real-time operating system (RTOS). Development of an application as a set of independent threads that communicate with each other via message queues and semaphores. is text display
COMP 465W is text display
SOFTWARE ENGINEERING is text display

Units: 3

is text display

Core Attributes: Writing-Pre F17 CORE

is text display
Prerequisites: COMP 305 with a minimum grade of C- is text display
Theoretical and practical aspects of software development; project planning; requirements and specification; general and detailed design; implementation; validation and verification; formal documentation. Students will participate in developing documentation for a large software project. Prereq: COMP 305 with a grade of C- or better. is text display
COMP 480 is text display
ALGORITHMS is text display

Units: 3 Repeatability: No

is text display
Prerequisites: or MATH 262 with a minimum grade of C-) is text display
Advanced theory of algorithms. Topics may include: algorithm analysis; algorithm design techniques; and computational complexity. is text display
COMP 491 is text display
SENIOR PROJECT I is text display

Units: 3 Repeatability: No

is text display
Prerequisites: COMP 305 is text display
Students will develop professional skills in realistic software design and engineering, including human/computer interface design techniques, software architecture, teamwork, and project management, incorporating technical and non-technical considerations. Work will prepare students for implementing, testing and documenting the project in COMP 492, Senior Project II. is text display
COMP 492 is text display
SENIOR PROJECT II is text display

Units: 3 Repeatability: No

is text display

Core Attributes: Advanced Integration

is text display
Prerequisites: COMP 491 or COMP 465W is text display
This course is the second semester of the required two semester senior capstone experience for the computer science majors. In this course, students working in teams integrate their training in computer science and other disciplines, to implement, test, and document a significant piece of software based on a design developed in the first semester of the capstone experience, COMP 491. Students document their work, and demonstrate it in multiple public venues. is text display
COMP 494 is text display
SPECIAL TOPICS IN COMPUTER SCIENCE is text display

Units: 1-4 Repeatability: Yes (Can be repeated for Credit)

is text display
Special topics course in areas of special interest to computer science. May be repeated for credit with a different topic. is text display
COMP 495 is text display
SENIOR PROJECT is text display

Units: 2 Repeatability: No

is text display
Prerequisites: COMP 465W or COMP 491 is text display
The course involves participation in a capstone senior project of substantial interest to computer scientists. Emphasis is on the design and implementation of computer systems for real-world problems. A final written report and oral presentation in the presence of other students and faculty are required. is text display
COMP 496 is text display
UNDERGRADUATE RESEARCH is text display

Units: 0.5-3 Repeatability: Yes (Can be repeated for Credit)

is text display
Faculty-directed undergraduate research in computer science. Problem proposal must be submitted and approved prior to enrollment. Written report required. Upper division standing in engineering. Prior approval by department chair is required. May be repeated for credit. is text display
COMP 498 is text display
INTERNSHIP is text display

Units: 1-3 Repeatability: Yes (Can be repeated for Credit)

is text display

Core Attributes: Law - Experiential

is text display
Practical experience in the application of the principles of computer science. Students will be involved in a software or hardware project. Enrollment is arranged on an individual basis according to the student’s interest, background, and the availability of positions. A written report is required. Units may not normally be applied toward the major or minor in computer science. COMP 498 may be repeated for a total of three units. is text display
COMP 499 is text display
INDEPENDENT STUDY is text display

Units: 1-3 Repeatability: Yes (Can be repeated for Credit)

is text display
Individual study including library or laboratory research or program writing. A written report is required. Project proposal must be submitted and approved prior to enrollment. May be repeated for credit. is text display

COMP 100 , COMP 110 , COMP 120 , COMP 150 , COMP 151 , COMP 160 , COMP 230 , COMP 280 , COMP 285 , COMP 294 , COMP 299 , COMP 300 , COMP 305 , COMP 310 , COMP 340 , COMP 341 , COMP 345 , COMP 350 , COMP 355 , COMP 360 , COMP 365 , COMP 370 , COMP 375 , COMP 380 , COMP 382 , COMP 421 , COMP 422 , COMP 465W , COMP 480 , COMP 491 , COMP 492 , COMP 494 , COMP 495 , COMP 496 , COMP 498 , COMP 499

COMP 100 | INTRODUCTORY COMPUTER PROGRAMMING

Units: 3 Repeatability: No

An elementary introduction to computer programming and applications for non-majors and non-minors. Computer organization; problem solving; algorithms; structured programming in a simple computer language; computer applications; and current issues and trends in computer science. This course does not satisfy any of the requirements for the computer science major or minor and is not a substitute for COMP 150.

COMP 110 | COMPUTATIONAL PROBLEM SOLVING

Units: 3.5 Repeatability: No

Prerequisites: MATH 115 with a minimum grade of C- or MATH 150 or MATH 151

An introduction to computational problem solving using the Python programming language. Students will learn the basic elements of programming (e.g. conditionals, loops, inputs/outputs), modular program design, and the basics of data abstraction through object-oriented programming.

COMP 120 | PROGRAMMING ABSTRACTIONS AND METHODOLOGIES

Units: 3.5 Repeatability: No

Prerequisites: COMP 110 with a minimum grade of C-

A continued exploration of computational problem solving, with a focus on using abstraction to manage program complexity. Students will learn to use both functional and data abstractions, analyze the time and space complexity of algorithms, and utilize functional, object-oriented, and event-driven paradigms within their programs.

COMP 150 | COMPUTER PROGRAMMING I

Units: 3

Prerequisites: MATH 115 with a minimum grade of C- or Passing the appropriate departmental placement test within the previous year or MATH 130 with a minimum grade of C- or MATH 150 with a minimum grade of C-

Algorithms and programming in a selected computer language; expressions, statements, basic data types; sequence, decision, iteration; functions and procedures; arrays; recursion; file input and output; loop invariants; syntax analysis; and program design, documentation, validation, and debugging. Prereq: MATH 115 with a minimum grade of C-, or pass Level 2 mathematics placement exam. COMP 100 is not a prerequisite.

COMP 151 | COMPUTER PROGRAMMING II

Units: 3 Repeatability: No

Prerequisites: COMP 150 with a minimum grade of C-

Continuation of COMP 150. Basic data structures, including lists, stacks, queues, and binary trees; abstract data types; sorting and searching algorithms; exception handling; event driven programming;.

COMP 160 | PROGRAMMING LANGUAGES

Units: 1-3 Repeatability: Yes (Can be repeated for Credit)

Prerequisites: COMP 110 with a minimum grade of C-

Introduction to a particular high-level programming language such as C, C++, Java, Ruby, MATLAB, and Maple. Programming assignments appropriate to the language studied. This course does not satisfy any of the requirements for the major in computer science.

COMP 230 | ADVANCED COMPUTATIONAL PROBLEM MODELING

Units: 3.5 Repeatability: No

Prerequisites: (COMP 120 with a minimum grade of C- or COMP 151 with a minimum grade of C-) and (MATH 160 with a minimum grade of C- or MATH 260 with a minimum grade of C- or MATH 222 with a minimum grade of C- or MATH 262 with a minimum grade of C-)

Advanced data structures (e.g. graphs, priority queues, quad trees, etc.) from the perspective of solving advanced computational problems. Students will learn to program in the Java programming language using object-oriented features such as inheritance, interfaces and generics.

COMP 280 | INTRODUCTION TO COMPUTER SYSTEMS

Units: 3.5 Repeatability: No

Prerequisites: COMP 120 with a minimum grade of C- or COMP 151 with a minimum grade of C-

Introduction to computer systems; data representation; machine/assembly languages; memory organization; virtual memory; and concurrency.

COMP 285 | DATA STRUCTURES & ALGORITHMS

Units: 3

Prerequisites: (COMP 151 with a minimum grade of C- and MATH 160 with a minimum grade of C-)

Data structures, algorithm analysis and general programming design and applications; balanced trees, hashing, priority queues, sets, and graphs; more on sorting and searching; Prereq: COMP 151 with a grade of C- or better and MATH 160 with a grade of C- or better.

COMP 294 | SPECIAL TOPICS IN COMPUTER SCIENCE

Units: 1-4 Repeatability: Yes (Can be repeated for Credit)

Special topics course in areas of special interest to computer science. May be repeated for credit with a different topic.

COMP 299 | INDEPENDENT STUDY

Units: 1-3 Repeatability: Yes (Can be repeated for Credit)

Individual study including library or laboratory research or program writing. A written report is required. Project proposal must be submitted and approved prior to enrollment. May be repeated for credit.

COMP 300 | PRINCIPLES OF DIGITAL HARDWARE

Units: 3.5 Repeatability: No

Prerequisites: MATH 160 with a minimum grade of C- and COMP 280 with a minimum grade of C-

Combinational and sequential logic, registers, arithmetic units. Introduction to computer architecture. Three lectures and one laboratory per week.

COMP 305 | OBJECT-ORIENTED DESIGN AND PROGRAMMING

Units: 3 Repeatability: No

Prerequisites: COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-

Classes, encapsulation, inheritance, polymorphism, class derivation, abstract classes, namespaces, function overloading and overriding, function name overload resolution, container classes, template classes; unified modeling language (UML); constructing conceptual models, system sequence diagrams; design patterns; case studies.

COMP 310 | OPERATING SYSTEMS

Units: 3.5 Repeatability: No

Prerequisites: COMP 280 with a minimum grade of C-

Principles of computer operating systems; process management; memory management; file systems; protection; deadlock. Concurrent programming.

COMP 340 | NUMERICAL ANALYSIS

Units: 3 Repeatability: No

Prerequisites: (COMP 110 with a minimum grade of C- or MATH 150 with a minimum grade of C-) and MATH 151 with a minimum grade of C-

Approximate computations and round-off errors; Taylor expansions; numerical solution of equations and systems of equations; systems of linear equations; numerical integration; numerical solution of differential equations; interpolation; and problem solving on the computer.

COMP 341 | NUMERICAL ANALYSIS II

Units: 3

Prerequisites: MATH 250 with a minimum grade of C- and MATH 320 with a minimum grade of C- and MATH 330 with a minimum grade of C- (Can be taken Concurrently) and COMP 340 with a minimum grade of C-

Estimation of eigenvalues and eigenvectors of matrices; numerical solutions of differential equations, existence, and stability theory; and computer lab assignments. Prereq: MATH 250, 320, 330 (may be taken concurrently), and COMP 340, all with a grade of C- or better. Cross-listed as MATH 341.

COMP 345 | DATABASE MANAGEMENT SYSTEMS DESIGN

Units: 3 Repeatability: No

Prerequisites: COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-

Introduction to database concepts; data models; query facilities; and file organization and security.

COMP 350 | COMPUTER GRAPHICS

Units: 3 Repeatability: No

Prerequisites: (COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-) and MATH 320 with a minimum grade of C-

The development of high-level, device-independent graphics routines; basic line drawing algorithms, text design, and other graphics primitives; 2-D representations of coordinate systems, image segmentation, and windowing.

COMP 355 | DIGITAL MODELING AND SIMULATION

Units: 3

Prerequisites: MATH 151 with a minimum grade of C- and COMP 305 with a minimum grade of C-

Mathematical modeling; probabilistic and deterministic simulations; pseudo-random number generators; event generators; queuing theory; game theory; and continuous models involving ordinary and partial differential equations. Prereq: COMP 305 with a grade of C- or better and MATH 151 with a grade of C- or better.

COMP 360 | PRINCIPLES OF PROGRAMMING LANGUAGES

Units: 3 Repeatability: No

Prerequisites: (COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-) and (MATH 160 with a minimum grade of C- or MATH 222 with a minimum grade of C-) or (MATH 260 with a minimum grade of C- or MATH 262 with a minimum grade of C-)

The organization of programming languages with emphasis on language semantics; language definition, data types, and control structures of various languages.

COMP 365 | PRINCIPLES OF INFORMATION SECURITY

Units: 3 Repeatability: No

Prerequisites: COMP 280 with a minimum grade of C-

Introduction to fundamental concepts in cyber security: policies, threats, vulnerabilities, risk and controls; Identification and authentication; Access control; Cryptographic mechanisms: Ciphers, hashes, message authentication codes, and digital certificates; Malware, infection vectors, and mitigations; Attacks on various application domains, such as web applications; Tools and techniques for developing secure software.

COMP 370 | AUTOMATA, COMPUTABILITY AND FORMAL LANGUAGES

Units: 3 Repeatability: No

Prerequisites: (COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-) and (MATH 160 with a minimum grade of C- or MATH 260 with a minimum grade of C- or MATH 262 with a minimum grade of C-)

Finite state machines; formal grammars; computability and Turing machines.

COMP 375 | NETWORKING

Units: 3.5 Repeatability: No

Prerequisites: COMP 280 with a minimum grade of C-

Introduction to the design and implementation of computer and communication networks. The focus is on the concepts and the fundamental design principles that have contributed to the global Internet’s success. Topics covered will include MAC layer design (Ethernet/802.11), the TCP/IP protocol stack, routing algorithms, congestion control and reliability, and applications (HTTP, FTP, etc.) and advanced topics such as peer-to-peer networks and network simulation tools. Recent trends in networking such as multimedia networking, mobile/cellular networks and sensor networks will also be discussed. Prereq: COMP 280 with a grade of C- or better.

COMP 380 | NEURAL NETWORKS

Units: 3 Repeatability: No

Prerequisites: (COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-) and MATH 320 with a minimum grade of C-

A study of the fundamental concepts, architectures, learning algorithms and applications of various artificial neural networks, including perceptron, Kohonen self organizing maps, learning vector quantization, backpropagation, and radial basis functions.

COMP 382 | INTRODUCTION TO DATA MINING

Units: 3 Repeatability: No

Prerequisites: (COMP 230 with a minimum grade of C- or COMP 285 with a minimum grade of C-) and ISYE 330 with a minimum grade of C-

The course provides a comprehensive introduction to data mining with a primary focus on fundamental concepts, algorithms and applications of association analysis, classification and clustering modeling. It will also cover ethical issues related to data mining.

COMP 421 | EMBEDDED SOFTWARE DEVELOPMENT

Units: 3 Repeatability: No

Prerequisites: COMP 280 with a minimum grade of C-

Development of "bare metal" embedded software, running on a microcontroller with no operating system support. Real-time requirements for finishing tasks within a fixed interval of time and for responding to asynchronous events are emphasized, along with techniques for writing reliable code for a memory-constrained microcontroller. All code is written in C using freely available development tools.

COMP 422 | ADVANCED EMBEDDED SOFTWARE DEVELOPMENT

Units: 3 Repeatability: No

Prerequisites: COMP 421 with a minimum grade of C- or GENG 421 with a minimum grade of C-

Development of embedded software (firmware) using a real-time operating system (RTOS). Development of an application as a set of independent threads that communicate with each other via message queues and semaphores.

COMP 465W | SOFTWARE ENGINEERING

Core Attributes: Writing-Pre F17 CORE

Prerequisites: COMP 305 with a minimum grade of C-

Theoretical and practical aspects of software development; project planning; requirements and specification; general and detailed design; implementation; validation and verification; formal documentation. Students will participate in developing documentation for a large software project. Prereq: COMP 305 with a grade of C- or better.

COMP 480 | ALGORITHMS

Units: 3 Repeatability: No

Prerequisites: or MATH 262 with a minimum grade of C-)

Advanced theory of algorithms. Topics may include: algorithm analysis; algorithm design techniques; and computational complexity.

COMP 491 | SENIOR PROJECT I

Units: 3 Repeatability: No

Prerequisites: COMP 305

Students will develop professional skills in realistic software design and engineering, including human/computer interface design techniques, software architecture, teamwork, and project management, incorporating technical and non-technical considerations. Work will prepare students for implementing, testing and documenting the project in COMP 492, Senior Project II.

COMP 492 | SENIOR PROJECT II

Core Attributes: Advanced Integration

Prerequisites: COMP 491 or COMP 465W

This course is the second semester of the required two semester senior capstone experience for the computer science majors. In this course, students working in teams integrate their training in computer science and other disciplines, to implement, test, and document a significant piece of software based on a design developed in the first semester of the capstone experience, COMP 491. Students document their work, and demonstrate it in multiple public venues.

COMP 494 | SPECIAL TOPICS IN COMPUTER SCIENCE

Units: 1-4 Repeatability: Yes (Can be repeated for Credit)

Special topics course in areas of special interest to computer science. May be repeated for credit with a different topic.

COMP 495 | SENIOR PROJECT

Units: 2 Repeatability: No

Prerequisites: COMP 465W or COMP 491

The course involves participation in a capstone senior project of substantial interest to computer scientists. Emphasis is on the design and implementation of computer systems for real-world problems. A final written report and oral presentation in the presence of other students and faculty are required.

COMP 496 | UNDERGRADUATE RESEARCH

Units: 0.5-3 Repeatability: Yes (Can be repeated for Credit)

Faculty-directed undergraduate research in computer science. Problem proposal must be submitted and approved prior to enrollment. Written report required. Upper division standing in engineering. Prior approval by department chair is required. May be repeated for credit.

COMP 498 | INTERNSHIP

Core Attributes: Law - Experiential

Practical experience in the application of the principles of computer science. Students will be involved in a software or hardware project. Enrollment is arranged on an individual basis according to the student’s interest, background, and the availability of positions. A written report is required. Units may not normally be applied toward the major or minor in computer science. COMP 498 may be repeated for a total of three units.

COMP 499 | INDEPENDENT STUDY

Units: 1-3 Repeatability: Yes (Can be repeated for Credit)

Individual study including library or laboratory research or program writing. A written report is required. Project proposal must be submitted and approved prior to enrollment. May be repeated for credit.

Students entering the University of San Diego and/or declaring a major during 2020-2021, should follow information contained in the printed course catalog (also known as the "catalog of record") published on April 1, 2020. Access the catalog of record at https://catalogs.sandiego.edu.

The Computer Science Major (BS)

Preparation for the Major

Required Courses
COMP 110Computational Problem Solving3.5
COMP 120Programming Abstractions and Methodologies 3.5
COMP 230Advanced Computational Problem Modeling 3.5
COMP 280Introduction to Computer Systems3.5
MATH 150Calculus I4
MATH 151Calculus II4
MATH 262Discrete Mathematics3
or MATH 260 Foundations of Higher Mathematics
MATH 320Linear Algebra3
ISYE 330Engineering Probability and Statistics3
Natural Science 16
Total Units37

Major Requirements

Required Core Computer Science Courses
COMP 305Object-Oriented Design and Programming3
COMP 370Automata, Computability and Formal Languages3
COMP 480Algorithms3
COMP 491Senior Project I3
COMP 492Senior Project II3
Systems Courses
Select two of the following courses:7
COMP 300Principles of Digital Hardware
COMP 310Operating Systems
COMP 375Networking
Upper-Division Elective Courses
Select nine upper-division units from the following:9
COMP 340Numerical Analysis
COMP 341Numerical Analysis II
COMP 345Database Management Systems Design
COMP 350Computer Graphics
COMP 360Principles of Programming Languages
COMP 365Principles of Information Security
COMP 380Neural Networks
COMP 382Introduction to Data Mining
COMP 421Embedded Software Development
COMP 422Advanced Embedded Software Development
COMP 494Special Topics in Computer Science
COMP 499Independent Study
CYBR 501Introduction to Cybersecurity Concepts and Tools
CYBR 502Cybersecurity Network Defense
Total Units31

Notes: 
1) At least 15 of the the upper-division units in the the major must be completed at USD.
2) Permission from the chair of computer science and the dean of the Shiley-Marcos School of Engineering is required before enrolling in CYBR 501 or CYBR 502.
3) Students may not receive credit towards their undergraduate degree for both COMP 365 and CYBR 501 or CYBR 502.

Additional Requirements:

All computer science majors must satisfy the core curriculum specified by the university and the Connect Career Readiness Program (https://www.sandiego.edu/engineering/resources/careers/connect). 

Recommended Program of Study: Computer Science (BS)

First Year
Semester IUnits
COMP 110Computational Problem Solving3.5
MATH 150Calculus I4
Core Curriculum9
Semester IIHours
COMP 120Programming Abstractions and Methodologies 3.5
MATH 151Calculus II4
MATH 262Discrete Mathematics3
Core Curriculum6
Second Year
Semester IHours
COMP 280Introduction to Computer Systems3.5
ISYE 330Engineering Probability and Statistics3
Core Curriculum9.5-11.5
Semester IIHours
COMP 230Advanced Computational Problem Modeling 3.5
COMP Systems Course3.5
MATH 320Linear Algebra3
Core Curriculum and Electives6.5-8.5
Third Year
Semester IHours
COMP 305Object-Oriented Design and Programming3
COMP Systems Course or Upper-Division COMP Elective3-3.5
Core Curriculum and Electives9-12
Semester IIHours
COMP 480Algorithms3
COMP Systems Course or Upper-Division COMP Elective3-3.5
Upper-Division COMP Elective3
Core Curriculum and Electives6
Senior Year
Semester IHours
COMP 491Senior Project I3
COMP 370Automata, Computability and Formal Languages3
Core Curriculum and Electives9-12
Semester IIHours
COMP 492Senior Project II3
Upper-Division COMP Elective3
Core Curriculum and Electives9-12

Concentrations in Computer Science (9 - 9.5 units)

Concentrations allow majors to develop a level of depth in a particular area of computer science.  Courses taken toward a concentration may also apply to the upper-division elective requirements of the major.  Concentrations are optional, and so are not required by the computer science major.  Participation in the cyber security concentration requires approval of the chair of computer science and the dean of the Shiley-Marcos School of Engineering.

Concentration in Embedded Software Development
COMP 421Embedded Software Development3
COMP 422Advanced Embedded Software Development3
One of the following courses:3-3.5
COMP 365Principles of Information Security
COMP 375Networking
Total Units9-9.5
Concentration in Cyber Security
CYBR 501Introduction to Cybersecurity Concepts and Tools3
CYBR 502Cybersecurity Network Defense3
One of the following:3-3.5
COMP 375Networking
An additional CYBR course
Total Units9-9.5

Notes: 
1)  Permission from the chair of computer science and the dean of the Shiley-Marcos School of Engineering is required before enrolling in 500-level CYBR courses. 
2) Students applying COMP 375 to the Embedded Software Development, or Cyber Security concentration may not use COMP 375 to also satisfy the systems course requirement in the computer science major.
2) Students completing the Cyber Security concentration by taking nine units of 500-level CYBR classes must be enrolled in the Combined Undergraduate Computer Science and MS in Cyber Security Engineering program at the time the third CYBR course is taken.

Combined BS or BA Computer Science and Master of Science in Cyber Security Engineering (MSCSE) Program

A student who has applied, accepted, and indicated that they will enter the MSCSE program, can apply up to twelve 500-level CYBR units to both their undergraduate degree requirements in Computer Science, and to the requirements of the MSCSE program.  Those units shall include CYBR 501 and CYBR 502, and any of the following CYBR courses: 503, 504, 506, 508, 510, and 512.

The MSCSE program requires 30 units (computer science majors do not need to take a 6-unit course in software, operating systems, and networking fundamentals that would bring the unit count to 36), and MSCSE  students take 6 units per semester.  So a student who completes 12 units as an undergraduate can complete the remaining 18 units in three terms (summer, fall, and spring).  Thus, a student can earn a BS or BA in computer science plus an MS in Cyber Security Engineering in 4 years of undergraduate coursework plus 1 year of graduate coursework.

The Computer Science Major (BA)

Preparation for the Major

Required Courses
COMP 110Computational Problem Solving3.5
COMP 120Programming Abstractions and Methodologies 3.5
COMP 230Advanced Computational Problem Modeling 3.5
COMP 280Introduction to Computer Systems3.5
MATH 150Calculus I4
MATH 260Foundations of Higher Mathematics3
or MATH 262 Discrete Mathematics
Elective Math Course
Select one of the following:3
ISYE 330Engineering Probability and Statistics
MATH 320Linear Algebra
Total Units24

Major Requirements

Required Core Computer Science Courses
COMP 305Object-Oriented Design and Programming3
COMP 480Algorithms3
COMP 491Senior Project I3
COMP 492Senior Project II3
Systems Course
Select one of the following courses:3.5
COMP 300Principles of Digital Hardware
COMP 310Operating Systems
COMP 375Networking
Upper-Division Elective Courses
Select nine upper-division units from the following:9
COMP 340Numerical Analysis
COMP 341Numerical Analysis II
COMP 345Database Management Systems Design
COMP 350Computer Graphics
COMP 360Principles of Programming Languages
COMP 365Principles of Information Security
COMP 370Automata, Computability and Formal Languages
COMP 380Neural Networks
COMP 382Introduction to Data Mining
COMP 421Embedded Software Development
COMP 422Advanced Embedded Software Development
COMP 494Special Topics in Computer Science
COMP 499Independent Study
CYBR 501Introduction to Cybersecurity Concepts and Tools
CYBR 502Cybersecurity Network Defense
Total Units24.5

Notes: 
1)
At least 15 of the upper-division units in the major must be completed at USD.
2) Permission from the chair of computer science and the dean of the Shiley-Marcos School of Engineering is required before enrolling in CYBR 501 or CYBR 502.
3) Students may not receive credit towards their undergraduate degree for both COMP 365 and CYBR 501 or CYBR 502.

Additional Requirements:

All computer science majors must satisfy the core curriculum specified by the university and the Connect Career Readiness Program (https://www.sandiego.edu/engineering/resources/careers/connect). 

Recommended Program of Study: Computer Science (BA)

First Year
Semester IUnits
COMP 110Computational Problem Solving3.5
MATH 150Calculus I4
Core Curriculum9
Semester IIHours
COMP 120Programming Abstractions and Methodologies 3.5
Core Curriculum9
MATH 262
or 260
Discrete Mathematics
Foundations of Higher Mathematics
3
Second Year
Semester IHours
COMP 280Introduction to Computer Systems3.5
ISYE 330
or MATH 320
Engineering Probability and Statistics
Linear Algebra
3
CC9-11.5
Semester IIHours
COMP 230Advanced Computational Problem Modeling 3.5
Core Curriculum and Electives12-14.5
Third Year
Semester IHours
COMP 305Object-Oriented Design and Programming3
COMP Systems Course or Upper-Division COMP Elective3
Core Curriculum and Electives10-12
Semester IIHours
COMP 480Algorithms3
COMP Systems Course or Upper-Division COMP Elective3
Core Curriculum and Electives10-12
Senior Year
Semester IHours
COMP 491Senior Project I3
Upper-Division COMP Elective3
Core Curriculum and Electives9-12
Semester IIHours
COMP 492Senior Project II3
Upper-Division COMP Elective3
Core Curriculum and Electives9-12

Concentrations in Computer Science (9 - 9.5 units)

Concentrations allow majors to develop a level of depth in a particular area of computer science.  Courses taken toward a concentration may also apply to the upper-division elective requirements of the major.  Concentrations are optional, and so are not required by the computer science major.  Participation in the cyber security concentration requires approval of the chair of computer science and the dean of the Shiley-Marcos School of Engineering.

Concentration in Embedded Software Development
COMP 421Embedded Software Development3
COMP 422Advanced Embedded Software Development3
One of the following courses:3-3.5
COMP 365Principles of Information Security
COMP 375Networking
Total Units9-9.5
Concentration in Cyber Security
CYBR 501Introduction to Cybersecurity Concepts and Tools3
CYBR 502Cybersecurity Network Defense3
One of the following:3-3.5
COMP 375Networking
An additional CYBR course numbered CYBR 503 or higher
Total Units9-9.5

Notes: 
1)  Permission from the chair of computer science and the dean of the Shiley-Marcos School of Engineering is required before enrolling in 500-level CYBR courses.
2) Students applying COMP 375 to the Embedded Software Development, or Cyber Security concentration may not also use it to satisfy the systems course requirement in the computer science major.
3) Students completing the Cyber Security concentration by taking nine units of 500-level CYBR classes must be enrolled in the Combined Undergraduate Computer Science and MS in Cyber Security Engineering program at the time the third CYBR course is taken.

Combined BS or BA Computer Science and Master of Science in Cyber Security Engineering (MSCSE) Program

A student who has applied, accepted, and indicated that they will enter the MSCSE program, can apply up to twelve 500-level CYBR units to both their undergraduate degree requirements in Computer Science, and to the requirements of the MSCSE program.  Those units shall include CYBR 501, CYBR 502, and any of the following: CYBR courses: 503, 504, 506, 508, 510, and 512.

The MSCSE program requires 30 units (computer science majors do not need to take a 6-unit course in software, operating systems, and networking fundamentals that would bring the unit count to 36), and MSCSE  students take 6 units per semester.  So a student who completes 12 units as an undergraduate can complete the remaining 18 units in three terms (summer, fall, and spring).  Thus, a student can earn a BS or BA in computer science plus an MS in Cyber Security Engineering in 4 years of undergraduate coursework plus 1 year of graduate coursework.

Students entering the University of San Diego and/or declaring a major during 2020-2021, should follow information contained in the printed course catalog (also known as the "catalog of record") published on April 1, 2020. Access the catalog of record at https://catalogs.sandiego.edu.

The Computer Science Minors

Students wishing to major in another field while also developing competency in the use of computers are encouraged to choose one of the minors described below.

The Minor in Computer Science

The computer science minor is intended for students who have a general interest in the workings and uses of computers. Minimum requirements for the minor in computer science are:

COMP 110Computational Problem Solving3-3.5
or COMP 150 Computer Programming I
COMP 120Programming Abstractions and Methodologies 3-3.5
or COMP 151 Computer Programming II
12 additional units 112
Total Units18-19

Note: Neither COMP 100 nor COMP 498 may be applied toward the requirements for the minor in computer science.

The Minor in Information Science

The information science minor is intended for students who have a special interest in the analysis, design, implementation, and use of computer-based information systems and organizations. Minimum requirements for the minor in information science are:

COMP 110Computational Problem Solving3.5
COMP 120Programming Abstractions and Methodologies 3.5
COMP 230Advanced Computational Problem Modeling 3.5
ITMG 350Management Information Systems3
Nine additional units 19