Computer Science

253.535.7400 www.plu.edu/computer-science/ cs@plu.edu
David Wolff, Ph.D., Chair

Our curriculum prepares students to work in industry as professional software developers, to continue their studies in graduate school, or to apply their computational skills to another field. With a degree in computer science you might end up writing code for software simulations of proteins, creating the next big video game, or developing a social application that connects people in new ways. The possibilities are limitless.

Software is a fundamental part of modern life. Most of what we do runs on software and the world needs quality people to create that software. We strive to educate our students to be responsible citizens, critical thinkers, effective communicators, and to value life-long learning. Employers value our students for their technical ability, broad education, and excellent communication skills.

The Computer Science program at Pacific Lutheran University provides a broad base of fundamental material that stresses analysis and design experiences with substantial laboratory work, including software development. In addition, students are exposed to a variety of programming languages and systems. Students can choose from a number of upper-division courses, which ensure a depth of knowledge and an understanding of current developments in the field.

Computer Science Majors

Students majoring in computer science may choose to earn either a Bachelor of Arts degree or a Bachelor of Science degree in computer science. The Bachelor of Arts program is the minimum preparation suitable for further professional study and is often combined with extensive study or a second major in an allied field. The Bachelor of Science degree is a strong, scientific degree that contains additional courses in computer science, mathematics, and science and serves both students going directly into employment on graduation and those going into graduate programs. Students should take CSCI 144, 270 and MATH 151, 242 early in their program.

Restrictions for both majors

  • A minimum grade of C is required in all CSCI and MATH courses counted for a major and a minimum grade of a C- in all other supporting courses.
  • Only one CSCI special topics course (x87, x88, x89) can be used as an elective for the B.A. degree.
  • No more than two CSCI special topics courses (x87, x88, x89) can be used as an elective for the B.S. degree.
  • For the B.A. degree, at least 12 upper-division hours must be completed at PLU.
  • For the B.S. degree, at least 16 upper-division hours must be completed at PLU.

Bachelor of Arts Degree

Major in Computer Science

28 semester hours in CSCI, plus 12 semester hours in mathematics

  • CSCI 144, 270; 367 or 390; 499A, and 499B
  • 12 additional hours selected from computer science courses numbered above CSCI 300.
  • Required supporting: MATH 151, 242, and 245

Bachelor of Science Degree

Major in Computer Science

44 semester hours in CSCI, plus 24-26 semester hours of supporting courses in mathematics and science

  • CSCI 144, 270, 302, 343, 371, 390, 444,  499A, and 499B
  • 12 additional hours selected from computer science courses numbered above CSCI 300 or MATH 356.
  • MATH 151, 242, 245, 331
  • 8-10 semester hours of a year’s sequence of a laboratory science. Choose one of the following options:
    • PHYS 125 and PHYS 126 (with PHYS 135 and PHYS 136)
    • PHYS 153 and PHYS 154 (with PHYS 163 and PHYS 164)
    • CHEM 115 and CHEM 116
    • BIOL 225 and BIOL 226
    • One of GEOS 102-105 and GEOS 201

Minors

Restrictions on Computer Science Minors

At least eight upper-division semester hours must be completed at PLU. All courses counted toward a minor must be completed with a grade of C or higher.

Minor in Computer Science

20 semester hours, including

  • CSCI 144, 270
  • Eight additional hours of upper-division computer science courses numbered above CSCI 300 (except CSCI 499A and 499B).
  • Required supporting: MATH 128, 151, or equivalent

Minor in Data Science

For information on the Data Science Minor, see the Data Science website, www.plu.edu/computer-science/data-science or the Data Science catalog listing, here.

Course Offerings by Semester/Term

  • Fall Semester: CSCI 144, 270, 302, 330, 371, 499A
  • J-Term: CSCI 487
  • Spring Semester: CSCI 144, 270, 343, 367, 390, 444, 499B
  • Alternate Years: CSCI 386, 412

Computer Science (CSCI) - Undergraduate Courses

CSCI 115 : Solve It With the Computer - MR, NS

Teaches how computer use combined with mathematical reasoning can solve "real world" problems. Students use computer tools to solve everyday problems involving mathematics, data, and computing. Prerequisite: fulfillment of PLU entrance requirement in mathematics. (4)

CSCI 120 : Computerized Information Systems - NS

