Support WU
A-Z Index

2005-2006 CLA Catalog


Quick Links

Jump to a Discipline

Jump to a Specific Course

Willamette University

900 State Street
Salem, Oregon 97301

503-370-6300 voice

Course Listings

Computer Science

CS 130 (QA) Computing Concepts and Problem Solving (1)

This course introduces the computer as a tool to solve everyday problems. Students' problem-solving abilities are enhanced by use of practical computer applications and by programming. Topics include: problem-solving by computer, program structure, use of computer applications software and computer networks, and discussions of the impact of computers on our society.

General Education Requirement Fulfillment: Quantitative and Analytical Reasoning

  • Offering: Every semester
  • Instructor: Staff

CS 140 (CA) Computer Graphics: The Art of Ray Tracing (1)

Ray tracing is a technique for creating realistic 3D computer-generated images by tracing the rays of light that start at a light source, bounce off objects and ultimately make their way into the eyes of the viewer. Each time a ray hits an object, the colors present in the ray are absorbed and/or reflected depending on the physical properties of the object’s surface. The interaction is modeled using simple rules of physics and geometry. In this course, students will learn how ray tracing works and will use the ray tracing program POV-Ray to create a portfolio of images. A primary focus will be to learn about creative design in the context of computer graphics.

Mode of Inquiry: Creating in the Arts

Prerequisites: MATH 130 or equivalent or consent of instructor.

  • Offering: Spring
  • Instructor: Orr

CS 231 (QA*) Introduction to Programming (1)

This course includes a study of problem-solving principles, computer programming, some of the principles behind programming languages and the structure of a computer. The course is normally taken for a full credit, but students who have credit for CS 130 receive only one-half credit for CS 231.

General Education Requirement Fulfillment: Quantitative and Analytical Reasoning (*)

  • Offering: Every semester
  • Instructor: Staff

CS 241 (QA) Introduction to Computer Science: Data Structures (1)

Theoretical and practical study of programming and abstract data types in Java including lists, stacks, queues, trees and algorithms used on these data structures. The course includes object implementation of structures and sharpens programming skills learned in previous courses. 

Prerequisite: Programming experience in some higher-level programming language.

General Education Requirement Fulfillment: Quantitative and Analytical Reasoning

  • Offering: Every semester
  • Instructor: Staff

CS 293 Individual Study of a Programming Language (.25)

This course enables students who already know some high-level structured programming language to extend their capabilities in another language. It is self-paced for individual study; a student does not register for the course in advance but gets the materials and does the work on whatever schedule is appropriate; credit is awarded by examination. The course may be offered in different languages; a student may earn credit for at most two offerings for a maximum of .5 credit.

Prerequisite: CS 241 or equivalent

  • Offering: On demand
  • Instructor: Staff

CS 343 Analysis of Algorithms (1)

This course examines traditional and adaptive algorithms, formal methods of analyzing their efficiency and the empirical verification thereof. Topics include asymptotic analysis, recursion, mathematical induction, greedy algorithms, and dynamic-programming, Students study several problem domains such as sorting, searching and graphs.

Prerequisite: CS 241, MATH 251 (may be taken concurrently)

  • Offering: Spring
  • Instructor: Staff

CS 348 Programming Languages (1)

This course introduces students to the issues involved with the design and evaluation of modern programming languages. These issues are presented in the context of a survey of high-level programming languages such as Icon, Scheme and Prolog. Students learn about the underlying paradigms and structures used by these and other modern programming languages.

Prerequisite: CS 241

  • Offering: Every third semester
  • Instructor: Staff

CS 353 Architecture and Compilers (1)

An investigation into how computers and programs work, from the lower levels of internal logic to the higher levels of programming languages designed for human use. Topics covered include: digital representation and digital logic; the internal structure and organization of computers; the hierarchy of programming languages; and techniques used to translate computer programs into machine-readable form. Includes a significant lab component in which students implement the concepts developed in the course.

Prerequisite: CS 241

  • Offering: Annually
  • Instructor: Ruehr

CS 391 Independent Study (.5 or 1)

This course is intended for the qualified advanced student who wishes to do an intensive independent study in an area not covered by an existing course in the department. Arrangements for this course must be made with a faculty member before registration.

Prerequisite: CS 241

  • Offering: Every semester
  • Instructor: Staff

CS 392 Independent Project (.5 or 1)

This course is intended for the qualified advanced student who wishes to do an independent project under faculty supervision. The project will involve substantial preparatory study and will extend the student's knowledge of computer science. Arrangements for this course must be made with a faculty member before registration.

Prerequisite: CS 241

  • Offering: Every semester
  • Instructor: Staff

CS 441 Operating Systems (1)

Introduction to operating systems principles, including processes, input/output, memory management, file systems and concurrency. The course will have a strong implementation component, with required programming exercises.

Prerequisite: CS 241 Recommended

  • Offering: Alternate years, Spring
  • Instructor: Staff

CS 444 Simulation Using Graphical User Interfaces (1)

Design and implementation of graphical user interfaces (GUIs) to simulations of models of natural systems. Students (individually and in teams) will utilize object-oriented programming techniques to create graphical user interfaces to both existing simulations and simulations of their own design.

Prerequisite: CS 343

  • Offering: Alternate years
  • Instructor: Levenick

CS 445 Computer Graphics (1)

This course is an introduction to computer graphics with an emphasis on 3D modeling, shading and rendering. Topics include color representation, geometric transformations, culling, hidden line elimination, clipping, anti-aliasing, texturing, global illumination models, and the 3D rendering pipeline. Extensive programming will be required.

Prerequisite: CS 343

  • Offering: Alternate years
  • Instructor: Orr

CS 446 Automata Theory (1)

This course introduces formal models of computation such as finite state machines, pushdown automata and Turing machines. We study classes of problems that can be solved on each model, intractable classes of problems for which no efficient algorithms are likely to exist and problems with well-defined solutions that are inaccessible to any computational process.

Prerequisite: CS 241

  • Offering: Every third semester
  • Instructor: Staff

CS 448 Machine Learning (1)

A survey of machine learning techniques and philosophical issues concerning artificial intelligence. Learning techniques include perceptrons, PDP back-propagation and induction of environmental regularities via Holland's genetic algorithm. Philosophical issues include "Can a machine be intelligent?" and "How could intelligence in a machine be verified?"

Prerequisite: CS 343

  • Offering: Alternate years
  • Instructor: Levenick

CS 451 Topics in Computer Science (1)

This course provides the flexibility to offer special topics of interest in computer science. Topics will generally not be repeated within a two-year period in order to provide a variety of offerings. May be repeated for up to three credits.

Prerequisite: Usually CS 241

  • Offering: Every semester
  • Instructor: Staff

CS 454 Functional Programming (1)

This course provides a broad introduction to functional programming, including motivations, history, programming techniques and language implementation issues. Functional programming allows concise and elegant solutions to many problems and offers a fresh perspective on computer science. Programming in traditional languages is often improved by exposure to the functional style. The study of functional languages also provides a useful foundation for research topics in programming languages and computer science theory.

Prerequisite: CS 241 and MATH 251 or consent of the instructor

  • Offering: Alternate years in fall
  • Instructor: Ruehr

CS 496 (W) Senior Seminar in Computer Science (1)

Each student undertakes a substantial project that integrates the student's knowledge in computer science and supporting areas. The seminar also meets weekly to discuss methodologies and participate in presentations on computer science areas. Required for majors in Computer Science. This is a year-long course, but students may enroll in either Spring or Fall.

General Education Requirement Fulfillment: Writing centered

Prerequisite: Senior standing

  • Offering: Every semester
  • Instructor: Staff