Computer Science

Programs

Courses

BIOL 383: Bioinformatics: Code & Chromosomes

Credits 3

BIOL/CS 383 introduces students to key concepts in the field of bioinformatics. Students work in cross-discipline pairs to process real genomic data sets. Students learn about types of DNA sequencing, analysis and visualization software (Qiime2 and R), building and running complex scientific workflows.

CS 128: Programming & Problem Solving

Credits 4

This course provides an introduction to foundational computer science concepts centered on analytical thinking, programming, and problem-solving skills. Through a rigorous approach to dissecting and systematically solving challenges, students develop core algorithmic techniques for addressing real-world issues. The course focuses on fostering an understanding of computational solutions while strengthening critical thinking, logic, and creativity.

CS 130: Symbolic Logic

Credits 3
The study of formal, deductive logic emphasizing the methods for demonstrating the validity of arguments. Includes truth functional propositional logic and quantification theory through the logic of relations.

CS 256: Data Structures

Credits 4

A systematic introduction to the methodology of problem solving with computers. Emphasizes the design and development process, data abstraction and fundamental data structures, programming for reuse and the development of large programs. Introduces the basic notions of software engineering and analysis of algorithms. Discusses ethical issues in computing.

CS 266: Computing Skills

Credits 1
This module-based course provides students with practice using the computing tool chains and technical skills they will need to use throughout their courses and careers. These tools will generally apply to their chosen track and may include the Linux command line, version control systems, individual programming languages, regular expressions, security best practices or other tools.

CS 275: Computing for Social Good

Credits 3

This course critically examines some important “for social good” problems that computer science and technology can help address. Students study topics such as ethical community engagement, engineering for social justice, ways to advocate for social change, and models to implement “for social good” projects. This course does not involve computer programming and is open to any student interested in social justice, community engagement, ethical application of technology, and similar social issues.

CS 281: Applied Groups

Limited to members of the Computer Science Applied Groups. Working under the direction of a faculty or staff member, groups of CS students provide infrastructure support for the CS Department and the College. Current groups include: CS System Administrators, Hardware Interfacing Project, Helping Others Program, CS for Social Good, and Web Development. No more than three credits total in an academic career.

CS 310: Algorithms

Credits 3
A study of algorithms and the data structures on which they are based, with a focus on the analysis of their correctness and complexity in terms of running time and space.

CS 320: Principles of Computer Organization

Credits 3
An introduction to the structure and function of computing machines. The concept that computing machines consist of layers of virtual machines is an organizing principle. Topics include information representation, automata, assembly language programming, register machines, microprogramming, conventional machines and language processors.

CS 325: Systems Engineering & Administration

Credits 3

This course is an introduction to the engineering and administration or computing systems and the associated storage and networking systems required to support users of modern science and commerce platforms. The course material is built around a sequence of hands-on labs which cover topics from the design of computing systems and facilities through the full provisioning of a machine which supports end users. Additional topics include the ethics of system administration, data privacy and protection.

CS 335: Advanced Data Structures

Credits 3

Data structures are a central topic in computer science. Building on the material developed in CS 256 Data Structures, this course covers more advanced approaches to organizing data based on network, tree and string based structures. Problems are chosen from data-intensive domains, motivating students to solve complex problems by using efficient data structures.

CS 345: Software Engineering

Credits 3

The theory, techniques and technologies associated with the deconstruction and testing of software systems, particularly large software systems. Students learn various approaches to procedural decomposition and system architecture and build multiple large collaborative software projects. Explores the tools used for building and testing software systems, particularly in the context of open source software.

CS 350: Electronics & Instrumentation

Credits 4

This is a laboratory-oriented course dealing with analog and digital circuits. Circuit theory is developed for diodes, transistors, operational amplifiers and integrated circuits. These components are used to construct a range of devices, including power supplies, oscillators, amplifiers and logic circuits. Laboratory work will allow students to gain an operational understanding of these basic concepts. Skills debugging, circuit building, and reading circuit diagrams will be stressed.

CS 355: Computer Game Design

Credits 3