Introduction to computers including net-centric computing, computer ethics, operation systems, spreadsheets, graphics, and related topics. Includes a computer laboratory component. Prerequisite: MATH 128 or 140 or equivalent. (4)

CSCI 144 : Introduction to Computer Science - NS

An introduction to computer science including problem solving, algorithm design, object-oriented programming, numerical and non-numerical applications, and use of data files. Ethical and social impacts of computing. Prerequisite: four years of high school mathematics or MATH 140 or equivalent. (4)

CSCI 190 : FYEP190: Privacy and Technology NS

This course will explore the impact of technology on privacy. The goal is to provide students with insight into the importance of privacy in their daily lives and how to protect that privacy as it comes under attack from new technology. It will explore these issues from several different perspectives, including a look at the history of privacy, the development of laws related to privacy, methods used to protect privacy, and developments in technology that threaten privacy. In the process students will study concepts from mathematics, computer science, history, political science, English and military science. (4)

CSCI 270 : Data Structures

Study of object-oriented programming techniques and fundamental data structure abstractions and implementations including list, stack, queue, and trees with applications to sorting, searching, and data storage. Prerequisite: CSCI 144. (4)

CSCI 287 : Special Topics in Computer Science

To provide undergraduate students with new, one-time, and developing courses not yet available in the regular curriculum. The title will be listed on the student term-based record as ST: followed by the specific title designated by the academic unit. (1 to 4)

CSCI 288 : Special Topics in Computer Science

To provide undergraduate students with new, one-time, and developing courses not yet available in the regular curriculum. The title will be listed on the student term-based record as ST: followed by the specific title designated by the academic unit. (1 to 4)

CSCI 289 : Special Topics in Computer Science

To provide undergraduate students with new, one-time, and developing courses not yet available in the regular curriculum. The title will be listed on the student term-based record as ST: followed by the specific title designated by the academic unit. (1 to 4)

CSCI 291 : Directed Studies

To provide individual undergraduate students with introductory study not available in the regular curriculum. The title will be listed on the student term-based record as DS: followed by the specific title designated by the student. Prerequisite: consent of department chair. (1 to 4)

CSCI 302 : Computer Organization

Introduction to how computer hardware implements high level language statements and data. Topics include data representations, machine level implementation of C programs, and processor architecture (Instruction Set Architecture, sequential, and pipelined processors). Laboratory component includes examining bit-level manipulations of data, reverse engineering binary code to C code, and runtime manipulation of the stack to exploit programming errors. Prerequisite: CSCI 270 or consent of instructor. (4)

CSCI 330 : Introduction to Artificial Intelligence

An introduction to the field of Artificial Intelligence (AI), the theory and practice behind the development of software systems that perform tasks that normally require human intelligence. Covers effective AI techniques (e.g. neural networks, support vector machine, clustering), usage of machine learning tools, and their application to solve programs in different fields (e.g. business, biology). Ethical and social dilemmas posed by AI will be considered. Prerequisite: CSCI 270. (4)

CSCI 340 : Formal Languages

Study of formal models of computation (finite automata, pushdown automata, and Turing machines). Study of formal language concepts, such as regular expressions and grammars. There will be a significant programming component where students implement and test algorithms. Prerequisite: CSCI 270. (4)

CSCI 343 : Programming Language Concepts

A study of the fundamental concepts of computer programming languages. Topics include: a comparison of features of modern languages, criteria for evaluating languages, and an introduction to syntax and lexical analysis including grammars and parsing. The imperative, object-oriented, functional and declarative paradigms will be studied. Prerequisite: CSCI 270. (4)

CSCI 367 : Databases and Web Programming

An introduction to the fundamental concepts necessary for design, use, and implementation of database systems, with application to web-based software. The entity-relationship and relational models are studied in detail. Individual, organization, and societal concerns related to accuracy and privacy of data. Major small group project. Prerequisite: successful completion of, or concurrent enrollment in, CSCI 270. (4)

CSCI 371 : Design and Analysis of Algorithms

Develops competencies associated with problem-solving, algorithms, and algorithm analysis. Includes efficient algorithms, time and space complexity, algorithm design techniques, and advanced data structures. Includes a programming component where students will implement and test algorithms. Prerequisites: CSCI 270 and one of MATH 245 or MATH 317. (4)

CSCI 386 : Computer Networks

