Andrea Vaccari
Assistant Professor of Computer Science
- Office
- 75 Shannon 217
- Tel
- (802) 443-2250
- avaccari@middlebury.edu
- Office Hours
- Fall 2024: Monday 7-8:30pm (online: email for zoom link); Wednesday 12:30-2:00pm (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
Current
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
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
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
INTD 1242
Carbonomics & Renewable Energy
Course Description
Carbonomics and Renewable Energy at Middlebury College
What is the cycle of carbon from its generation to its exchange on the market? What are the environmental, social, and equity impacts associated with renewable energy projects and assets? How does Middlebury generate, manage, and monitor its growing and increasingly complex portfolio of renewables to reach carbon neutrality? We will explore these questions through lectures and group projects. By the end of this course students will be able to propose ways to optimize the management of Middlebury’s portfolio with an understanding of its relationship to financial, equity, and environmental considerations.
Terms Taught
Requirements