Computer Science
Offered by the Mathematics department.

We move intellectually curious students to become makers and creators.

We love to create, build, make.

Software yes, but also think embedded devices, 3D printers, laser cutter, and your next creation! Add students, staff, and faculty and you get a picture of our learning community.

Some new equipment to come includes a CnC mill and programmable loom.

Join the Computer Science students and Department in the New Maker Movement.

Recent graduate, Zevi Rubin ’16 created drones, flew them over campus and created this time lapse video.

 

Read blog posts

Major requirements

Computer Science major worksheet

-The major in computer science consists of a minimum of 12 courses: seven core computer science courses, plus two mathematics courses, a senior seminar and two electives at or above the 200 level. For those students who place out of the introductory course(s), the additional course(s) needed to meet the minimum requirement will be determined in consultation with the department. Courses used to fulfill the major requirements may not be taken on a pass/fail basis. To major in computer science, the department strongly recommends that students achieve at least a C+ average in the first two computer science courses and that the first two math courses be completed by the second year.

Required courses

COMP 115 Robots, Games and Problem Solving
COMP 116 Data Structures
COMP 121 Foundations of Computing Theory
(strongly recommend at least a combined 2.67 GPA in these courses to continue)

Four computer science core courses
COMP 215 Algorithms
COMP 220 Computer Organization and Assembly Language

Select two of the following:
COMP 335 Principles of Programming Languages
COMP 345 Operating Systems
COMP 375 Theory of Computation

Two math courses
MATH 101 Calculus I
MATH 104 Calculus II
MATH 151 Accelerated Statistics
MATH 202 Cryptography
MATH 211 Discrete Mathematics
MATH 221 Linear Algebra
MATH 236 Multivariable Calculus
MATH 251 Methods of Data Analysis

Electives
Two additional computer science (or mathematics with permission) at or above the 200-level:
COMP 242 DNA
COMP 255 Artificial Intelligence
COMP 325 Database Systems
COMP 365 Computer Graphics
COMP 499 Independent Research

Capstone
COMP 401 Senior Seminar

Minor requirements

Computer Science minor worksheet

-

Required courses

The minor in computer science requires completion of five (5) courses:

COMP 115 Robots, Games and Problem Solving
COMP 116 Data Structures

Two other computer science courses, at least one at the 200-level or above.

