Skip to main content

Course Descriptions

CS 151 Introduction to Programming with Python (4)

An introduction to computer science using Python. Introduces students to the fundamental concepts of programming and computational problem solving. Students will study and create programs that perform various tasks, including text and file manipulation, internet scraping, data structures, and testing. Topics will include general programming idioms such as variables, logic and loops as well as Python specific idioms such as list comprehension and generators. Object-oriented programming will be introduced.

  • General Education Requirement Fulfillment: Mathematical Sciences
  • Offering: Every semester
  • Instructor: Staff

CS 152 Data Structures (4)

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

  • General Education Requirement Fulfillment: Mathematical Sciences
  • Prerequisite: CS 151
  • Offering: Spring
  • Instructor: Staff

CS 199 Topics in Computer Science (1-4)

A semester-long study of topics in Computer Science. Topics and emphases will vary according to the instructor. This course may be repeated for credit with different topics. See the New and Topics Courses page on the Registrar’s webpage for descriptions and applicability to majors/minors in other departments.

  • General Education Requirement Fulfillment: Topic dependent
  • Prerequisite: Topic dependent
  • Offering: Occasionally
  • Professor: Staff

CS 261 Software Development (4)

This course will provide students with an understanding of modern professional software development practices, including processes, tools, and teamwork. The class will be structured as a simulated development team, with students taking on various roles as they would in a real-world development environment. Although the instructor will provide a framework for the class and guidance on general topics, students in this seminar course will be responsible for collectively determining specific topical choices (e.g., specific tools or development methodologies) through a process of investigation, presentation, discussion, and finally group vote. As a development team, we will use a "content project" to focus our investigations into tools and practices. This project will be a programming task of modest size and complexity which we will undertake as a group-the tools and processes will then be instantiated (chosen, studied, used, critiqued, etc.) in the context of developing this content project. Basic tool and process concepts will be introduced during weekly scheduled discussion hours, but students will be responsible, individually and in small groups, for the investigation of alternatives and the specific choices to be used by the team. Much of the work for the class will therefore occur outside the weekly class meetings, with students returning to make presentations and to participate in team meetings to guide further development and investigation. A particular emphasis will be placed on documenting this entire process, so that a running archive of residuals (code, documentation, meeting notes, etc.) is maintained by the group. This archive should be useful both as a showcase for employers and for later teachings of the course. (A "legacy project" that persists between different course offerings may be used to enrich the latter.)

  • Prerequisite: CS 152
  • Offering: Annually
  • Professor: Staff

CS 271 Networks and Systems (4)

Networks and systems form the boundary between abstractions firmly rooted in language and deeper questions in computing regarding the implementation of thinking machines at engineering and physical levels. This course will prepare computer scientists to reason at and across this abstraction boundary to more fully embrace the power of computation. Students will learn low level languages of C and assembly, use command line tools to study these languages, use features of the operating system including parallelism and networking, and learn how to make changes to operating systems.

  • Prerequisite: CS 152
  • Offering: Annually
  • Professor: Staff

CS 299 Topics in Computer Science (1-4)

A semester-long study of topics in Computer Science. Topics and emphases will vary according to the instructor. This course may be repeated for credit with different topics. See the New and Topics Courses page on the Registrar’s webpage for descriptions and applicability to majors/minors in other departments.

  • General Education Requirement Fulfillment: Topic dependent
  • Prerequisite: Topic dependent
  • Offering: Occasionally
  • Professor: Staff

CS 351 Analysis of Algorithms (4)

In this course students will study methods to analyze algorithms for their correctness and run time efficiency as well as general design and analysis techniques. Topics include: asymptotic analysis, searching and sorting algorithms, divide and conquer techniques, greedy algorithms, dynamic programming, graph algorithms, efficient data structures, and NP-completeness.

  • General Education Requirement Fulfillment: Mathematical Sciences
  • Prerequisite: CS 152 and MATH 251 
  • Offering: Spring
  • Instructor: Staff

CS 370 Python for Data Science (4)

Data Science is the study of knowledge extraction from massive amounts of data. It requires an integrated skill set including aspects of mathematics, statistics, and computer science, as well as effective problem-solving techniques. This course will introduce students to this rapidly growing field, including the understanding of basic concepts, techniques, and tools they need to solve practical problems arising in various fields. Students will experience the cycle of data obtaining, wrangling, curating, managing and processing, exploring, defining questions, performing analyses, and communicating the results.

  • General Education Requirement Fulfillment: Mathematical Sciences
  • Prerequisite: CS 151
  • Offering: Spring
  • Instructor: Staff

CS 391 Independent Study (2 or 4)

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.

  • General Education Requirement Fulfillment: Mathematical Sciences
  • Prerequisite: Consent of instructor
  • Offering: On demand
  • Instructor: Staff

CS 399 Topics in Computer Science (1-4)

A semester-long study of topics in Computer Science. Topics and emphases will vary according to the instructor. This course may be repeated for credit with different topics. See the New and Topics Courses page on the Registrar’s webpage for descriptions and applicability to majors/minors in other departments.

  • General Education Requirement Fulfillment: Topic dependent
  • Prerequisite: Topic dependent
  • Offering: Occasionally
  • Professor: Staff

CS 429 Topics in Computer Science (1-4)

A semester-long study of topics in Computer Science. Topics and emphases will vary according to the instructor. This course may be repeated for credit with different topics. See the New and Topics Courses page on the Registrar’s webpage for descriptions and applicability to majors/minors in other departments.

  • General Education Requirement Fulfillment: Topic dependent
  • Prerequisite: Topic dependent
  • Offering: Occasionally
  • Professor: Staff

CS 475 Machine Learning with Python (4)

Selected topics in supervised learning, unsupervised learning, and reinforcement learning: perception, logistic regression, linear discriminant analysis, decision trees, neural networks, naïve Bayes, support vector machines, k-nearest neighbors algorithm, hidden Markov Models, expectation-maximization algorithm, K-means, Gaussian mixture model, bias-variance tradeoff, ensemble methods, feature extraction and dimensionality reduction methods, principle component analysis, Markov decision processes, passive and active learning.

  • General Education Requirement Fulfillment: Mathematical Sciences
  • Prerequisite: CS 370
  • Offering: Alternate years
  • Professor: Staff

CS 497 Research in Computer Science (2 or 4)

Individualized program of investigative research, in which a student works directly with a faculty member in the faculty member’s area of research expertise. May be repeated for credit until a maximum of 8 total credits.

  • Prerequisite: Consent of instructor
  • Offering: On demand
  • Professor: Computer Science Staff

Willamette University

Computer Science

Address
Ford Hall
900 State Street
Salem Oregon 97301 U.S.A.
Phone
503-370-6077
503-370-6977 FAX