Christopher Andrews is a Visiting 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.
Personal Homepage "http://www.cs.middlebury.edu/~candrews"
Courses offered in the past four years.
▲ indicates offered in the current term
▹ indicates offered in the upcoming term[s]
CSCI 0101 - The Computing Age ▲
The Computing Age
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?" (Seniors by waiver) 3 hr. lect./lab DED
Fall 2013, Spring 2014, Fall 2014, Fall 2015
CSCI 0202 - 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 previously or concurrently) 3 hrs. lect./lab DED
Fall 2013, Fall 2014
CSCI 0312 - 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 previously or concurrently, and CSCI 0201) 3 hrs. lect./lab
CSCI 0461 - Computer Graphics
Computer graphics is the study of how computers represent, manipulate, and ultimately display visual information. In this course we will focus primarily on three-dimensional graphics, touching on topics such as modeling (meshes, hierarchical models, and transformations), rendering (lighting, texturing, rasterization, and clipping), animation, and GPU programming. We will look at the mathematical foundations of these techniques as well as implementation techniques using OpenGL. (CSCI 0202 and MATH 0200) 3 hrs. lect./lab DED
CSCI 0465 - 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) DED
CSCI 0500 - 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.
Winter 2014, Spring 2014, Fall 2014, Winter 2015, Spring 2015, Fall 2015, Spring 2016
CSCI 0702 - Senior Thesis
The senior thesis is required for all CSCI majors who wish to be considered for 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.
CSCI 1003 - Generative Art
Generative art is process-driven creation in which the artist creates an autonomous system that produces the artwork as output. In this course we will write computer programs, focusing on algorithmic creation to generate images. We will discuss the nature of generative art and cover technical topics such as basic algorithmic drawing, image manipulation, randomness and noise, emergence, and visualization. There is no assumption of prior knowledge of programming, so significant time will be spent learning the basics of programming using Processing, a popular visually oriented programming language. DED WTR