Daniel Scharstein

Charles A. Dana Professor of Computer Science

 work(802) 443-2438
 MWF 1:30-2:30pm, Tue 10:30-noon, and by appointment
 McCardell Bicentennial Hall 640A

Daniel Scharstein studied Computer Science at the Universität Karlsruhe, Germany, and received his PhD from Cornell University in 1997. His research interests include computer vision, in particular stereo vision, and robotics. He maintains several online computer vision benchmarks at http://vision.middlebury.edu.


Personal Homepage



Course List: 

Courses offered in the past four years.
indicates offered in the current term
indicates offered in the upcoming term[s]

CSCI 0150 - Computing for the Sciences      

Computing for the Sciences
In this course we will provide an introduction to the field of computer science geared towards students interested in mathematics and the natural sciences. We will study problem-solving approaches and computational techniques utilized in a variety of domains including biology, chemistry, physics, and engineering. Students will learn how to program in Python and other languages, how to extract information from large data sets, and how to utilize a variety of tools employed in scientific computation. The course has no prerequisites and assumes no prior experience with programming or computer science. 3 hrs. lect./l1 hr. lab DED

Fall 2014, Fall 2015, Spring 2017

More Information »

CSCI 0201 - Data Structures      

Data Structures
In this course we will study the ideas and structures helpful in designing algorithms and writing programs for solving large, complex problems. The Java programming language and object-oriented paradigm are introduced in the context of important abstract data types (ADTs) such as stacks, queues, trees, and graphs. We will study efficient implementations of these ADTs, and learn classic algorithms to manipulate these structures for tasks such as sorting and searching. Prior programming experience is expected, but prior familiarity with the Java programming language is not assumed. (One CSCI course at the 0100-level) 3 hrs. lect./lab DED

Spring 2015, Spring 2016, Fall 2016, Fall 2017, Fall 2018

More Information »

CSCI 0202 - Computer Architecture      

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) 3 hrs. lect./lab DED

Spring 2018

More Information »

CSCI 0313 - Programming Languages      

Programming Languages
A systematic approach to concepts and features of programming languages. The course focuses on four major programming paradigms: procedural, object-oriented, functional, and logic programming languages. Students will program in several languages representing the different paradigms. Topics include grammars, data types, control structures, run-time organization, procedure activation, parameter passing, higher-order functions, lambda expressions, and unification. (CSCI 0200 and CSCI 0202) 3 hrs. lect./lab DED

Spring 2015, Spring 2017

More Information »

CSCI 0433 - Compiler Design      

Compiler Design
An introduction to the design and construction of compilers and translators. Topics include context-free grammars, lexical analysis, symbol tables, top-down and bottom-up parsing, parser generators, error recovery, run-time organization, declaration processing, type checking, code generation, and optimization. Through the course of the semester students will implement a complete compiler for a simple programming language. (CSCI 0202 and CSCI 0301) 3 hrs. lect./lab DED

Fall 2014

More Information »

CSCI 0451 - Machine Learning      

Machine Learning
Machine Learning is the study and design of computational systems that automatically improve their performance through experience. This course introduces the theory and practice of machine learning and its application to tasks such as database mining, pattern recognition, and strategic game-playing. Possible topics include decision-tree methods, neural networks, Bayesian and statistical methods, genetic algorithms, and reinforcement learning. (CSCI 0200 and CSCI 0201 and MATH 0200) 3 hrs. lect./lab DED

Fall 2017, Fall 2018

More Information »

CSCI 0453 - Computer Vision      

Computer Vision
The goal of computer vision is to extract information from digital images and movies. Topics covered in this course include algorithms for edge and motion detection, stereo vision, object recognition, and recovering structure from motion. A range of mathematical techniques will be used to model problems and algorithms. Students will implement, test, and evaluate several computer vision techniques, and will gain experience with analyzing real, noise-contaminated image data. (CSCI 0202 and MATH 0200) 3 hrs. lect./lab DED

Spring 2016

More Information »

CSCI 0500 - Advanced Study      

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.

Fall 2014, Winter 2015, Spring 2015, Fall 2015, Winter 2016, Spring 2016, Fall 2016, Winter 2017, Spring 2017, Fall 2017, Winter 2018, Spring 2018, Fall 2018, Spring 2019

More Information »

CSCI 0701 - Senior Seminar      

Senior Seminar
This senior seminar provides a capstone experience for computer science majors at Middlebury College. Through lectures, readings, and a series of two to three week individual and group assignments, we will introduce important concepts in research and experimental methods in computation. Examples will include: reading research papers; identifying research problems; dealing with big data; experimental design, testing and analysis; and technical writing in computer science. (Approval only).

Fall 2015, Fall 2016

More Information »

CSCI 0702 - Senior Thesis      

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.

Spring 2016, Fall 2016, Winter 2017, Winter 2018, Spring 2018, Fall 2018, Spring 2019

More Information »

INDE 0800 - Ind Scholar Thesis      

Spring 2015

More Information »

Program in Neuroscience

McCardell Bicentennial Hall
276 Bicentennial Way
Middlebury College
Middlebury, VT 05753