2014-2015

Course Listings

Computer Science

CS 125 Problem Solving with MATLAB (1)

An introduction to programming using MATLAB. Topics include MATLAB interactive environment, programming basics, MATLAB scripts, functions, vectors, matrices, data analysis, and graphic visualization. Students will learn programming and numerical analysis techniques through hands-on projects and develop computer-based problem solving skills that can be applied in science, engineering, artificial intelligence, and economics.

  • Offering: Spring
  • Instructor: Cheng

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: Fall
  • 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 under the supervision of an instructor. Arrangements for this course must be made with a faculty member before registration. 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
  • Offering: On demand
  • Instructor: Staff

CS 343 Analysis of Algorithms (1)

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.

  • 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 435 Computational Science and Applications (1)

A project-oriented course in which students apply computational tools to solve problems in science, mathematics, statistics, and economics through modeling, simulation, implementation of algorithms, numerical analysis, and software development.

  • Prerequisite: CS 241 or consent of instructor
  • Offering: Alternate years
  • Instructor: Cheng

CS 445 Computer Graphics (1)

This course is an introduction to computer graphic with an emphasis how 3D objects and scenes are modeled, shaded, and rendered. 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 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 495W 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 496W Senior Seminar in Computer Science II (.5)

Students implement their project (proposed in CS 495W). 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 495W
  • Offering: Spring
  • Instructor: Staff

Jump to a Discipline

Jump to a Discipline's
Learning Outcomes

Jump to a Specific Course