An introduction to computer networks and computer communication protocols from the physical layer through the transport layer. Topics include connection oriented and connectionless networks, error detection and correction, LANs, sockets, and routing. Application layer topics can include HTTP, DNS, and email. Prerequisite: CSCI 270. Recommended: MATH 242. (4)

CSCI 387 : Special Topics in Computer Science

To provide undergraduate students with new, one-time, and developing courses not yet available in the regular curriculum. The title will be listed on the student term-based record as ST: followed by the specific title designated by the academic unit. (1 to 4)

CSCI 388 : Special Topics in Computer Science

To provide undergraduate students with new, one-time, and developing courses not yet available in the regular curriculum. The title will be listed on the student term-based record as ST: followed by the specific title designated by the academic unit. (1 to 4)

CSCI 389 : Special Topics in Computer Science

To provide undergraduate students with new, one-time, and developing courses not yet available in the regular curriculum. The title will be listed on the student term-based record as ST: followed by the specific title designated by the academic unit. (1 to 4)

CSCI 390 : Objects and Design

Object-oriented programming techniques, tools, and best practices for dealing with large programs. Topics include object-oriented design and programming, specifications, quality processes, effective debugging, and software testing. Prerequisite: CSCI 270. (4)

CSCI 391 : Problem Solving and Programming Seminar

Designed to improve advanced problem solving and programming skills, including advanced data structures. A goal of the course is participation in the regional ACM programming competition. Pass/Fail only. Students may take this course more than once. Prerequisite: CSCI 270 or consent of instructor. (1)

CSCI 412 : Computer Graphics

An introduction to the principles of computer graphics in two and three dimensions. Topics may include: triangle meshes, transformations, 3D rendering, shader programming, shading techniques, 3D projection, antialiasing, texture mapping, scene graphs, and ray tracing. Course work includes several programming assignments plus a project. Prerequisites: CSCI 270, MATH 331. Recommended: PHYS 153. (4)

CSCI 444 : Operating Systems

An introduction to computer operating systems including process scheduling, memory management, and file systems. Major small group project. Prerequisite: CSCI 302 and MATH 245. Recommended: CSCI 343. (4)

CSCI 487 : Special Topics in Computer Science

To provide undergraduate students with new, one-time, and developing courses not yet available in the regular curriculum. The title will be listed on the student term-based record as ST: followed by the specific title designated by the academic unit. (1 to 4)

CSCI 488 : Special Topics in Computer Science

To provide undergraduate students with new, one-time, and developing courses not yet available in the regular curriculum. The title will be listed on the student term-based record as ST: followed by the specific title designated by the academic unit. (1 to 4)

CSCI 489 : Special Topics in Computer Science

To provide undergraduate students with new, one-time, and developing courses not yet available in the regular curriculum. The title will be listed on the student term-based record as ST: followed by the specific title designated by the academic unit. (1 to 4)

CSCI 491 : Independent Studies

To provide individual undergraduate students with advanced study not available in the regular curriculum. Proposed project must be approved by the department chair and supervisory responsibility accepted by an instructor. The title will be listed on the student's term-based record as "IS:" followed by the specific title designated by the student. (1 to 4)

CSCI 495 : Computer Science Internship

To permit undergraduate students to relate theory and practice in a work situation. Students will be expected to adhere to and document the objectives of a learning plan developed with and approved by a faculty sponsor. Credit will be determined by hours spent in the working environment and the depth of the project associated with the course of study. The title will be listed on the student term-based record as "Intern:" followed by the specific title designated by the instructor in consultation with the student. (1 to 12)

CSCI 499A : Capstone: Senior Seminar SR

Written and oral presentation of a project in a topic of interest by the student under the supervision of a faculty member. Students normally work in small groups (two or three students). Includes gathering requirements from the client/customer, taking a product through the full life cycle, technical communication and a study of the social implications of computing. The capstone is a two-semester sequence beginning in the fall semester. May graduates should start the course in the fall of their senior year and December graduates should begin the course in the fall of their junior year. With CSCI 499B meets the senior seminar/project requirement. Prerequisites: Prerequisites depend on the major and degree. The B.S. in computer science requires CSCI 390. The B.A. in computer science requires CSCI 270; and CSCI 367 or 390. (2)

CSCI 499B : Capstone: Senior Seminar SR

Continuation of CSCI 499A. With CSCI 499A meets the senior seminar/project requirement. Prerequisite: CSCI 499A. (2)