catalog header

Course Catalog

Computer Science and Computer Science & Computational Thinking

Chairperson: Paul De Palma
Professors: S. Bowers, P. De Palma, K. Yerion (Emerita) 
Associate Professors: D. Hughes (Emeritus), G. Sprint, Y. Zhang
Assistant Professors: A. Crandall, D. Olivares
Lecturers: B. Fischer 

The Department of Computer Science offers two degrees and three concentrations and minors:

The Bachelor of Science in Computer Science (BSCS) is intended for students whose primary interest is the development and exploration of computer software.  It is a technical degree requiring considerable mathematics and science.  The Bachelor of Arts in Computer Science and Computational Thinking (BACSCT) serves those students with an interest in computing who would also like to study broadly in the humanities, the social sciences, or the natural sciences.  It is a liberal arts-focused degree requiring coursework in one of nine approved disciplines.

The concentrations and minors with the same name have identical requirements.  The concentrations allow students pursuing the BSCS or BACSCT degrees to specialize.  The minors allow students pursuing other degrees to study computer science. 

Faculty expertise and research interests span a wide range of computer science topics, including networks, machine learning, artificial intelligence, human language processing, computer graphics, database systems, and computer security.  Select students can participate in research projects directly with a faculty mentor through independent study courses, a senior thesis, or as a member of a professor’s research group.  Students are encouraged to pursue summer research or industry-sponsored internships.  Many Computer Science students secure summer research funding through the National Science Foundation’s Research Experience for Undergraduates program.  Others intern in the computer industry, some with companies that regularly work with the Department of Computer Science.

The Department of Computer Science, housed in the new Bollier Center for Integrated Science and Engineering, runs multiple labs and servers:

  • Windows and Linux labs for general computing
  • A student projects lab
  • A dedicated cybersecurity lab
  • A faculty/student collaborative research lab
  • A high-performance server for data-intensive research
  • Multiple general-purpose Linux servers available for student and faculty work

The department sponsors several student organizations, including the Women in Computing club, the GU Makers and Developers club, chapters of Upsilon Pi Epsilon, an honor society, and the Association for Computing Machinery (ACM), a professional association of computer scientists.  Computer Science students also participate in programming contests and hackathon events.  Many Computer Science students are also active in the GU Robotics club.

