Christopher Andrews
Office
75 Shannon 215
Tel
(802) 443-5686
Email
candrews@middlebury.edu
Office Hours
On Leave 2023-24

Christopher Andrews is an Assistant Professor of Computer Science. He has a Ph.D. in Computer Science from Virginia Tech, an MS in Computer Engineering from Carnegie Mellon University and a BA in Theatre and Computer Science from Wesleyan University. Professor Andrews’ research interests largely fall under the umbrella of Human Computer Interaction (HCI), the study of how computers can fit into and support human endeavors. More specifically, his interests include visual analytics, information visualization, generative art, graphics, and alternative (or just really large) displays.

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) 3 hr. lect./1 hr. lab

Terms Taught

Spring 2020

Requirements

DED

View in Course Catalog

Course Description

Understanding Our Algorithmic World
In this course through lectures, labs, and discussions, we will examine the nature of computers and their role in our lives. We will use the lens of multimedia programming to learn basic computer programming and how computers represent and manipulate many common forms of data, such as text and images. We will also talk about the history of computers and learn how they interoperate to create the world we know today, and we will examine the societal impacts of technology on our lives, including implications for privacy, access to resources, and the increasing role of algorithms in shaping our world. (not open to students who have taken CSCI 0145 or higher) 3 hrs. lect./lab

Terms Taught

Fall 2020, Spring 2022

Requirements

DED

View in Course Catalog

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 teach 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

Spring 2023

Requirements

DED

View in Course Catalog

Course Description

Software Development
This course examines the process of developing larger-scale software systems. Laboratory assignments emphasize sound programming practices, tools that facilitate the development process, and teamwork. (CSCI 0200 and CSCI 0201) 3 hrs. lect./lab

Terms Taught

Fall 2019, Fall 2020, Spring 2021, Fall 2021, Fall 2022

View in Course Catalog

Course Description

Information Visualization
Information visualization is used to reveal patterns, trends, and outliers within abstract data. In this course we will cover topics such as the transformation of data to visual representations, common approaches to dealing with different types of data, perceptual issues that govern how visualizations are interpreted, and the development of interactive visualization tools. This course will culminate in a significant final visualization project. (CSCI 0201)

Terms Taught

Fall 2021, Fall 2022

Requirements

DED

View in Course Catalog

Course Description

Usable Interface Design for Mobile Applications
In this course we will explore the fundamental concepts of human-computer interaction and interface design. We will focus on applying an iterative, human-centric design process to mobile development. Topics will include user interface design, user experience, usability, prototyping, user testing, and mobile development. A significant portion of the class will be spent developing a mobile app, walking it through the various prototyping and testing stages. (CSCI 0312) 3 hrs. lect./lab.

Terms Taught

Fall 2019, Spring 2022

Requirements

DED

View in Course Catalog

Course Description

Generative Art
In this course we will explore the field of generative art – the artistic practice based on the creation of processes that yield art and design as an output. Through projects, we will find new applications for computing techniques such as visualization, physical simulation, stochastic processes, agent-based modeling, iterated function systems, fractals, genetic algorithms and machine learning. A portion of the class will also be devoted to reading research literature and discussing the nature of computation creativity. A background in art is not required. (CSCI 0201) (not open to students who have taken CSCI 1003) 3 hrs. lect./lab.

Terms Taught

Spring 2020, Spring 2023

Requirements

ART, 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

Fall 2019, Winter 2020, Spring 2020, Fall 2020, Winter 2021, Spring 2021, Fall 2021, Winter 2022, Spring 2022, Fall 2022, Winter 2023, Spring 2023, Fall 2023, Winter 2024, Spring 2024

View in Course Catalog

Course Description

Senior Thesis
The senior thesis is required for all CSCI majors who wish to be considered for high and highest departmental honors, and 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. (CSCI 0701 and approval required) 3 hrs. lect./disc.

Terms Taught

Winter 2021, Spring 2021

View in Course Catalog