Computer Science
Computer science pervades our world. With a focus on patterns and structures, and with rigorous techniques for the representation and processing of information, computer science enables technological advancement and broadens insights into the world we inhabit and affect.
The goal of the department is to acquaint students with this role as it relates to developments within computer science, as well as to its applications to other disciplines. The department focuses on two distinct but complementary responsibilities: computer science as an essential component of a liberal arts education and computer science as a major course of study.
The department’s courses present the many aspects of computer science: as a means of structuring the world of knowledge, as an art form, as an enabler of other disciplines, and as a promoter of change. The department provides the requisite computational content and methodology for allied disciplines as well as two comprehensive majors (Computer Science and the hybrid major Computer Science and Mathematics) and three minors (Computer Science, Artificial Intelligence, and Cybersecurity).
Resources for Nonmajors
The following courses are designed with nonmajors in mind:
CS 111 Introduction to Cybersecurity provides a multidisciplinary look at the important social and technical issues surrounding security and privacy in our connected world.
CS 107 Perspectives in Computer Science stresses connections among contemporary mathematics, statistics, computer science, and modern society.
The Major Programs
The department supports two majors: one in computer science and one in computer science and mathematics.
Additionally, the department supports three minors: one in artificial intelligence, one in computer science, and one in cybersecurity.
Major Requirements: Computer Science
A minimum of 44 semester credits in computer science and mathematics numbered 171 and above, including the following:
- CS 171 Computer Science I
- CS 172 Computer Science II
- CS 230 Computational Mathematics or MATH 132 Calculus II
- CS 383 Algorithm Design and Analysis
- One of the following:
Computer Architecture and Assembly Languages Networks and Web Development
- MATH 255 Statistical Concepts and Methods
- CS 488 Software Development
- At least 16 additional semester credits in computer science numbered 200 or above.
Major Requirements: Computer Science and Mathematics
A minimum of 40 semester credits in computer science and mathematics numbered 171 and above, including the following:
- CS 171 Computer Science I
- CS 172 Computer Science II
- CS 383 Algorithm Design and Analysis
- One of the following:
Computer Architecture and Assembly Languages Networks and Web Development
- MATH 215 Discrete Mathematics
- MATH 225 Linear Algebra
- At least 4 additional semester credits in mathematics courses numbered 200 or above.
- At least 4 additional semester credits in mathematics courses numbered 300 or above.
- At least 8 additional semester credits in computer science courses numbered 200 or above.
CS 230 Computational Mathematics does not count toward this major.
Minor Requirements: Artificial Intelligence
A minimum of 24 credits distributed as follows:
- CS 171 Computer Science I
- CS 172 Computer Science II
- CS 369 Artificial Intelligence and Machine Learning
- One mathematical course chosen from:
Computational Mathematics Econometrics Linear Algebra Statistical Concepts and Methods Linear Models Simulation-Based Statistical Methods Probability and Statistics I Statistics II
- One advanced or applied AI course chosen from:
Neural Networks for Artificial Intelligence
- One social context course chosen from:
Data, Privacy, and Ethics Data and Democracy Digital Media and Society
A minimum of 12 discrete credits are required for the minor.
Minor Requirements: Computer Science
A minimum of 20 semester credits, including the following:
- 16 semester credits in computer science courses numbered 171 and above.
- CS 230 Computational Mathematics or 4 semester credits in mathematics courses numbered 115 and above.
A minimum of 12 discrete credits are required for the minor.
Minor Requirements: Cybersecurity
A minimum of 22 credits distributed as follows:
- CS 111 Introduction to Cybersecurity
- CS 171 Computer Science I
- CS 211 Computer and Network Security
- CS 311 Cybersecurity Clinics
- Eight semester credits chosen from the following:
| Advanced Cybersecurity | ||
| Introduction to Data Science | ||
| Global Security | ||
| Data, Privacy, and Ethics | ||
| Human-Computer Interaction | ||
| Data and Democracy | ||
| Digital Media and Society |
A minimum of 12 discrete credits are required for the minor.
Honors
Departmental honors will be awarded by the department to students who produce an outstanding senior thesis. Students who have produced exceptional work (in either CS 491 Thesis Preparation or as part of a summer research project) may submit a thesis proposal before the first day of the term in which they wish to complete their thesis. If the department approves the proposal, then the student may enroll in CS 496 Senior Thesis, as appropriate, and no later than the 12th week of the semester submit the completed thesis to the department for approval. If the honors thesis is approved, the student presents a summary at a departmental forum. A cumulative GPA of 3.500 or higher, both in the major and overall, is required.
Peter Drake. Associate professor of computer science. Artificial intelligence, data science, software development. PhD 2002 Indiana University. MS 1995 Oregon State University. BA 1993 Willamette University.
Jeffrey S. Ely. Associate professor of computer science. Computer graphics, numerical analysis. PhD 1990, MS 1981, BS 1976 Ohio State University.
Alain Kägi. Assistant professor of computer science. Computer architecture, operating systems, formal methods, data science. PhD 1999, MS 1992 University of Wisconsin-Madison. Diplom-Ingenieur 1989 Eidgenössische Technische Hochschule Zürich.
Jens Mache. Professor of computer science. Parallel and distributed systems, computer networks, cybersecurity. PhD 1999 University of Oregon. MS 1994 Southern Oregon University. Vordiplom 1992 Universitaet Karlsruhe.
Courses
CS 107 Perspectives in Computer Science
Content: Introduction to computer science. Algorithmic thinking, the nature of electronic computers, and the place of information technology in society. Simple programming including variables, if statements, and loops.
Prerequisites: QR 101 or equivalent.
Usually offered: Annually, fall and spring semester.
Semester credits: 4.
CS 111 Introduction to Cybersecurity
Content: A multidisciplinary look at the important social and technical issues surrounding security and privacy in our connected world. Faculty from multiple disciplines will provide perspective and expertise on topics including attacks, defenses, cryptography, social engineering, ethics, cyber-terrorism, civil liberties, privacy, and hacker culture. A technical background is not required to take the class.
Prerequisites: None.
Usually offered: Annually, fall and spring semester.
Semester credits: 2.
CS 171 Computer Science I
Content: Basic techniques for solving problems amenable to solution through the use of a high-level computer programming language. Emphasis on solving a problem via a program and on the skills to write programs solving complex problems. Variables, data types, branches, loops, arrays, functional decomposition.
Prerequisites: MATH 115 or equivalent.
Usually offered: Annually, fall and spring semester.
Semester credits: 4.
CS 172 Computer Science II
Content: Data structures and algorithmic techniques that are fundamental in programming solutions to complex problems. Abstract data types, lists, stacks, queues, trees, graphs. Array-based and linked structures. Use and simple analysis of iterative and recursive algorithms. Introduction to object-oriented programming.
Prerequisites: CS 171.
Usually offered: Annually, fall and spring semester.
Semester credits: 4.
CS 211 Computer and Network Security
Content: Introduction to principles and practices of computer and network security. Topics may include cryptography, command-line scripting, penetration testing, intrusion detection, incident response, analysis of attacks on Web applications, mobile devices, Internet of Things.
Prerequisites: CS 171.
Usually offered: Annually, fall semester.
Semester credits: 4.
CS 230 Computational Mathematics
Content: Overview of the kinds of problems that arise in calculus and physics. Emphasis on computer solutions. Topics include differentiation, integration, linear systems, ordinary differential equations, approximation.
Prerequisites: MATH 115 or equivalent. CS 171.
Usually offered: Alternate Years, spring semester.
Semester credits: 4.
CS 240 Databases
Content: Introduction to the theory and practice of database systems. Designing, creating, manipulating, and accessing databases. Data curation, legal and ethical issues, middleware (software layer between a database and its users) considerations.
Prerequisites: CS 171.
Usually offered: Alternate Years, spring semester.
Semester credits: 4.
CS 277 Computer Architecture and Assembly Languages
Content: Computer-design concepts and assembly languages. Topics chosen from the following: digital logic; arithmetic/logic units; instruction sets; memory addressing modes; parameter passing; macro facilities; binary representation of information; pointers.
Prerequisites: CS 172.
Usually offered: Alternate Years, spring semester.
Semester credits: 4.
CS 293 Networks and Web Development
Content: Introduction to computer networks and Web development. Topics may include internet protocols, client-server computing, distributed applications, databases.
Prerequisites: CS 172.
Usually offered: Annually, spring semester.
Semester credits: 4.
CS 299 Independent Study
Content: Independent study topic to be arranged with instructor.
Prerequisites: None.
Restrictions: Sophomore standing and consent required.
Usually offered: Annually, fall and spring semester.
Semester credits: 1-4.
CS 311 Cybersecurity Clinics
Content: Real-world experience assisting community organizations to develop and implement sound cybersecurity practices. Study of the basic theories and practices of cybersecurity, the intricacies of protecting largely under-resourced organizations, and the tools needed to manage risk in complex political, sociological, legal, and ethical contexts. Clinic component will have supervised students working in teams to provide direct cybersecurity assistance to organizations. Weekly lectures will provide students with the background information and tools they will need to engage with partners. Coursework will focus on partner-facing, hands-on projects.
Prerequisites: CS 111 or CS 211.
Usually offered: Annually, fall semester.
Semester credits: 4.
CS 367 Computer Graphics
Content: Two- and three-dimensional computer graphics. Line, circle, filling, windowing, clipping algorithms, three-dimensional perspective projections, hidden line removal, shading, light models.
Prerequisites: CS 171. CS 230 or MATH 132. Familiarity with vectors and matrices recommended.
Usually offered: Annually, fall semester.
Semester credits: 4.
CS 369 Artificial Intelligence and Machine Learning
Content: Design and construction of intelligent computer systems. Agents and environments; blind, heuristic, and adversarial search; machine learning techniques including neural networks; philosophical issues including definitions of intelligence.
Prerequisites: CS 171 and DSCI 140, or CS 172.
Usually offered: Annually, spring semester.
Semester credits: 4.
CS 373 Programming Language Structures
Content: Organization, structure, syntax, and grammar of computer programming languages. Basic concepts and special-purpose facilities in several representative high-level languages. Manual and automatic memory management, control structures, scope of declarations, higher-order functions.
Prerequisites: CS 172.
Usually offered: Alternate Years, fall semester.
Semester credits: 4.
CS 383 Algorithm Design and Analysis
Content: Introduction to the design and analysis of algorithms. Balanced binary search trees; bit vectors; hash tables; heaps; dynamic programming; algorithms including incremental, divide and conquer, greedy, graph.
Prerequisites: CS 172. MATH 132 or CS 230.
Usually offered: Annually, fall semester.
Semester credits: 4.
CS 411 Advanced Cybersecurity
Content: Advanced topics may include exploring the utility of artificial intelligence (AI) in a range of cybersecurity tasks such as vulnerability discovery, malware analysis, threat intelligence, configuration generation, and social engineering.
Prerequisites: CS 211.
Usually offered: Alternate Years, spring semester.
Semester credits: 4.
CS 444 Internship/Practicum
Content: Practicum or internship in computer science. Sophomore standing required. Instructor consent required.
Prerequisites: None.
Restrictions: Sophomore standing required.
Usually offered: Annually, fall and spring semester.
Semester credits: 1-4.
CS 465 Theory of Computation
Content: Basic theoretical foundations of computer science including finite-state and pushdown automata, Turing machines, computability, the halting problem, regular expressions, NP-completeness, the relationship between grammars and automata.
Prerequisites: CS 172. MATH 215.
Usually offered: Alternate Years, spring semester.
Semester credits: 4.
CS 467 Advanced Computer Graphics
Content: Advanced three-dimensional computer graphics. Z-buffer algorithms, Phong smooth shading, ray tracing, texture mapping, spline patches.
Prerequisites: CS 367.
Usually offered: Alternate Years, spring semester.
Semester credits: 4.
CS 469 Neural Networks for Artificial Intelligence
Content: Concepts, mathematics, construction, and training of deep neural networks. Architectures such as convolutional networks, recurrent networks, diffusion models, and Transformers. Applications including image and natural language processing.
Prerequisites: CS 171. CS 172 or DSCI 140. CS 230, MATH 225, or MATH 255.
Usually offered: Alternate Years, fall semester.
Semester credits: 4.
CS 488 Software Development
Content: Development of large software systems by teams of programmers. Problem specification, system design, testing, version control, design patterns. Teams of students work on a semester-long project for an external "customer." Sophomore standing required.
Prerequisites: CS 383.
Restrictions: Junior standing required.
Usually offered: Annually, spring semester.
Semester credits: 4.
CS 491 Thesis Preparation
Content: Independent research project culminating in a written thesis proposal. Details determined by student in consultation with supervising faculty member. Instructor consent required.
Prerequisites: None.
Restrictions: Instructor consent required.
Usually offered: Annually, fall and spring semester.
Semester credits: 1-4.
CS 495 Topics in Computer Science
Content: Determined by student and/or faculty interest. May continue topics from an existing course or explore new areas. May be taken three times for credit under different topics. Sophomore standing and instructor consent required.
Prerequisites: CS 172.
Restrictions: Sophomore standing required.
Usually offered: Alternate Years, fall semester.
Semester credits: 2-4.
CS 496 Senior Thesis
Content: Independent research project, based upon revision of thesis preparation project or summer research experience, suitable for granting departmental honors. Details determined by student in consultation with supervising faculty member. Permission of department to pursue honors required. Instructor consent required.
Prerequisites: None.
Restrictions: Permission of department to pursue honors. Instructor consent required.
Usually offered: Annually, fall and spring semester.
Semester credits: 4.