Phone: (209) 946-2355
Location: John T. Chambers Technology Center
Bachelor of Science in Computer Science
Computer Science Program Educational Objectives
Through their careers in computing or a related profession, Pacific graduates are expected to demonstrate the following within a few years of earning their Bachelor of Science in Computer Science:
- Graduates will employ design skills and technical knowledge that contributes to building or utilizing computing systems in a variety of professional careers.
- Graduates will work effectively in team environments, utilize communication skills, and grow and adapt to a world of evolving technology.
Community college students can transfer to the School of Engineering and Computer Science at any point in their academic program. It is important that each student contact the appropriate Department at Pacific as early as possible and arrange for faculty assistance in planning his or her transfer.
The School of Engineering and Computer Science makes every effort to accommodate the needs of transfer students. Faculty offer advice on programs of study prior to coming to the University and then match student backgrounds with program requirements. Students are encouraged to complete introductory math and science courses prior to entering the program. An introductory object-oriented programming course (C++ or Java) is beneficial for students planning to major in computer science. Check with your program in advance.
Students must complete a minimum of 120 units to earn the Bachelor of Science in Computer Science. Up to four units of ENGR 182 (co-op) or COMP 187 (internship) may be substituted for upper division computing elective units, and up to four units of ENGR 182 or COMP 187 may be applied towards the 120 units required to earn the Bachelor of Science in Computer Science. Up to four units of ENGR 181, ENGR 183, ENGR 184, or ENGR 185 may be applied towards the 120 units required to earn the Bachelor of Science in Computer Science. However, no ENGR 181, ENGR 183, ENGR 184, or ENGR 185 units may be used as computer science elective units.
Bachelor of Science in Computer Science
Students must complete a minimum of 120 units with a Pacific cumulative and major/program grade point average of 2.0 in order to earn the Bachelor of Science in Computer Science.
I. General Education Requirements
For more details, see General Education
Minimum 28 units and 9 courses that include:
A. CORE Seminars (2 courses)
|CORE 001||Problem Solving & Oral Comm||3|
|CORE 002||Writing and Critical Thinking||4|
Note: 1) CORE Seminars cannot be taken for Pass/No Credit. 2) Transfer students with 28 or more transfer credits taken after high school are exempt from both CORE seminars.
B. Breadth Requirement (7 courses, at least 3 units each)
|At least one course from each of the following areas:|
Artistic Process & Creation
Civic & Global Responsibility
Language & Narratives
World Perspectives & Ethics
Note: 1) No more than 2 courses from a single discipline can be used to meet the Breadth Requirement.
C. Diversity and Inclusion Requirement
|All students must complete Diversity and Inclusion coursework (at least 3 units)|
Note: 1) Diversity and Inclusion courses can also be used to meet the breadth category requirements, or major or minor requirements.
D. Fundamental Skills
|Students must demonstrate competence in:|
Quantitative Analysis (Math)
Note: 1) Failure to satisfy the fundamental skills requirements by the end of four semesters of full-time study at the University is grounds for academic disqualification.
II. Major Requirements
|Mathematics and Science|
|15 units in mathematics and 8 units in laboratory science. COMP 047, COMP 147 and ECPE 127 count as mathematics units.|
|COMP 147||Computing Theory||4|
|Select one of the following:||4|
|Discrete Math for Computer Science|
|Discrete and Combinatorial Mathematics|
|Select one of the following:||3-4|
|Introduction to Statistics and Probability|
|Probability with Applications to Statistics|
|Select one of the following:||4|
|Introduction to Finite Mathematics and Calculus|
|Select two of the following natural science courses that include laboratory work:||8-10|
|BIOL 051||Principles of Biology||5|
|BIOL 061||Principles of Biology||5|
|BIOL 074||Biology of Insects||4|
|BIOL 079||California Flora||4|
|CHEM 023||Elements of Chemistry||4|
|CHEM 024||Fundamentals of Chem||4|
|CHEM 025||General Chemistry||5|
|CHEM 027||General Chemistry||5|
|GESC 043||Environmental Science for Informed Citizens||4|
|GESC 047||Introduction to Oceanography||4|
|GESC 051||Dynamic Planet||4|
|GESC 053||Earth and Life Through Time||4|
|GESC 061||Geology of California||4|
|GESC 065||Regional Geology||4|
|PHYS 023||General Physics I||5|
|PHYS 025||General Physics II||5|
|PHYS 053||Principles of Physics I||5|
|PHYS 055||Principles of Physics II||5|
|Computer Science Core|
|COMP 051||Introduction to Computer Science||4|
|COMP 053||Data Structures||4|
|COMP 055||Application Development||4|
|COMP 141||Programming Languages||4|
|COMP 157||Design and Analysis of Algorithms||4|
|COMP 173||Operating Systems||4|
|COMP 195||CS Senior Project||4|
|ECPE 170||Computer Systems and Networks||4|
|ENGR 010||Dean's Seminar||1|
|ENGR 025||Professional Practice Seminar||1|
|ENGR 030||Engineering and Computing Ethics in Society||3|
|Select one of the following security courses:|
|COMP 175||System Administration and Security||3|
|COMP 178||Computer Network Security||3|
III. Computer Science Electives and Areas of Concentration
Students complete their degree with 17 additional units of approved upper division Computing Electives, beyond the Computer Science Core courses, which students select in consultation with their academic advisor. These courses may include 100-level COMP courses and no more than one course from BENG 175, ECPE 172, ECPE 173, ECPE 174, and EMGT 162. Up to four units of ENGR 182 or COMP 187 may be substituted for upper division computing elective units.
Computer Science Courses
COMP 025. Computers and Information Processing. 4 Units.
COMP 041. Great Ideas in Computing. 4 Units.
This course is a broad introduction to the field of computing. The concepts that are the foundation of computing are presented and placed in historical context. Discussion topics include the ways of thinking and working that make computing effective, and the future of the field. Example topics include number representation, architecture of computing systems, intelligent computing systems, and the use of computing in art and games. Prerequisite: Fundamental Math Skills requirement. (GE3C, GEQR)
COMP 047. Discrete Math for Computer Science. 4 Units.
This course is designed to develop skills in deductive reasoning and to apply concepts of discrete mathematics to computer science. Topics include logic, deductive reasoning, introduction to analysis of algorithms, mathematical induction, set theory, functions, recurrence relations, combinatorics and probability, graphs, and trees. Prerequisite: Fundamental Math Skills requirement. (GE3B, GEQR)
COMP 051. Introduction to Computer Science. 4 Units.
The course emphasizes program design and problem solving techniques that use a high-level programming language. The course introduces basic concepts such as assignment, control flow, iteration, and basic data structures in addition to a supervised lab. Credit for this course is not given if a student has credit for COMP 061. Prerequisite: Fundamental Math Skills requirement. (GE3B, GEQR)
COMP 053. Data Structures. 4 Units.
The course continues the development of program design and problem solving techniques. Topics include development of fundamental data structures and their associated algorithms as well as array-based algorithms, recursion, lists, generics, dynamic memory, binary trees, and associative structures. Prerequisite: COMP 051 or COMP 061 with a "C-" or better.
COMP 055. Application Development. 4 Units.
This course develops the skills and techniques required for the creation of contemporary software applications. Contemporary software applications are complex systems that involve the interaction of multiple subsystems that require teams of developers working together for extended periods of time. Topics include teamwork and communication skills, current development methodologies, analysis and design documentation and the use of libraries. This course is intended to prepare students to transition to upper division courses. Prerequisites: Completion of all Fundamental Skills and COMP 053 with a "C-" or better.
COMP 061. Introduction to Programming for Data Science. 4 Units.
This course introduces programming concepts and program design using topics in data science as examples. Basic concepts such as assignment, control flow, iteration, and simple as well as object-oriented data types and structures are developed. The course includes a supervised lab. Credit for this course is not given if student has credit for COMP 051. Prerequisite: Fundamental Math Skills requirement. (GE3B, GEQR)
COMP 093. Special Topics. 3 or 4 Units.
COMP 127. Web Applications. 4 Units.
The World-Wide Web consists of client-server applications operating over the Internet. This course introduces the skills and techniques for designing and developing web applications. Topics include: client-server architectures, web servers and web browsers, server-side programming, client-side programming, form processing, state management and multimedia. Prerequisites: Completion of all Fundamental Skills and COMP 053 with a "C-" or better or permission of instructor. (Fall, even years).
COMP 129. Software Engineering. 4 Units.
Students gain practical experience in dealing with medium to large scale software systems. Students learn how current analysis and design methodologies are used to develop the abstractions necessary to understand large systems. Students also learn how such methodologies and abstractions are used to communicate with coworkers and clients about the analysis and design. Because communication is an essential skill in large system development, students are expected to produce documents and presentations of professional quality and depth. Prerequisites: Completion of all Fundamental Skills and COMP 055 with a "C-" or better. (Spring, every year).
COMP 135. Human-Computer Interface Design. 3 Units.
Human-Computer Interface (HCI) Design focuses on the relationship between humans and computers or other physical devices. This course helps students develop an understanding of the common problems in designing these interfaces and presents a set of design techniques to ensure that designs are both useful and useable. Prerequisite: Completion of all Fundamental Skills. Junior standing. (Spring, every year).
COMP 137. Parallel Computing. 3 Units.
Parallel computing is a science which solves a large problem by giving small parts of the problem to many computers to solve and then combining the solutions for the parts into a solution for the problem. This course introduces architectures and implementation techniques to support parallel computation. Students are expected to design and implement an original parallel application as a term project. Prerequisite: Completion of all Fundamental Skills and COMP 053 with a "C-" or better. Corequisite: ECPE 170. (Spring, every year).
COMP 141. Programming Languages. 4 Units.
Topics in evaluation, design, and development of programming languages. Topics include type systems, variables and scope, functions, parameter passing, data hiding and abstractions, recursion, memory allocation, grammars and parsing, compiler architecture, programming paradigms, and comparison of programming languages and environments. Prerequisites: Completion of Fundamental Skills and COMP 053 with a "C-" or better.
COMP 147. Computing Theory. 4 Units.
Students study automata, formal languages and computability. Topics include finite state automata, regular languages, pushdown automata, context-free languages, Turing machines; decidability, reducibility, and time complexity that includes NP-completeness and intractability. Prerequisites: Completion of all Fundamental Skills; COMP 047 or ECPE 071 or MATH 074 with a "C-" or better.
COMP 151. Artificial Intelligence. 3 Units.
Students study fundamental concepts, techniques and tools used in Artificial Intelligence. Topics include knowledge representation, search techniques, machine learning and problem solving strategies. Also listed as ECPE 151. Prerequisites: Completion of all Fundamental Skills and COMP 053 with a “C-“ or better. (Fall, odd years).
COMP 153. Computer Graphics. 3 Units.
An introduction to two and three dimensional computer graphics. Basic representations and mathematical concepts, object modeling, viewing, lighting and shading. Programming using OpenGL and other computer graphics applications. Also listed as ECPE 153. Prerequisites: Completion of all Fundamental Skills and COMP 053 with a "C-" or better. (Fall, even years).
COMP 155. Computer Simulation. 4 Units.
This course explores digital simulation, in which a model of a system is executed on a computer. The course focuses on modeling methodologies, mathematical techniques for implementing models, and statistical techniques for analyzing the results of simulations. Students develop simulations using both simulation development toolkits and general-purpose programming languages. Also listed as EMGT 155. Prerequisites: Completion of all Fundamental Skills; MATH 037 or MATH 039; MATH 045 or MATH 051, COMP 051 or ENGR 019 with a "C-" or better. (Fall, even years).
COMP 157. Design and Analysis of Algorithms. 4 Units.
Topics for this course include complexity analysis, algorithms for searching, sorting, pattern matching, combinatorial problems, optimization problems, backtracking, algorithms related to number theory, graph algorithms, and the limitations of algorithm power. Prerequisites: Completion of all Fundamental Skills; COMP 047 or MATH 074; COMP 053; MATH 045 or MATH 051 with a "C-" or better.
COMP 159. Computer Game Technologies. 4 Units.
This course surveys the technologies and processes used for modern video game development. Course topics include software engineering, media creation and management, hardware interfaces, user interaction, 3D mathematics and common algorithms and data structures to support graphics, physics and artificial intelligence. Prerequisite: Completion of all Fundamental Skills and COMP 055 with a "C-" or better. (Fall, odd years).
COMP 162. Data Analytics Programming. 4 Units.
This course develops programming skills for computational data analysis. The course emphasizes programming for statistical analysis, machine learning and predictive modeling. Other topics include programming packages for handling, preparation, and manipulation of data, as well as visualization tools for exploration and presentation of data and results. The course emphasizes hands-on data and analysis using a variety of real-world data sets and analytical objectives. Prerequisites: Completion of all Fundamental Skills; COMP 051 or COMP 061.
COMP 163. Database Management Systems. 4 Units.
A database management system (DBMS) is a computer application designed for the efficient and effective storage, access and update of large volumes of data. This course looks at such systems from two perspectives. The user-center perspective focuses on how a DBMS is used to build support for a data intensive application. This perspective includes examination of common data models, query languages and design techniques. The system implementation perspective focuses on the policies, algorithms and data structures used to design and implement a DBMS. Prerequisites: Completion of all Fundamental Skills and COMP 053 with a "C-" or better. Corequisite: COMP 047 or MATH 074. (Spring, every year).
COMP 173. Operating Systems. 4 Units.
Students are introduced to the fundamental concepts of modern operating systems. Topics include an overview of computer architecture and organization, process management, threads, and CPU scheduling. Students also study process synchronization that uses primitive and high-level languages, virtual memory management, file systems, system protection, and parallel and distributed computing. Prerequisites: Completion of all Fundamental Skills; COMP 053; COMP 175 or ECPE 170 with a "C-" or better or permission of instructor.
COMP 175. System Administration and Security. 3 Units.
This course provides an introduction to system administration of modern network servers and applications. Techniques to provide for data confidentiality, integrity, and availability are presented, both at the network security level and host security level, in order to resist common attacks and vulnerabilities. Topics include virtualization methods, resource provisioning in a cloud environment, command-line usage, installation and configuration of common network applications, containerized application deployment, password security and auditing, network configuration and firewalls, scripting, change management, and IT automation tools. Prerequisites: Completion of all fundamental skills and familiarity with console-based operating systems commands. Junior Standing.
COMP 177. Computer Networking. 4 Units.
Topics examined in this course include computer networks and the internet, LAN and WAN architectures, and packet switched networks and routing. Students learn about the 7-layer OSI model and internet protocol stack, socket programming and client/server systems, wireless and security. The course includes a laboratory. Also listed as ECPE 177. Prerequisites: Completion of all Fundamental Skills; COMP 053 and ECPE 170 with a "C-" or better. Junior or Senior standing. (Fall, every year).
COMP 178. Computer Network Security. 3 Units.
This course is an examination of computer security from a defensive and offensive perspective. Topics include attack methods used by threat actors (including scanning, exploits, privilege escalation, malware, and social engineering methods), their detection, and their prevention by network and host-based techniques. Additionally, cryptographic techniques are introduced in order to provide secure communications channels that guarantee message confidentiality, authenticity, and integrity. Prerequisites: Completion of all Fundamental Skills and ECPE 170 or COMP 175 with a “C-“ or better.
COMP 187. Internship in Computer Science. 1-4 Units.
This internship course offers cooperative employment in a professional computer science environment. The internship requires satisfactory completion of the work assignment and written reports. Prerequisites: Completion of all Fundamental Skills; COMP 055 and ENGR 025 with a "C-" or better. Grading is Pass/No Credit only.
COMP 191. Independent Study. 1-4 Units.
Students create student-initiated projects that cover topics not available in regularly scheduled courses. A written proposal that outlines the project and norms for evaluation must be approved by the department chairperson.
COMP 195. CS Senior Project. 4 Units.
In this course, students synthesize their cumulative computer science knowledge through the development of a computer application. Students will establish design objectives and criteria, analyze solution alternatives and evaluate design performance. Students will then implement, test and evaluate the system. Results will include analysis and design documents, the implemented system, test reports and a presentation and demonstration of the project. Prerequisites: Completion of all Fundamental Skills, Senior Standing, COMP 055 with a “C-“ or better.
COMP 197. Undergraduate Research. 1-4 Units.
Students conduct supervised research that contributes to current active topics in Computer Science. Topics may be selected by the student, related to faculty research, or provided by industrial sponsors. Permission of Undergraduate Research Coordinator.
Students who complete the Bachelor of Science in Computer Science will have acquired the ability to:
- Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
- Communicate effectively in a variety of professional contexts.
- Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
- Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
- Apply computer science theory and software development fundamentals to produce computing-based solutions.
Computer Science Faculty
Michael Doherty, Associate Dean and Associate Professor of Computer Science, 1998, BS Electrical Engineering, University of Florida, 1983; MS Computer Science, University of Rhode Island, 1992; PhD Computer Science, University of Colorado at Boulder, 1998. Computer animation, simulation, video game technology, database management systems, programming languages, computer science education.
Chadi El Kari, Chair and Associate Professor of Computer Science, 2014, BS Computer Engineering, Université Saint Joseph 2002; MS Computer Science and Engineering, University of Connecticut, 2005; PhD Computer Science and Engineering, University of Connecticut, 2011. Distributed systems, cloud computing, cryptography, combinatorial optimization.
Sepehr Amir-Mohammadian, Assistant Professor of Computer Science, 2017, BE Information Technology, Amirkabir University of Technology, 2009; ME Information Technology, Amirkabir University of Technology, 2011; PhD Computer Science, University of Vermont, 2017. Cybersecurity, programming languages, software security assurance.
Cathy Carlson, Lecturer, 2008, BS, University of the Pacific, 2004; MBA, University of the Pacific, 2005. Business application training and implementation; lead tracking, generation and analytic software; website design.
Daniel Cliburn, Professor of Computer Science, 2006, BS Computer Science and Mathematics, Illinois College, 1997; MS Computer Science, University of Kansas, 1999; PhD Computer Science, University of Kansas, 2001; MA Curriculum and Instruction, University of the Pacific, 2010. Computer graphics, human-computer interaction, virtual reality, computer science education.
Sebastian Dziallas, Assistant Professor of Computer Science, 2022, BS Engineering with a Concentration in Computing, Olin College of Engineering, 2014; PhD Computer Science, University of Kent, 2019. Computer science education, human-computer interaction.
Jinzhu Gao, Professor of Computer Science, 2008, BS Computer Science and Engineering, Huazhong University of Science and Technology, 1995; MS Mechanical Engineering, Huazhong University of Science and Technology, 1998; PhD Computer and Information Science, The Ohio State University, 2004. Intelligent data visual analytics, data-intensive computing, web and mobile development.
Osvaldo Jimenez, Associate Professor of Computer Science, 2013, BS Computer Science, Stanford University, 2002; MA Learning, Design, & Technology, Stanford University, 2003; PhD Learning Sciences & Technology Design, Stanford University, 2013. Educational games, video game development, software engineering, human-computer interaction, computer science education.
Houman Kamran, Assistant Professor, 2020, BE Computer Engineering, Sharif University of Technology, 2006; MS Computer Science, Southern University and A&M College, 2009; PhD Computer Engineering, Louisiana State University, 2017. Image processing, computer vision, machine learning and pattern recognition.
Julia Olivieri, Assistant Professor of Computer Science, 2022, BA Mathematics and Biology, Oberlin College, 2016; MS Computational and Mathematical Engineering, Stanford University, 2022; PhD Computational and Mathematical Engineering, Stanford University, 2022. Computational biology, data analytics, algorithms, discrete math.
Jeffrey Shafer, Associate Professor, 2010, BS, Computer Engineering, University of Dayton, 2002; MS, Electrical Engineering, University of Dayton, 2004; PhD, Electrical and Computer Engineering, Rice University, 2010; Computer architecture, network systems architecture, data-intensive computing, cloud computing, virtualization.
Afsoon Yousefi-Zowj, Lecturer, 2018, AS Computer Science, Technical Collage of Shiraz, 2006; BE Computer Engineering, Shariaty Technical University, 2008; MS Computer Networks, Amirkabir University of Technology, 2012; MS Computer Science, University of Vermont, 2016; Data analytics, machine learning, sensor networks, mobile development.