Christopher Andrews
Associate Professor of Computer Science

- Office
- 75 Shannon 215
- Tel
- (802) 443-5686
- candrews@middlebury.edu
- Office Hours
- M 3:00p - 4:00p, Tu 3:30p - 5:00p, W 3:30p - 5:00p
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
CSCI 0105
Algorithmic World
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
Requirements
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
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 0312
Upcoming
Software Development
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
CSCI 0465
Upcoming
Information Visualization
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
Requirements
CSCI 0466
Usable Mobile Interfaces
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
Requirements
CSCI 0467
Generative Art
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) 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 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