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
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 (*)
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 (*)
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.
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
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
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
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)
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
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
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
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
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
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
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
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).
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.
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