The Department of Computer Science offers two programs:

  1. A traditional computer science course for students earning a bachelor of science, bachelor of arts, or minor in computer science.
  2. A specialized computational methods course for students interested in enhancing their studies with skills from computer science.

The goal of these two programs is to allow both traditional computer science students and students from outside the department to gain computation skills needed for their future pursuits.

The department offers a number of courses to students who wish to gain a broader appreciation of the field.

CS 100 Introduction to Computing

The computer is the most versatile tool ever invented. In this course, students learn how to work with computers and how computers affect lives. Lecture/laboratory. (This course does NOT satisfy any requirement of the Common Course of Study.)

CS 102 Principles of Computer Science I

(This course has been replaced by CS104, CS105, and CS106.)

CS 103 Principles of Computer Science II

(This course has been changed to CS150.)

CS 104 Introduction to Game Programming (syllabus)

Computer games are becoming an increasingly prominent part of our everyday lives, from entertainment to education. This course provides hands-on experience in game programming and covers the basic techniques, including graphics, events, controls, animations, and intelligent behaviors. Students learn the concepts and skills of object-oriented programming by designing and implementing a sequence of computer games. Lecture/laboratory. No prior knowledge in programming and computer games is required.

Course Offered: Fall semester

Provides NS credit for all non-major students. Students completing this course cannot receive credit for CS105 or CS106.

CS 105 Digital Media Computing (syllabus)

Digital media processing forms a basic block in technologies underlying today’s successful media, social, and publishing companies. This course covers various techniques for the creation and manipulation of multimedia, including pictures, sounds, texts, and movies. Students learn the concepts and skills of object-oriented programming by designing and implementing a series of digital effects. Lecture/laboratory. No prior background or experience in programming is required.

Course Offered: Fall semester

Provides NS credit for all non-major students. Students completing this course cannot receive credit for CS104 or CS106.

CS 106 Personal Robotics ( syllabus )

Robots are increasingly common, from factory floors to virtual robots on the internet. This course provides hands-on experience programming robots, both physical and virtual, with an emphasis on artificial intelligence. Lecture/laboratory. No prior background or experience in programming is required.

Course Offered: Spring semester

Provides NS credit for all non-major students. Students completing this course cannot receive credit for CS104 or CS105.

CS 150 Data Structures and Algorithms (syllabus)

This course continues the development of object oriented approaches to the design and implementation of software systems. Students will learn to analyze problems, algorithms and develop object-oriented solutions to problems. Students will also learn to use multiple data structures and the accompanying algorithms to store, index and retrieve data. Lecture/laboratory. (Formerly CS 103: Principles of Computer Science II.)

Prerequisite: CS104, CS105, or CS106 (Introductory Course)

Course Offered: Fall & spring semester

CS 200 Computers and Society (syllabus)

This course examines the computer’s cultural context: the managerial, political, legal, ethical, psychological, and philosophical implications of computing.

Course Offered: Spring semester

CS 202 Analysis of Algorithms (syllabus)

The design and analysis of algorithms and their complexity. This course studies techniques for measuring algorithm complexity, fundamental algorithms and data structures, intractable problems, and algorithm-design techniques.

Prerequisite: CS150 (Data Structures and Algorithms) and Math182 (Discrete Structures)

Course Offered: Fall semester

CS 203 Computer Organization (syllabus)

A study of digital logic, computer components, internal and external memory, instruction sets, interrupts, micro- and macro-programming. Lecture/laboratory.

Prerequisite: CS150 (Data Structures and Algorithms)

Course Offered: Fall semester

CS 205 Software Engineering (syllabus)

The analysis, design, implementation, and maintenance strategies appropriate for large software projects. Lecture/laboratory. Permission of department head required.

Prerequisite: CS150 (Data Structures and Algorithms)

Course Offered: Spring semester

CS 301 Principles of Programming Languages (syllabus)

An introduction to the theory of the design and implementation of contemporary programming languages. Topics include the study of programming language syntax and semantics, translators, and imperative, functional, logic and object-oriented language paradigms.

Prerequisite: CS202 (Analysis of Algorithms), CS203 (Computer Organization)

Course Offered: Spring semester of even-numbered years

CS 303 Theory of Computation (syllabus)

An introduction to the theoretical foundations of computer science and formal models of computation. Topics include formal languages, finite automata, computability, and undecidability.

Prerequisite: CS202 (Analysis of Algorithms) and PHIL200 (Logic)

Course Offered: Spring semester of odd-numbered years

CS 305 Computer Networks (syllabus)

The implementation and use of computer networks. Topics include the ISO reference model, communication protocols, local-area and wide-area networks, and wireless communications.

Prerequisite: CS203 (Computer Organization) or ECE313
Corequisite: CS205 (Software Engineering)

Course Offered: Spring semester of odd-numbered years

CS 320 Database Management Systems (syllabus)

This course examines the organization, design, and implementation of database management systems.

Prerequisite: CS205 (Software Engineering)
Corequisite: CS202 (Analysis of Algorithms)

Course Offered: Fall Semester Even Numbered Years

CS 390-394 Independent Study and Research

Independent study projects for juniors and seniors. Hours arranged. Permission of department head required.