This course covers a variety of software engineering and user experience topics through the lens of game design. Students construct several games over the course of the term, first individually and then collaboratively, putting theory into practice.

CS 360: Parallel & Distributed Computation

Credits 3

This course covers the development and application of parallel programming and problem-solving techniques to solve computationally intensive problems in a variety of disciplines. Parallel computation invites new ways of thinking about problems and is an important skill in corporate and research environments. Students learn about programming paradigms used in parallel computation, the organization of parallel systems, and the application of programs and systems to solving problems in biology, physics, geography, and other disciplines.

CS 365: Artificial Intelligence and Machine Learning

Credits 3

This course offers an introduction to topics in Artificial Intelligence and Machine Learning and covers their theoretical underpinnings while providing opportunities to put various techniques into practice. Topics covered may include search, planning, game-playing neutral networks and other machine learning approaches.

CS 375: Cyberethics in the Current Age

Credits 3

In this course, students grapple with ethical issues related to technology. We examine who benefits and who is harmed by technologies - especially insofar as these technologies might amplify existing marginalities and privileges. We also consider unintended consequences of technologies and develop various lenses to examine technologies for their social, ethical, and social justice consequences.

CS 383: Bioinformatics: Code & Chromosomes

Credits 3

BIOL/CS 383 introduces students to key concepts in the field of bioinformatics. Students work in cross-discipline pairs to process real genomic data sets. Students learn about types of DNA sequencing, analysis and visualization software (Qiime2 and R), building and running complex scientific workflows.

CS 388: Methods For Research and Dissemination in Computer Science

Credits 3

This course provides an introduction to the process of proposal writing. In the course, students focus primarily on the learning of how to select an advanced topic, write an annotated bibliography, review related literature, and finally write a proposal. 

CS 410: Networks & Networking

Credits 3
A study of the hardware and software technology and standards which support local area networks, wide area networks and the Internet. Emphasizes the TCP/IP protocol suits and the associated tools that provide universal connectivity to a wide variety of systems around the world. Explores the network hierarchy, from the physical level (transmission media) up through client/server applications such has HTTP servers and the domain name system.

CS 420: Operating Systems

Credits 3
A study of the software that manages the hardware and provides the interface between application programs and system resources. Topics include scheduling, memory management, persistent storage, resource contention, locking and multi-processor synchronization. Using open source software, students explore a production quality operating system and learn by modifying it.

CS 430: Database Systems

Credits 3
An introduction to database management systems. Database design and development are viewed from the perspective of a user, an application program and the database kernel itself. Focuses primarily on relational and object-oriented data models and related software.

CS 440: Programming Languages

Credits 3
The nature of programming languages and the programs that implement them. Focuses on the abstract structures programming languages provide for expressing algorithms and the methods by which they are realized on concrete hardware.

CS 455: Computer Game Design Studio

Credits 1
This studio course allows students to take skills they have developed in other courses and apply them to a term-long project in which they will undertake all aspects of the game design process in greater depth.

CS 474: Programming Music for Computers

Credits 3

This course combines traditional approaches to composing and arranging for the Western symphony orchestra with a software-based approach using MIDI and sampled acoustic instruments. Both approaches will be taught in conjunction with analyses of classic and contemporary film scoring techniques. Projects can be realized using either traditional music notation or the MIDI system. A final project will include the scoring of an original short video or a video in public domain.

CS 481: Internship (requires departmental approval)

Credits 0 3

An internship or practicum organized by the student in consultation with the adviser. Credits for the experience must be negotiated between the student, adviser and the on-site supervisor. Depending on the specifics of the experience students may develop their software development, system analysis, communication, or other critical skills.

CS 485: Independent Study

Credits 1 3

Investigation of a specific topic conceived and planned by the student in consultation with a faculty supervisor. Culminates in a comprehensive report prepared in the style of a thesis or research paper.

CS 488: Senior Seminar

Credits 3

Each participant completes a semester-long capstone project in a research group setting. Weekly meetings are scheduled with the instructor individually and with the group as a whole. In addition, explores topics from the cultural, ethical, historical or broader scientific context of computer science in readings and discussion. Culminates in a public seminar and student presentation.