One 300-level computer science course or with permission, a 300-level non-computer science course that contains significant work in computer science.

  • Computer Science

    COMP 098 – Experimental Course

    From time to time, departments design a new course to be offered either on a one-time basis or an experimental basis before deciding whether to make it a regular part of the curriculum. Refer to the course schedule for current listings.

  • Computer Science

    COMP 099 – Independent Study

    An individual or small-group study in computer science under the direction of an approved advisor. An individual or small group works on the conception, design and implementation of a significant computer science project. Interdisciplinary projects are strongly encouraged. Students are also expected to assume a greater responsibility in the form of leading discussions and working examples.

  • Computer Science

    COMP 115 – Robots, Games and Problem Solving

    Problem-solving techniques and algorithm development with emphasis on program design, introductory numerical methods and object-oriented programming from the client perspective. Some form of robot, either virtual or real, is used to augment course content. This course is intended for those seeking a thorough and rigorous exposure to programming; an ideal course for those considering graduate school in any field. Topics covered include programming language syntax (e.g., C++, Python), coding, debugging, testing and good documentation style. Concepts include arithmetic and logical operations; simple input and output; functions and the introductory data structures of arrays/lists, records and classes.

  • Computer Science

    COMP 116 – Data Structures

    An introduction to the theoretical and practical aspects of data structures. Emphasis is on abstract data types and the use of the C++ class mechanism to support their implementations. Examples include stacks, queues, linked lists, binary search trees and general trees and their applications. Pointers and recursion are used in some implementations. Three hours of lecture and a two-hour laboratory per week.

  • Computer Science

    COMP 121 – Foundations of Computing Theory

    Discrete mathematics represents the core mathematical and problem-solving principles in computer science education. It is not possible to make creative and effective use of computers without involving oneself in mathematical considerations. This course introduces many of the mathematical concepts that appear later in the computer science major. Everyday scenarios are related to discrete topics including algorithms, networks and data communication, parity and error, finite state machines, regular expressions, matrices, propositional logic, Boolean algebra, sets and relations in databases, graphs and trees. Students use these techniques to solve real-world problems, such as forming SQL queries, designing shortest-path communications between cell towers and pattern matching across entire genomes and volumes of English text.

 (Previously Computer Science 111 – effective Spring 2016).

  • Computer Science

    COMP 131 – Computing for Poets

    The use of computers to manage the storage and retrieval of written texts creates new opportunities for scholars of ancient and other written works. Recent advances in computer software, hypertext and database methodologies have made it possible to ask novel questions about a story, a trilogy, an anthology or corpus. This course teaches computer programming as a vehicle to explore the formal symbol systems currently used to define our digital libraries of text. Programming facilitates top-down thinking and practice with real-world problem-solving skills such as problem decomposition and writing algorithms.

  • Computer Science

    COMP 155 – Intelligent Systems

    Intelligent Systems provides scientific and technical background to consider Turing’s question: ‘Can machines think?’ We explore locomotion, sensors and effectors, and contrast capabilities of humans and AIs. Then, we investigate computer vision and natural language processing. Finally, we study humans anthropomorphizing robots and computers and AI’s role in our world.

  • Computer Science

    COMP 161 – Web Programming, Graphics and Design

    As Web pages proliferate on the Internet, it is becoming increasingly important to understand today’s technology. This course covers basic Web page design and creation using current software tools. Web pages are brought to life by adding custom graphics. Students create their own animated mini-movies using Flash. The course covers basic programming, using Flash ActionScript or similar, to allow students to create more sophisticated pages that include user interaction and real-world applications. Students practice many concepts while in the classroom, and design and program their own Web pages as a major component of the course.

  • Computer Science

    COMP 198 – Experimental Course

    From time to time, departments design a new course to be offered either on a one-time basis or an experimental basis before deciding whether to make it a regular part of the curriculum. Refer to the course schedule for current listings.

  • Computer Science

    COMP 199 – Independent Study

    An individual or small-group study in computer science under the direction of an approved advisor. An individual or small group works on the conception, design and implementation of a significant computer science project. Interdisciplinary projects are strongly encouraged. Students are also expected to assume a greater responsibility in the form of leading discussions and working examples.

  • Computer Science

    COMP 215 – Algorithms

    An introduction to the mathematical foundations, design, implementation and computational analysis of fundamental algorithms. Problems include heuristic searching, sorting, several graph theory problems, tree balancing algorithms, and the theoretical expression of their orders of growth. Out-of-class assignments and in-class labs emphasize the balance between theoretical hypotheses and experimental verification. C/C++, Java, Perl or Maple are applied to various solutions.

  • Computer Science

    COMP 220 – Computer Organization and Assembly Language

    A detailed look at the internal organization and logic of computers.
The programming portion of the course considers a common assembly language and how such instructions are translated to the binary instructions of a traditional 32-bit machine language. Addressing modes and stack behavior related to subroutine calls are discussed in detail.