Department Policy: A student interested in doing an independent study project should first choose an area to work in. The student then consults with her or his adviser and other faculty to determine who would be most appropriate and willing to supervise the project. Then the student and faculty supervisor decide on a suitable topic. The student writes up a detailed description of the project, including references, deadlines, and deliverables. When this description has been approved by the faculty supervisor, the description is forwarded from the supervisor to the department head. The department head, after discussing the project with the other faculty in the department, decides whether to approve the project. Because it may take several weeks for the above steps to be completed, the student should start by the middle of the semester preceding the one in which the project will be completed.

Course Offered: As needed

CS 401 Computer Graphics

The creation and use of graphical information and user interfaces.

Prerequisite: CS202 (Analysis of Algorithms), CS205 (Software Engineering); Math162 (Calculus II)

Course Offered: As needed

CS 406 Operating Systems (syllabus)

An in-depth study of operating systems, covering such topics as concurrent processes, memory management, input/output and file systems, and resource allocation.
Department Policy: students must work in teams to analyze, design, and implement a computerized solution to a substantial problem.

Prerequisite: CS203 (Computer Organization) or ECE313
Corequisite: CS205 (Software Engineering)

Course Offered: Spring semester of even-numbered years

CS 410-415 Special Topics

This course considers recent advances and/or subjects of current interest in computer science.

Prerequisite: Prerequisites vary according to the topic.

Course Offered: As needed

CS 420 Artificial Intelligence (syllabus)

An introduction to the study of intelligence as computation. Topics include problem-solving techniques, heuristic searches, and knowledge representation.

Prerequisite: CS202 (Analysis of Algorithms), CS205 (Software Engineering)

Course Offered: Fall semester of odd-numbered years

CS 470 Senior Project

In this course, students work in teams on the analysis, design, and implementation of a large-scale software project.

Prerequisite: Senior standing and either CS320 (Database Management Systems) or 305 (Computer Networks)

Course Offered: Spring semester

CS 495, 496 Senior Thesis

A two-semester, independent research project on a topic selected by the student and approved by the department. A student must undertake such a program for two semesters to graduate with honors. Provides a writing credit [W].

Department Policy: A student interested in doing a senior thesis should first choose an area to work in. The student consults with her or his adviser and other faculty to determine who would be most appropriate and willing to supervise the project. Then the student and faculty supervisor decide on a suitable topic and other faculty members to serve on the thesis committee. The student writes up a detailed description of the project, including references, deadlines, and deliverables. When this description has been agreed to by the thesis committee, the description is forwarded from the committee to the department. The department decides whether to approve the project. Because it may take several weeks for the above steps to be completed, the student should start by the middle of the junior year.

Department Policy: Before the end of the fall semester of the student’s senior year, the student will present to the faculty a status report on the progress made on the project.

Course Offered: This is a year-long course

* All students enrolled in Senior Project (CS 470) or Senior Thesis (CS 496) must take the Major Field Test in Computer Science. For each student in CS 470, the grade on the Major Field Test must count for part of the student’s gradepossibly as extra credit. During the spring semester of their senior year, students will be notified when the test will be given.

** CS 390 and CS 495 can be used only as free electives. Also, a student who is enrolled in CS 496 is allowed to take CS 470 only as a free elective.

Computational Methods Courses

The department also offers a number of courses for students who are interested in learning computational methods or obtaining a minor in computational methods.

CM 141 Introduction to Computational Media

This course introduces students to the basics of computing and teaches them how to write small programs. The course is centered around the manipulation of images and media files. Students will learn how to write small applications to control and display visual and audio information.

Prerequisite: MATH125

Course Offered: As needed

CM 151 Introduction to Computational Science

Computational science concentrates on the effective use of computer software, hardware, and mathematics to solve problems in science. The goal of this course is to teach science and engineering majors how to develop tailored, flexible, and efficient working environments built from small programs (scripts) written in the easy to learn, very high-level language Python. Students will learn to use existing applications and tools for automating simulation, data analysis, and visualization, and for steering simulations and computational experiments.

Prerequisite: MATH161 and one of the following: MATH162, ECON101, introductory science major elective

Course Offered: Fall semester

CM 160 Games as Models of the natural world

One of the best approaches to understanding a complex system is to create a model of that system, allowing for the examination of ideas involved in an otherwise hard to understand system. This class will explore board and card games as models of the natural world for developing a deeper understanding of the complex behaviors seen in the world around us. Students will examine existing games and learn techniques of game design to create their own models of the natural world. Students are required to have taken one lab science course and will need to know basic math concepts like fractions, but the primary requirement is creativity.

Prerequisite: One Natural Science (NS) lab course.

Course Offered: Fall semester

CM 261 Introduction to Numerical Computing for Engineers

This course will teach engineering students how to solve engineering problems using numerical computing methods and techniques. The course will use examples and applications from different engineering problems, particularly those in chemical, civil, and mechanical engineering. Students will learn how to program using the MATLAB programming environment.

Prerequisite: MATH161, MATH162. Not open to students who have credit for CM151

Course Offered: Spring semester

CM 390/391 Independent Study

Independent study projects for qualified juniors and seniors.