Computer Science majors can graduate with departmental honors if they have fulfilled all computer science degree requirements (either BSCS or BACSCT), achieved a grade point average of at least 3.50 in their computer science courses, and written a senior thesis under the supervision of a Computer Science faculty member while successfully completing CPSC 495 and 496.

 
Lower Division
CPSC 105 Great Ideas in Comp Sci
3.00 credits
Computer science is the study of what is computable. Students will be introduced to computing technologies and learn how these technologies are applied in today's world. The course will focus on the relationship between computation, technology, and society. Topics could include robotics, artificial intelligence, bio-computing, media computing, technology from the movies, and technology and art. On sufficient demand.
CPSC 107 User Centered Web Site Design
3.00 credits
Introduction to quality design principles and user-centered development techniques used in creating a web site. Topics will include human-computer interaction, graphical design, prototyping, and introduction to web programming. On sufficient demand.
CPSC 110 Special Topics for Non Majors
1.00- 3.00 credits
Computer Science topics of special interest to students majoring in other disciplines. Sample topics include principles of programming, web programming, and media computing. May not be counted towards a major in Computer Science. On sufficient demand.
CPSC 121 Computer Science I
3.00 credits
Techniques of problem-solving and algorithmic development. An introduction to programming. Emphasis is on how to design, code, debug, and document programs using good programming style. Fall and Spring.
CPSC 122 Computer Science II
3.00 credits
A continuation of CPSC 121. An examination of dynamic memory management and recursion; an introduction to basic data structures and algorithmic analysis. Fall and Spring.
Prerequisite:
CPSC 121 Minimum Grade: D
CPSC 190 Directed Study
1.00- 3.00 credits
Topic to be decided by faculty.
CPSC 211 Algorithmic Art
3.00 credits
Algorithmic Art sits at the intersection of mathematics, programming, algorithms, and art. The primary goal of the course is to teach computational thinking to liberal arts students. Student motivation is achieved by presenting programming and math concepts in the context of the visual arts. The assignments use the programming environment called Processing which was developed specifically for visual artists. On sufficient demand.
Equivalent:
ITEC 211 - OK if taken since Fall 2011
CPSC 212 Computational Modeling
3.00 credits
This course introduces students to the modeling process and computer simulations. It considers two major approaches: system dynamics models and agent-based models. A variety of software tools will be explored. Applications will be chosen from ecology, medicine, chemistry, biology, and others. On sufficient demand. Prerequisite: CPSC 121
Prerequisite:
CPSC 121
Equivalent:
ITEC 212 - OK if taken since Fall 2011
CPSC 213 Special Topics
3.00 credits
Topic to be determined by instructor.
CPSC 214 Special Topics
3.00 credits
Topic to be determined by instructor.
CPSC 215 Special Topics
3.00 credits
CPSC 222 Introduction to Data Science
3.00 credits
This course provides an introduction to the underlying ideas, concepts, and techniques used in data science. Students gain skills in statistical and computational thinking, and their practical application to real-world, data-driven problem solving and decision making. The course teaches important concepts and skills in both statistical reasoning and computer programming for the purpose of analyzing real-world data sets. Examples are drawn from diverse areas such as economics, social science, health and wellness, climate science, and education. Students gain experience using the Python programming language, Python’s standard libraries for data science applications and computational notebooks (e.g., using Jupyter). The course also raises important social questions concerning privacy, social inequality, and professional ethics related to data science and its applications. Fall & Spring. Prerequisite: CPSC 121
Prerequisite:
CPSC 121 Minimum Grade: D or ENSC 192 Minimum Grade: D
CPSC 223 Algorithm&Abstract Data Struct
3.00 credits
Algorithm analysis using Big-O notation, sorting, heaps, balanced binary search trees, and hash tables. Fall and Spring. Prerequisites: CPSC 122 and MATH 231. MATH 231 may be taken concurrently with CPSC 223.
Prerequisite:
CPSC 122 Minimum Grade: D and MATH 231 Minimum Grade: D and MATH 231 Minimum Grade: D
CPSC 224 Software Development
3.00 credits
This course covers topics in object-oriented programming, user-interface design and development, and software construction including program design, development tools, and basic concepts in software engineering. Students work on hands-on development assignments and projects throughout the semester. Fall and Spring.
Prerequisite:
CPSC 122 Minimum Grade: D
CPSC 260 Computer Organization
3.00 credits
This course covers basic topics in the design of modern computer systems. Topics include digital logic, computer system components, machine-level code, memory organization and management, computer arithmetic, assembly-language programming, and basic connections between high-level and low-level languages (C and assembly). This course also serves as a foundation for courses on networking. security, operating systems, and computer architecture, where a deeper understanding of systems-level issues is required. Fall and Spring. **** Students who have taken and received credit for CPEN 231 may not also receive credit for CPSC 260. *****
Prerequisite:
CPSC 122 Minimum Grade: D
CPSC 290 Directed Reading
.00- 3.00 credits
Individual exploration of a topic not normally covered in the curriculum.
Upper Division
CPSC 310 Special Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
Prerequisite:
CPSC 122 Minimum Grade: D
CPSC 311 Special Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
Prerequisite:
CPSC 122 Minimum Grade: D
CPSC 312 Special Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
Prerequisite:
CPSC 122 Minimum Grade: D
CPSC 313 Special Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
Prerequisite:
CPSC 122 Minimum Grade: D
CPSC 314 Special Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
Prerequisite:
CPSC 122
CPSC 315 Special Topics
1.00- 3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand. Prerequisite: CPSC 223
Prerequisite:
CPSC 223 Minimum Grade: D
CPSC 321 Database Management Systems
3.00 credits
Introduction to relational database concepts and techniques. Topics include the relational model, database design, SQL, transactions, file and index organization, and using databases within software applications, Fall. Prerequisite: CPSC 122 or CPSC 222
Equivalent:
CPSC 421 - OK if taken since Fall 2016
CPSC 322 Data Science Algorithms
3.00 credits
This course provides a detailed overview of the processes and techniques used in creating data science applications. Emphasis is placed on popular algorithms for the analysis, classification, and mining of relational data. Students learn to implement data science algorithms and techniques over real-world data sets through assignments and projects in Python. Topics include data preparation and cleaning, summary statistics, basic data visualization techniques, feature selection, discretization, k nearest neighbors, naive bayes, decision trees, ensemble methods, apriori rule mining, and k-means clustering. Fall. Prerequisite: CPSC 122 or CPSC 222
CPSC 323 Machine Lrng & Intllgnt Systms
3.00 credits
This course provides a detailed overview of topics in machine learning with an emphasis on algorithms and techniques for unstructured and complex data sets. Students implement and apply machine learning algorithms to examples drawn from time series, image, audio, textual, and numerical data. Topics include regression analysis, support vector machines, genetic algorithms, neural networks and heuristic search. Concepts and issues in building intelligent systems and the role of machine learning are also discussed. Fall.
Prerequisite:
CPSC 322 Minimum Grade: D or CPSC 223 Minimum Grade: D
CPSC 324 Big Data Analytics
3.00 credits
This course covers tools and techniques used in applying statistical and machine learning approaches to large, real-world data sets. Through hands-on assignments and projects, students learn popular programming models and toolkits for performing large-scale data analyses. The course also explores distributed and high-performance frameworks that can be used in data-intensive applications for filtering, clustering, and classifying data. Advanced analytic approaches discussed include data sketching, principal component analysis, recommendation algorithms, topic modeling, Bayesian networks, and deep learning. Spring - even years.
Prerequisite:
CPSC 321 Minimum Grade: D and CPSC 223 Minimum Grade: D or CPSC 322 Minimum Grade: D
CPSC 325 Data Science Project Lab
3.00 credits
This course provides an overview of how to design a data science system and deploy the system into a production environment. Students complete a semester-long project that involves researching a data science problem, proposing a solution to the problem, implementing the solution, and deploying the solution as a hosted web application. Emphasis is placed on working with web-based application programming interfaces, gathering and processing data, researching and implementing common machine algorithms for data mining and classification, and securely deploying models in the cloud. Spring, odd years.
Prerequisite:
CPSC 322 Minimum Grade: D or CPSC 323 Minimum Grade: D
CPSC 326 Organization of Program Langs
3.00 credits
Examination of the structures and concepts of procedural, functional, and logic-based programming languages. Spring.
Prerequisite:
CPSC 223 Minimum Grade: D
CPSC 331 UI/UX Design
3.00 credits
Exploration of theories and principles related to human-computer interaction, user experience design, and user interface design. Development of techniques and practices for designing and evaluating software usability. Spring.
Prerequisite:
CPSC 122 Minimum Grade: D
CPSC 332 Web Development
3.00 credits
Techniques of web-based software application development. Introduces programming languages and frameworks for web programming. Emphasis on web programming basics using well-established approaches including the basics of full-stack web development. Fall.
Prerequisite:
CPSC 122 Minimum Grade: D
CPSC 333 Mobile App Development
3.00 credits
This course provides an introduction to mobile application development. The primary aim of this course is to provide students with a thorough introduction to designing and building native and/or cross-platform apps for mobile devices. The platform, frameworks/libraries, and development tools used in this course vary and are dependent on the current demand in industry. Topics include object-oriented programming, design patterns, user interface design and implementation, data storage, working with application programming interfaces, threading, camera and photos, and location and maps. Additional topics are covered based on trending mobile app features. Fall.
Prerequisite:
CPSC 122 Minimum Grade: D
CPSC 334 Linux and DevOps
3.00 credits
This course covers topics of using and managing Linux OSes from the command line, virtual machines, containers, DevOps philosophy, continuous integration, continuous deployment, and Git. Students work on hands-on development assignments and projects throughout the semester. Spring.
Prerequisite:
CPSC 224 Minimum Grade: D
CPSC 341 Internet of Things
3.00 credits
The Internet of things (IoT) is the network of physical devices, buildings (smart building), furniture (smart home), vehicles (smart transportation), and many others. In this class, students will learn key technologies in IoT and obtain hands-on experience by building IoT devices. A substantial part of the material will cover IoT applications, IoT architecture, embedded systems, network protocols, sensor networks, and IoT security. Students will also work on research projects related to IoT applications, design, and security. Spring - odd years.
Prerequisite:
CPSC 122 Minimum Grade: D
CPSC 346 Operating Systems
3.00 credits
Study of operating systems internals. Topics include concurrent programming, memory management, file system management, scheduling algorithms, and security. Fall.
Prerequisite:
CPSC 122 Minimum Grade: D and CPSC 260 Minimum Grade: D or (CPEN 231 Minimum Grade: D and CPEN 231L Minimum Grade: D)
CPSC 348 Computer Security
3.00 credits
Study of security and information assurance in stand-alone and distributed computing. Topics include ethics, privacy, access control methods and intrusion detection. Spring.
Prerequisite:
CPSC 223 Minimum Grade: D and CPSC 260 Minimum Grade: D or (CPEN 231 Minimum Grade: D and CPEN 231L Minimum Grade: D)
Equivalent:
CPSC 448 - Taken before Spring 2020
CPSC 349 Cybersecurity Project Lab
3.00 credits
Hands-on cybersecurity studies using a cyber range. Students, working in teams, engage in mission-specific virtual environments using real-world tools, network activity, and a library of cyber-threat scenarios. On sufficient demand.
Prerequisite:
CPSC 260 Minimum Grade: D or (CPEN 231 Minimum Grade: D and CPEN 231L Minimum Grade: D)
CPSC 351 Theory of Computation
3.00 credits
Study of automata, languages, and computability theory. Regular grammars, finite state automata, context-free grammars, pushdown automata, Turing machines, decidable and undecidable problems, and problem reduction. Fall, odd years. Prerequisite(s): CPSC 122 and (MATH 231 or MATH 301)
CPSC 353 Applied Cryptography
3.00 credits
Topics include classical cryptosystems, block ciphers, public key cryptosystems, key exchange protocols, and hash functions. Fall. PreRequisite(s): CPSC 122 and (MATH 231 or MATH 301)
Prerequisite:
CPSC 223 Minimum Grade: D or MATH 301 Minimum Grade: D
CPSC 390 Directed Study
1.00- 3.00 credits
Topic to be decided by faculty.
CPSC 410 Advanced Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
Prerequisite:
CPSC 223 Minimum Grade: D
CPSC 411 Advanced Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
Prerequisite:
CPSC 223 Minimum Grade: D
CPSC 412 Advanced Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
Prerequisite:
CPSC 223 Minimum Grade: D
CPSC 413 Advanced Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
Prerequisite:
CPSC 223 Minimum Grade: D
CPSC 414 Advanced Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
Prerequisite:
CPSC 223 Minimum Grade: D
CPSC 415 Advanced Topics
3.00 credits
Topics that reflect the current interests and expertise of the faculty. On sufficient demand.
CPSC 425 Computer Graphics
3.00 credits
Introduction to the use of graphics primitives within a higher level language to produce two and three-dimensional images; underlying mathematical operations used to implement standard graphics packages; practical experience with current graphics systems. Spring - odd years.
Prerequisite:
CPSC 223 Minimum Grade: D and MATH 231 Minimum Grade: D
CPSC 431 Computer Hrdwr Dsg & Achtr
3.00 credits
Understanding the design techniques, machine structures, technology factors, and evaluation methods that will determine the form of computers in 21st century.
Prerequisite:
CPSC 260 Minimum Grade: D or CPEN 231 Minimum Grade: D
CPSC 435 Parallel & Cloud Computing
3.00 credits
Parallel Programming platforms; principles of parallel algorithm design; basic communication operations; programming using the message-passing paradigm (MPI); programming on shared address space platforms (POSIX Thread and OpenMP); cloud computing; big data analysis; and other advanced topics. On sufficient demand.
Prerequisite:
CPSC 260 Minimum Grade: D or (CPEN 231 Minimum Grade: D and CPEN 231L Minimum Grade: D)
Equivalent:
CPEN 435 - Successful completion
CPSC 436 Biomedical Informatics&Comput
3.00 credits
Investigation of the role of computers in the provision of medical services; machine learning algorithms for regression, classification, clustering, and anomaly detection; medical decision-making support; genomic medicine and its techniques. On sufficient demand.
Prerequisite:
CPSC 260 Minimum Grade: D or (CPEN 231 Minimum Grade: D and CPEN 231L Minimum Grade: D)
Equivalent:
CPEN 436 - Successful completion
CPSC 447 Computer Networks
3.00 credits
Study of main components of computer communications and networks; communication protocols; routing algorithms; machine addressing and network services. Spring - even years.
Prerequisite:
CPSC 223 Minimum Grade: D and CPSC 260 Minimum Grade: D or (CPEN 231 Minimum Grade: D and CPEN 231L Minimum Grade: D)
CPSC 450 Design & Analysis-Comp Algorim
3.00 credits
Advanced study of computer algorithms not covered in CPSC 223 along with principles and techniques of computational complexity. Topics could include dynamic programming, B-trees, minimum spanning trees, Floyd and Warshall algorithms, various string matching algorithms, computational geometry, exponential growth of round-off errors, NP-completeness and reducibility. Fall - even years.
Prerequisite:
CPSC 223 Minimum Grade: D and MATH 231 Minimum Grade: D
CPSC 455 Chaos & Dynamical Systems
3.00 credits
Introduction to the study of discrete nonlinear dynamical systems and their chaotic behavior. The course will focus on investigation s through computer experiments- both numerical and graphical- and the corresponding mathematical analysis of the observed behavior. A significant portion of the course will be devoted to designing graphics programs. In the humanistic tradition of Gonzaga, students will also learn the historical development of the modern science of chaotic dynamical systems. Spring - even years.
CPSC 475 Speech&NaturalLangProcessing
3.00 credits
Computational approaches to language processing: text normalization, N-grams, sentiment classification, part-of-speech tagging, parsing, semantic analysis, and applied phonetics. Spring - odd years.
Prerequisite:
CPSC 223 Minimum Grade: D or CPSC 322 Minimum Grade: D
CPSC 482 Data Intensive Systems
3.00 credits
This course covers tools and techniques used in applying statistical and machine learning approaches to real-world data sets. Through hands-on assignments and projects, students learn relevant architectures, programming models, and tools related to data modeling and storage, extract-transform-load (ETL) processes, data warehousing, and data pipeline creation and management. The course also explores scalable, distributed, and cloud-based approaches used in data-intensive applications for accessing, filtering, clustering, and classifying data.
Prerequisite:
(CPSC 223 Minimum Grade: D or CPSC 322 Minimum Grade: D) and CPSC 321 Minimum Grade: D
CPSC 490 Directed Reading
1.00- 3.00 credits
Individual exploration of a topic not normally covered in the curriculum. Arrangement with an instructor.
CPSC 491 Software Engineering
2.00 credits
A survey of approaches used in software engineering focusing on software development processes, requirements engineering, estimation, scheduling, risk analysis, testing, version control, and project management. Students apply the techniques and practices learned in their senior design projects, including the development of a detailed project plan and a functional software prototype. Fall.
Prerequisite:
CPSC 223 Minimum Grade: D and CPSC 224 Minimum Grade: D
Concurrent:
CPSC 491L CPSC 499
CPSC 491L Senior Design Project Lab I
1.00 credit
First semester of a two semester senior design project in which students work in teams to develop a large software product. Teams meet weekly with their faculty project advisors. Fall.
Prerequisite:
CPSC 223 Minimum Grade: D and CPSC 224 Minimum Grade: D
Concurrent:
CPSC 491 CPSC 499
CPSC 492L Senior Design Project Lab II
3.00 credits
Second semester of a two semester senior design project in which students work in teams to develop a large software product. Teams meet weekly with their faculty project advisors. Spring.
Prerequisite:
CPSC 491 Minimum Grade: D and CPSC 491L Minimum Grade: D
CPSC 495 Thesis I
1.00 credit
First of a two semester senior thesis project. Requires arrangement with a faculty supervisor.
CPSC 496 Thesis II
1.00 credit
Second of a two semester senior thesis project. Requires arrangement with a faculty supervisor.
Prerequisite:
CPSC 495 Minimum Grade: S
CPSC 497 Computer Science Internship
.00- 3.00 credits
Computer Industry Internship.
CPSC 499 Computers and Society
1.00 credit
This course discusses ethical, societal, security and legal issues in computing, including their relationship to professional development. Topics are examined within the context of students' senior design projects. Fall.
Prerequisite:
CPSC 223 Minimum Grade: D and CPSC 224 Minimum Grade: D
Concurrent:
CPSC 491 CPSC 491L