The computer organization portion of the course discusses gates, storage circuits, the arithmetic and logic unit, fetch/execute cycles and data paths. Microcoding is discussed in detail. The question of performance, in relation to a computer’s architecture and the choices made by programmers, is a major theme throughout the course.

  • Computer Science

    COMP 242 – DNA

    An amazing blend of biology, chemistry, computing and mathematics emerges when considering the molecule “deoxyribonucleic acid” (DNA). DNA is the blueprint of life for all organisms on Earth and throughout evolutionary time. This course explores DNA from the following four points of view: molecular biology, applied mathematics, evolutionary biology and computer science. Students will analyze DNA sequences by learning to write computer programs (software) in the language Python. Learning to write programs is a pure, distilled form of problem solving, a vital skill for many careers and graduate studies. Historical and ethical aspects of DNA are discussed. Counts as a related course in the biology major and as a 200-level elective in the computer science major.

  • Computer Science

    COMP 255 – Artificial Intelligence

    The idea of a thinking machine captivates us as a culture and our long struggle toward an approximation of that goal has pushed us to examine what underlies our own thought processes and how we may create problem-solving models based on different definitions of what constitutes “intelligence.” This course examines the fundamentals of artificial intelligence, including searching for problem solutions, game playing, logical reasoning, task planning and robotics. We also explore the advanced topics of natural language communication between man and machine and the challenge of designing a machine that learns from experience.

  • Computer Science

    COMP 298 – Experimental Course

    From time to time, departments design a new course to be offered either on a one-time basis or an experimental basis before deciding whether to make it a regular part of the curriculum. Refer to the course schedule for current listings.

  • Computer Science

    COMP 299 – Independent Study

    An individual or small-group study in computer science under the direction of an approved advisor. An individual or small group works on the conception, design and implementation of a significant computer science project. Interdisciplinary projects are strongly encouraged. Students are also expected to assume a greater responsibility in the form of leading discussions and working examples.

  • Computer Science

    COMP 315 – Parallel Algorithms

    Parallel Algorithms provides an introduction to designing parallel algorithms and organizing parallel computing systems. We explore software in multiprocessor environments and investigate building and using a cluster. Then, we evaluate the performance of our distributed systems against cloud computing. Finally, we discuss broader impacts of data centers and high-performance computing.

  • Computer Science

    COMP 325 – Database Systems

    In an age of information, it is crucial to understand how to design systems to manage and organize potentially large collections of data. This course involves an in-depth study of the issues involved in today’s database management systems (DBMS). Topics include the theories behind database architecture, database design (including the relational model) and DBMS implementation, as well as the collection, organization and retrieval of data through query languages such as SQL.

  • Computer Science

    COMP 335 – Principles of Programming Languages

    A theoretical study of the principles that govern the design and implementation of contemporary programming languages. This includes language syntax (lexical properties, BNF notation and parsing); language representations (data structures, control structures and runtime environments); and practical experience with language styles (procedural, functional, logical and object-oriented). Particular focus is on object-oriented languages. Labs, homework and programming assignments include selections from languages that are object-oriented (Java, C++, C#), functional (LISP), declarative (PROLOG) and used for data-interface (PERL), building system tools (C) and object-based applications (Visual Basic).

  • Computer Science

    COMP 345 – Operating Systems

    Operating systems are the software core of computers. This most fundamental of all system programs controls all of the computer’s resources and provides the base upon which all application programs are written. The course introduces the theoretical structure of current computer operating systems, including batch, multiprogramming and multiprocessor systems. Specific strategies for input-output, interrupt handling, file management and concurrency are discussed. Practical experience is gained by writing module simulations, implementing concurrency by using threads, and altering actual operating system software. Parallel computing algorithms and techniques are further emphasized to give students experience in how to take advantage of today’s multi-core processors.

  • Computer Science

    COMP 365 – Computer Graphics

    A look at many of the mathematical tools, data structures, algorithms and hardware associated with the creation of imagery on the computer. The course covers aspects such as animation, 3D geometric transformations, projections, shading, texture mapping, viewing and visible surface determination. Modeling techniques, including fractals, surfaces of rotation and L-systems, are discussed. Advanced topics such as ray tracing, radiosity, shadows and other effects are covered as time permits. Major programming projects put theory into practice, using OpenGL or other computer graphics application programmer interfaces.

  • Computer Science

    COMP 375 – Theory of Computation

    Many complex problems can be solved using a finite state machine approach. This course is a look at various kinds of such theoretical machines and how understanding them can lead to practical solutions to programming problems. Topics include regular languages, context-free languages, finite automata, pushdown automata, nondeterminism and Turing machines. The halting problem and the problem of computability versus undecidability are investigated. The topics are shown to have applications to compiler design; portions of a compiler are implemented in a major project.

  • Computer Science

    COMP 398 – Advanced Topics in Computer Science

    From time to time, departments design a new course to be offered either on a one-time basis or an experimental basis before deciding whether to make it a regular part of the curriculum. Refer to the course schedule for current listings.

  • Computer Science

    COMP 399 – Independent Study

    An individual or small-group study in computer science under the direction of an approved advisor. An individual or small group works on the conception, design and implementation of a significant computer science project. Interdisciplinary projects are strongly encouraged. Students are also expected to assume a greater responsibility in the form of leading discussions and working examples.

  • Computer Science

    COMP 401 – Senior Seminar

    A seminar featuring historical and/or contemporary topics in computer science. Roundtable discussions, student-led presentations, writing, and a major group programming project are featured.

  • Computer Science

    COMP 499 – Independent Research

    An individual research project in computer science under the direction of an approved advisor. Typically, this involves a review of the primary literature that leads to the design and implementation of a computational experiment or the development of a large software system.

  • Computer Science

    COMP 500 – Individual Research

    Research under the direction of individual computer science faculty for two semester course credits. A thesis is required of each student enrolled in this course.

Tom Armstrong

Associate Professor of Computer Science

Martin Gagné

Assistant Professor of Computer Science

Michael B. Gousie

Professor of Computer Science

Mark D. LeBlanc

Professor of Computer Science