Support WU
A-Z Index

2010-2011 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

Computer Science View this department's website

The computing revolution is transforming our world in ways we are only beginning to understand, but it is clear that a knowledge of computing is invaluable to any 21st-century citizen. Computer science is the study of the principles of computing: it is founded in the basic skills of programming and problem-solving, but a university education in the subject requires the development of deeper insights into the nature of algorithms, the languages we use to describe them and the machines on which we realize them. In addition to these subjects, students at Willamette have the opportunity to explore advanced topics ranging from 3D graphics to artificial intelligence, from genetic algorithms (in which populations of programs are "bred" for success) to the theoretical foundations of language and computation. Whichever topics they pursue, the Willamette curriculum is designed to provide students with a principled education that will support their goals of life-long learning in a constantly-changing field.

Introductory computing classes at Willamette provide non-majors and pre-majors with a broader perspective on computing, build basic skills which can be applied to other fields and foster the creative use of graphics and animation in collaboration with music and the arts. These classes are designed to synergize with other studies and thus to contribute to a broad liberal-arts education.

The study of computer science opens up a number of options in later life: many graduates with a computer science major or minor find careers in programming, design, consulting or system support. Other choose to deepen their studies in graduate school, ultimately providing contributions to basic research in the field or pursuing influential development opportunities in industry. Finally, some students combine these options, first building up practical work experience in a business or industrial setting and then consolidating these experiences through graduate study.

The University has excellent computing facilities open to students, including both general-access labs with Windows and Macintosh computers and a number of labs with specially-selected equipment to support graphics or laboratory use. Wired access in dorm rooms and a campus-wide wireless network allow students great flexibility in the pursuit of their studies, in communication with family and friends and in general access to the resources of the Internet.

Entering students with a score of five on the Computer Science Advanced Placement exam are awarded credit for CS 141, Introduction to Programming. Students with scores of four should confer with the department about possible credit.

Requirements for the Computer Science Major (11 Credits)

9 credits in Computer Science, 2 in Mathematics

Computer Science Courses:

  • CS 141 (QA*) Introduction to Programming (1)
  • CS 241 (QA) Data Structures (1)
  • CS 495 (W) Senior Seminar in Computer Science I: Prospectus (.5)
  • CS 496 (W) Senior Seminar in Computer Science II: Project (.5)
  • Two Computer Science credits at the 300 level (2)
  • Four additional Computer Science credits at the 300 or 400 level (4)
Math Courses:
  • Any Math course numbered 142 or higher (1)
  • One additional credit from the following: (1)
  • MATH 251 (W) Foundations of Advanced Mathematic  
  • MATH 163 (QA) Discrete Mathematic

Requirements for the Computer Science Minor (5 Credits)

  • CS 141 (QA*) Introduction to Programming (1)
  • CS 241 (QA) Data Structures (1)
  • One Computer Science credit at the 300 level (1)
  • One Computer Science credit at the 400 level (1)
  • One additional Computer Science credit at the 300 or 400 level or CS 154 (1)

Indicators of Achievement

The goals of the computer science department are:

• To introduce the student to the fundamentals of computer programming and theory and to the underlying mathematical and scientific principles.

•To prepare students for employment in the computing industry or for postgraduate study in computer science.

•To provide students with an understanding of professional responsibilities and the importance of life-long learning.

•To develop skills for teamwork including collaboration and oral and written communications.

Student Learning Outcomes for the Computer Science Major

  1. Students will achieve proficiency in discrete math
  2. Students will achieve proficiency in Computer Science skills (fundamentals of programming, computer organization, architecture, algorithms, theory, designing and implementing software)
  3. Students will demonstrate the ability to communicate effectively both orally and in writing
  4. Students will demonstrate the ability to work effectively as part of a team
  5. Students will demonstrate the ability to work independently to analyze and solve problems
  6. Students will be engaged in the professional community

Faculty


Course Listings

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: annually
  • Instructor: Staff

