Amy Briggs
Office
75 Shannon 213
Tel
(802) 443-2255
Email
briggs@middlebury.edu
Office Hours
Tues 12:20 - 1:20 pm, Wed 2:00 - 3:00 pm, Thurs 2:00 - 3:00 pm, and by appointment

Courses Taught

Course Description

Introduction to Computing
In this course we will provide a broad introductory overview of the discipline of computer science, with no prerequisites or assumed prior knowledge of computers or programming. A significant component of the course is an introduction to algorithmic concepts and to programming using Python; programming assignments will explore algorithmic strategies such as selection, iteration, divide-and-conquer, and recursion, as well as introducing the Python programming language. Additional topics will include: the structure and organization of computers, the Internet and World Wide Web, abstraction as a means of managing complexity, social and ethical computing issues, and the question "What is computation?" (Juniors and Seniors by waiver) (formerly CSCI 0101) 3 hr. lect./1 hr. lab

Terms Taught

Fall 2025

Requirements

DED

View in Course Catalog

Course Description

Computing for the Sciences
In this course we will provide an introduction to the field of computer science geared towards students interested in mathematics and the natural sciences. We will study problem-solving approaches and computational techniques utilized in a variety of domains including biology, chemistry, physics, and engineering. Students will learn how to program in Python and other languages, how to extract information from large data sets, and how to utilize a variety of tools employed in scientific computation. The course has no prerequisites and assumes no prior experience with programming or computer science. (Juniors and Seniors by waiver) 3 hrs. lect./lab

Terms Taught

Spring 2021, Fall 2021, Spring 2022

Requirements

DED

View in Course Catalog

Course Description

Data Structures
In this course we will study the ideas and structures helpful in designing algorithms and writing programs for solving large, complex problems. The Java programming language and object-oriented paradigm are introduced in the context of important abstract data types (ADTs) such as stacks, queues, trees, and graphs. We will study efficient implementations of these ADTs, and learn classic algorithms to manipulate these structures for tasks such as sorting and searching. Prior programming experience is expected, but prior familiarity with the Java programming language is not assumed. (CSCI 0145 or CSCI 0146 or CSCI 0150) (Juniors and Seniors by waiver) 3 hrs. lect./lab

Terms Taught

Fall 2022, Spring 2023, Fall 2023, Spring 2025

Requirements

DED

View in Course Catalog

Course Description

Theory of Computation
This course explores the nature of computation and what it means to compute. We study important models of computation (finite automata, push-down automata, and Turing machines) and investigate their fundamental computational power. We examine various problems and try to determine the computational power needed to solve them. Topics include deterministic versus non-deterministic computation, and a theoretical basis for the study of NP-completeness. (CSCI 0200 and CSCI 0201) 3 hrs. lect./disc.

Terms Taught

Fall 2021, Spring 2022, Spring 2024, Fall 2024

Requirements

DED

View in Course Catalog

Course Description

Advanced Study
Individual study for qualified students in more advanced topics in computer science theory, systems, or application areas. Particularly suited for students who enter with advanced standing. (Approval required) 3 hrs. lect.

Terms Taught

Spring 2021, Fall 2021, Winter 2022, Spring 2022, Fall 2022, Winter 2023, Spring 2023, Fall 2023, Winter 2024, Spring 2024, Fall 2024, Winter 2025, Spring 2025, Fall 2025, Winter 2026, Spring 2026

View in Course Catalog

Course Description

Senior Thesis
The senior thesis is recommended for students interested in pursuing graduate study in Computer Science. Students will spend the semester researching and writing, and developing and experimenting as appropriate for their topic. All students will be expected to report on their work in the form of a written thesis, a poster, and an oral presentation at the end of the semester. In addition, throughout the semester, students will meet as a group to discuss research and writing, and will be expected to attend talks in the Computer Science lecture series. Before approval to join the class is granted, students are expected to have chosen a thesis adviser from the CSCI faculty, and determined a thesis topic with the guidance and approval of that adviser. (Approval required) 3 hrs. lect./disc.

Terms Taught

Fall 2025, Winter 2026, Spring 2026

View in Course Catalog