Andrea Vaccari
Associate Professor of Computer Science
- Office
- 75 Shannon 217
- Tel
- (802) 443-2250
- avaccari@middlebury.edu
- Office Hours
- Fall 2026: Mon 1:30-3:30pm, Fri 10-12pm, or by appointment.
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
Upcoming
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?" 3 hr. lect./1 hr. lab
Terms Taught
Requirements
CSCI 0202
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) 3 hrs. lect./lab
Terms Taught
Requirements
CSCI 0435
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
Current
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 0505
Current
Upcoming
Independent Study
Course Description
Independent Study
Individual study for qualified students in more advanced topics in computer science theory, systems, or application areas. Particularly suited for students who wish to pursue further study beyond a previous CS elective or research project, and where the scope of the work fits best in a 1/2 credit experience rather than a 1-credit independent project or a 2-credit senior thesis.
Terms Taught
CSCI 0702
Current
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
PHYS 0225
Upcoming
Computational Physics
Course Description
Computational Physics
The laws of physics provide a beautiful mathematical framework for describing the universe. Yet it’s rare that exact solutions to the resulting equations can be found with pen and paper. In this course we will explore a range of powerful computational methods that allow us to solve physical problems, primarily using the Python programming language. Applications of these methods will include problems in Newtonian mechanics, electricity and magnetism, statistical and thermal physics, quantum mechanics, and relativity. No prior experience with programming is required. Students who meet the prerequisites for PHYS 0325 must register for that course instead. (Not open to students who meet the PHYS 0325 prerequisites) (PHYS 0114)
Terms Taught
Requirements
PHYS 0325
Upcoming
Computational Physics
Course Description
Computational Physics
The laws of physics provide a beautiful mathematical framework for describing the universe. Yet it’s rare that exact solutions to the resulting equations can be found with pen and paper. In this course we will explore a range of powerful computational methods that allow us to solve physical problems, primarily using the Python programming language. Applications of these methods will include problems in Newtonian mechanics, electricity and magnetism, statistical and thermal physics, quantum mechanics, and relativity. Prior programming experience or physics coursework at 200 level is required to enroll in this course; students without this background may be eligible to enroll in PHYS 0225 (not open to students who have taken PHYS 0225). PHYS 0218 OR PHYS 0114 AND (CSCI 0145 OR CSCI 0146 OR CSCI 0150).
Terms Taught
Requirements