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.  This course is still used to track students with transfer or AP credit.  Credit in this course is equivalent to CS104, CS105, or CS106; but this credit does not convey a NS learning outcome.

CS 103 Principles of Computer Science II

This course has been changed to CS150.  This course is still used to track students with transfer credit for CS Data Structures and Algorithms.  Credit in this course is equivalent to CS150; but this credit does not convey a Writing learning outcome.

CS 104 Introduction to Game Programming (syllabus)

This course provides hands-on experience developing computer games. The course covers the basic techniques of game programming, 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. No prior knowledge in programming and computer games if required. A good understanding of algebra and geometry is strongly recommended.

Co-/Pre-requisite: MATH 141 (Differential Calculus and Economic Modeling) OR co-req MATH 161 (Calculus I).

Course Offered: Fall and spring semesters

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. No prior background or experience in programming is required.

Co-/Pre-requisite: MATH 141 (Differential Calculus and Economic Modeling) OR co-req MATH 161 (Calculus I).

Course Offered: Fall and spring semesters

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. No prior background or experience in programming is required.

Co-/Pre-requisite: MATH 161 (Calculus I).

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. The laboratory focuses on the World Wide Web.

Course Offered: Spring semester

Provides both W and V credit for CCS graduation requirements.

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. [If you have not met the math prerequisite for this course, but feel you have the necessary math background, please see the Dept. Policies Page.]

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: Fall & 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

CS 303 Theory of Computation (syllabus)

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

Prerequisite: CS202 (Analysis of Algorithms)

Course Offered: Spring semester

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

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

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

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 416 Knowledge and Strategy

This course is an introduction of interactive epistemology and game theory, a mathematical theory of conflict and cooperation between rational agents, with emphasis on knowledge and multi-agent systems. The course also provides an overview of other topics at the intersection of theoretical computer science and economics, such as agreement, common knowledge, mechanism design and auctions.

Prerequisite: CS 150 (Data Structures and Algorithms) and MATH 186/PSYC 120/MATH 335; or CS 104/CS 105 (introductory courses) and MATH 335

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

CS 424 Introduction to Machine Learning

This course is an introduction to the theoretical and practical aspects of the design and implementation of Machine Learning (ML) algorithms. It will provide students an in-depthintroduction to the areas of Supervised and Unsupervised ML. The course will cover core ML algorithms for classification, regression, clustering, and dimensionality reduction.

Prerequisite: CS202 (Analysis of Algorithms)
Corequisite: MATH272 or MATH300

Course Offered: Spring semester

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

ABET/CAC Outcome 1:  Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.

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

ABET/CAC Outcome 1:  Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.

* 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 grade — possibly 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 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.

Co-/Pre-requisite: ECON101 (Principles of Economics) or an introductory science major elective.

Course Offered: Fall semester

Note: Cannot be taken concurrently with CS 104, 105 or 106. Cannot be taken for credit after completing CS 104, 105 or 106

CM 160 Games as Models of the Natural World

This class will explore board and card games as models of the natural world to foster a deeper understanding of the complex behaviors seen in the world around us. Students will examine existing games and learn techniques of game design for creating 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 (Calculus I), MATH162 (Calculus II). 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.