CS 141 (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.

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

  • Offering: Every semester
  • Instructor: Staff

CS 145 (QA*) Images and Imagination (1)

Computational Art is an emerging new field that uses mathematical algorithms and computers to generate imaginative and abstract images. Fractals are a small but well known subset within this extensive and varied field. In this course, students learn and apply mathematics and computer programming to generate a wide range of images and animations. The work is guided and evaluated by standard principles of design and composition.

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

  • Offering: Annually
  • Instructor: Orr

CS 154 Introduction to Functional Programming (1)

This course provides a broad introduction to programming in the functional style, including motivations, history, programming techniques and theory. Functional programming provides concise and elegant solutions to many problems, using an approach based on mathematics, logic and proof. The course will be taught in Haskell, a powerful, modern programming language which can be used for both mathematical investigations and serious system development. Topics covered will include a broad introduction to computing, symbolic representation of data, list manipulation, recursion, algebraic data types, higher-order functions and type systems. The study of functional programming languages provides a useful foundation and perspective for further study of topics in algebra, logic, programming languages, computer science theory and linguistics.

Prerequisite:  MATH 251, or PHIL 140, or any CS programming course, or consent of instructor.

  • Offering: Fall
  • Instructor: Ruehr

CS 203X Problem Solving for the ACM Programming Contest (.25)

Problem solving and computational thinking is central to computer science. In this course, students and instructors meet once a week to discuss and apply theoretical and practical knowledge learned in earlier courses to solve and implement problems from the Association for Computing Machinery (ACM) programming contest. This course may be repeated for credit.

Prerequisite: CS 241

  • Offering: Fall
  • Instructor: Staff

CS 241 (QA) 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: CS 141 or permission of instructor

General Education Requirement Fulfillment: Quantitative and Analytical Reasoning

  • Offering: Spring
  • 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 and MATH 163 or MATH 251 (may be taken concurrently)

  • Offering: Spring
  • 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: Fall
  • Instructor: Ruehr

CS 363 Simulation of Natural and Computer Systems (1)

Design and implementation stimulations of natural systems and computer 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 241

  • Offering: Alternate years
  • Instructor: Levenick

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: On demand
  • 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: On demand
  • Instructor: Staff

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 or consent of instructor

  • Offering: Alternate years
  • Instructor: Orr

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 or consent of instructor

  • 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: As needed
  • Instructor: Staff

CS 465 Language, Logic and Computation (1)

Language is the basic for complex communication, whether as natural language between humans or as formal language between humans and computers. In programming, different kinds of formal languages are crucial tools in all stages of development, from the logics used to specify requirements, to the programming languages used to implement algorithms and the mathematical notations used to analyze their behavior. In this course we will study the general phenomenon of formal language by exploring the syntax, semantics and logics of a broad range of examples, beginning with the simplest numeral notations and operator algebras and continuing through to computationally complete languages and sophisticated type systems. In addition to studying abstract descriptions of syntax and semantics, students will reinforce their understanding by implementing language-based tools in a functional meta-language.

Prerequisite: Introduction to Functional Programming or any 300-level Computer science course (at least concurrently).

  • Offering: Alternate years
  • Instructor: Ruehr

CS 495 (W) Senior Seminar in Computer Science I (.5)

Students research and develop a proposal for a substantial project that will integrate the student's knowledge in computer science and supporting areas. Weekly meetings will study methodologies and offer a forum for presentations and discussions. A paper and final presentation on the proposal topic is required. Required for major in Computer Science.

General Education Requirement Fulfillment: Writing centered

Prerequisite: Senior standing in Computer Science or consent of instructor.

  • Offering: Fall
  • Instructor: Staff

CS 496 (W) Senior Seminar in Computer Science II (.5)

Students implement their project (proposed in CS 495). Weekly meetings offer a forum for progress reports and practice presentations. A final write-up and presentation of the project is required. Required for majors in Computer Science.

General Education Requirement Fulfillment: Writing centered

Prerequisite: CS 495

  • Offering: Spring
  • Instructor: Staff