For information about the department’s major and minor options, please see the Program page. The department also offers specialized computational methods courses for students who want to strengthen their studies with computational skills.
The department offers a range of computer science courses for students who wish to develop a broader understanding of the field.
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 is required. A good understanding of algebra and geometry is strongly recommended.
This course is no longer offered.
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.
This course is no longer offered.
This course offers an introduction to computational thinking and programming, emphasizing problem-solving skills and foundational concepts in computer science. Students will learn to design, write, and debug programs using the Python programming language. Topics include fundamental programming concepts such as variables, data types, control structures, functions, loops, and basic data structures like lists and dictionaries. Social issues with data, such as privacy and ethics, will also be discussed. No prior programming experience is expected.
Prerequisite: None
CCS Attributes: [NS//INEC, RC]
Course Offered: Fall & spring semester
This course builds on foundational programming knowledge and introduces students to the principles and practices of object-oriented programming in Java. Through hands-on projects and practical exercises, students will also explore topics like recursion, exception handling, and data structures in the Java Collections Framework.
Prerequisite: CS 110
Corequisite: MATH141 or 161
CCS Attributes: [NS//INEC, RC]
Course Offered: Fall & spring semester
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/Lab)
Prerequisite: CS 104, CS 105, or CS 120
Course Offered: Fall & spring semester
This course examines the intersection of computers and society through political, legal, ethical, psychological, and philosophical lenses. Students will cultivate their critical thinking and communication skills in a collaborative environment. The course provides deep insights into the societal implications of computing, recognizing its significance in our evolving technological landscape. Topics include legal and ethical frameworks, the history of computing, cybersecurity and privacy, freedom of speech, algorithmic influence on society, and professional ethics.
Prerequisite: None
CCS Attributes: [V, W // CECS, INST, W]
Course Offered: Fall & spring semester
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: CS 150 and MATH182
Course Offered: Fall semester
A study of digital logic, computer components, internal and external memory, instruction sets, interrupts, micro- and macro-programming. (Lecture/Lab)
Prerequisite: CS 150
Course Offered: Fall semester
The course covers analysis, design, and implementation strategies for large-scale software projects. Work is group-intensive. In large groups, students design and implement a comprehensive semester-long project, progressing from an informal concept to a functional deliverable. Concurrently, the large group experience is supported by a small group lab sequence introducing core software engineering tools. Essential to the completion of the project are topics including information management, high-level networking, distributed client-server development, and secure computing practices. (Lecture/Lab)
Prerequisite: CS 150
Course Offered: Spring semester
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: CS 202 and CS 203
Course Offered: Spring semester
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: CS 202
Course Offered: Spring semester
This course examines the organization, design, and implementation of database management systems.
Prerequisite: CS 205
Corequisite: CS 202
Course Offered: Fall Semester
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
An in-depth study of operating systems, covering process and memory virtualization; data persistence using file systems; concurrency through threading, interprocess communication, and distributed programming. The coursework focuses on simulations and a continuing group project to provide mechanisms for specific topical understanding and the creation of simplified system software such as system shells, web servers, and database servers.
Prerequisite: CS 203 or ECE313
Corequisite: CS 205
Course Offered: Spring semester
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
An introduction to the study of intelligence as computation. Topics include problem-solving techniques, heuristic searches, and knowledge representation.
Prerequisite: CS 202 and CS 205
Course Offered: Fall semester
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-depth introduction to the areas of Supervised and Unsupervised ML. The course will cover core ML algorithms for classification, regression, clustering, and dimensionality reduction.
Prerequisite: CS 202
Corequisite: MATH272 or MATH300
Course Offered: Spring semester
This course covers topics in Human-Computer Interaction (HCI), including identifying users’ needs, rapid prototyping, visual design, and the evaluation of existing systems. Students learn principles and methods that will help them recognize and create usable interfaces. Students apply these methods to evaluate real-world systems, measuring how they impact productivity, and more broadly experience.
Prerequisite: CS 205 (Software Engineering)
Course Offered: Fall semester
In this course, students work in teams on the analysis, design, and implementation of a large-scale software project.
Prerequisite: Senior standing and CS 205.
Course Offered: Spring semester
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 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 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.
This course is no longer offered.
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
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 CM 151
Course Offered: Spring semester
Independent study projects for qualified juniors and seniors.