Computer Science

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

Computer science deals with the theory, design, and application of computing systems and the study of the storing and manipulation of information. The program at Pacific Lutheran University provides a broad base core 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.

In keeping with the University’s mission “to educate students for lives of thoughtful inquiry, service, leadership, and care—for other people, for their communities, and for the earth,” there are four major objectives of the computer science program. Our objectives state what a PLU graduate with a major in computer science  is expected to achieve within a few years after graduation.

  1. Graduates who choose to enter the workforce will become well-rounded, creative, productive, and valuable professionals in their field.
  2. Graduates who choose to pursue advanced degrees will be accepted into a graduate program and make effective progress towards their degree.
  3. Graduates will have an aptitude and desire to engage in lifelong learning, and will adapt to new technologies, tools, and methodologies.
  4. Graduates will understand the societal, legal, and ethical implications of their work, and will share their knowledge skills and expertise with their colleagues and community.

For a complete description of the CSCI objectives and outcomes visit the department website at www.plu.edu/computer-science/.

Beginning Classes in Computer Science (CSCI)

There are several beginning-level classes designed for students with various needs:

  • CSCI 115: Solve it with the Computer: Especially for students with little or no background in computer science who wish an introduction to the use of the computer for problem solving. This course also satisfies the Mathematical Reasoning requirement.
  • CSCI 120: Computerized Information Systems: Especially appropriate for business majors and other students wishing an introduction to the computer and applications of software packages.
  • CSCI 144: Introduction to Computer Science: For students majoring in computer science, mathematics, and most science majors, as well as others wishing a strong experience in computer programming.
  • CSCI 270: Data Structures: This is the second course in the major. With departmental approval, students with a strong programming background may receive advanced placement into this course.

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 (except 331).
  • 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 (except 331) 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 331, 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 131, 144, 270, 330, 343, 371, 499A
  • J-Term: CSCI 487
  • Spring Semester: CSCI 144, 270, 302, 367, 390, 444, 499B
  • Alternate Years: CSCI 331, 340, 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 131 : Introduction to Engineering - NS

An introduction to the engineering profession and development of basic skills important to the profession, including problem solving, engineering design, graphics, use of computers, computer programming, engineering economics, and ethics in engineering. Prerequisite: completion of college-preparatory mathematics. (2)

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 : Independent 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 331 : Electrical Circuits

Introduction to the fundamental techniques and concepts of analysis and design of DC and AC circuits including Kirchhoff's Laws, circuit theorems, OP Amps, first and second order transient and steady state circuits, and frequency response. Computer simulation and laboratory work are essential parts of the course. Prerequisites: MATH 151; PHYS 154 or consent of instructor. (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

Prerequisite: consent of department chair. (1 to 4)

CSCI 495 : Computer Science Internship

Involvement in an ongoing research project in computer science under the supervision of a faculty member. Prerequisite: consent of instructor. (1 to 4)

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)