Andrea Vaccari
Assistant Professor of Computer Science

- Office
- 75 Shannon 217
- Tel
- (802) 443-2250
- avaccari@middlebury.edu
- Office Hours
- Spring 2025: Monday 7-8:30pm (online: email for zoom link); Wednesday 10:45-12:15pm (75SHS217)
I received my M.S. in physics from the Università degli Studi di Milano, Italy in 1996 and my Ph.D. degree in electrical engineering from the University of Virginia, Charlottesville, in 2014.
In 1998, I started working at the National Radio Astronomy Observatory where I was responsible for the design, development and production of the Atacama Large Millimeter Array (ALMA) Front End embedded monitor and control system until 2012. I joined the Virginia Image and Video Analysis (VIVA) laboratory in the Department of Electrical and Computer Engineering at the University of Virginia in 2010. After receiving my Ph.D., I continued to work there as research scientist and instructor for undergraduate and graduate courses. In January 2018 I moved to Vermont and joined the Department of Electrical and Biomedical Engineering at the University of Vermont as lecturer and, in July 2018, I became assistant professor of Computer Science at Middlebury College.
My main research interests include image and signal processing with emphasis on remote sensing and biomedical/biological images, model-based data mining for large spatiotemporal datasets, and graph signal processing as well as novel approaches in experiential undergraduate and graduate education.
Courses Taught
CSCI 0145
Introduction to Computing
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
Requirements
CSCI 0202
Current
Upcoming
Computer Architecture
Course Description
Computer Architecture
A detailed study of the hardware and software that make up a computer system. Topics include assembly language programming, digital logic design, microarchitecture, pipelines, caches, and RISC vs. CISC. The goal of the course is teaching students how computers are built, how they work at the lowest level, and how this knowledge can be used to write better programs. (CSCI 0201) (Seniors by waiver) 3 hrs. lect./lab
Terms Taught
Requirements
CSCI 0435
Upcoming
Embedded Systems
Course Description
Embedded Systems
In this course we will learn about microcontrollers (compact single-chip integrated circuits at the core of embedded systems), including their architecture and how they interface with the outside world. In laboratory assignments, we will experiment with different families of microcontrollers, analyze various types of interfaces, and learn how to connect with external sensors and devices. While gaining hands-on familiarity with the different aspects of embedded systems, teams of students will engage in a semester-long project to design and build their own embedded system. (CSCI 0202) 3 hrs. lect./1.5 hrs. lab.
Terms Taught
Requirements
CSCI 0452
Image Processing
Course Description
Image Processing
In this course students will learn basic image processing concepts and explore practical cross-disciplinary case studies in teams. They will use open-source tools to tackle real-world image and video analysis problems ranging from enhancing and denoising to tracking and extracting information from images and videos. Collaboratively, students will get to apply these tools to a problem of their choice in a semester-long project. (MATH 0200 and CSCI 201) 3 hrs. lect./lab.
Terms Taught
Requirements
CSCI 0500
Current
Upcoming
Advanced Study
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
CSCI 0701
Senior Seminar
Course Description
Senior Seminar
The senior seminar provides a capstone experience for computer science majors at Middlebury College. We will discuss strategies for conducting research and developing large-scale software while effectively communicating technical concepts through writing and presentations. In teams, students will identify a research question or software development project and then design, develop, test and analyze their final products. Lectures will be complemented by readings and discussions related to the impacts of computing on society. This course fulfills the Responsible Computing requirement for the Computer Science major. (Approval only)
Terms Taught
CSCI 0702
Upcoming
Senior Thesis
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