Middlebury

 

Daniel Scharstein

Professor of Computer Science

Email: 
Phone: work802.443.2438
Office Hours: Mon, Tue, Wed, Fri 1-2pm, and by appointment.
Download Contact Information

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

 

Courses

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?" 3 hr. lect./lab

DED

Fall 2009, Fall 2010, Fall 2011, Fall 2012

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 2010, Spring 2011, Spring 2012, Spring 2013

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 previously or concurrently) 3 hrs. lect./lab

DED

Fall 2010, Fall 2011, Fall 2012

More Information »

CSCI 0311 - Artificial Intelligence      

Artificial Intelligence
Artificial Intelligence (AI) is the study of computational systems that exhibit rational behavior. Applications include strategic game playing, medical diagnosis, speech and handwriting recognition, Internet search, and robotics. Course topics include intelligent agent architectures, search, knowledge representation, logical reasoning, planning, reasoning under uncertainty, machine learning, and perception and action. (CSCI 0200 and CSCI 0201) 3 hrs. lect./lab

DED

Fall 2009

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 2009

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

Spring 2011

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 2010, Spring 2013

More Information »

CSCI 0461 - Computer Graphics      

Computer Graphics
The mathematical techniques for creating graphics on the computer. Topics include clipping, perspective, coordinate transformations, hidden surface algorithms, and animation. (CSCI 0202 and MATH 0200) 3 hrs. lect./lab

DED

Spring 2012

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.

Spring 2009, Fall 2009, Winter 2010, Spring 2010, Fall 2010, Winter 2011, Spring 2011, Fall 2011, Winter 2012, Spring 2012, Fall 2012, Winter 2013, Spring 2013

More Information »

CSCI 0702 - Senior Seminar      

Senior Seminar
Each student will complete a major capstone project in this course. This project can take the form of either (1) a thesis on a topic chosen with the advice of a faculty member, or (2) a group programming project approved by the computer science faculty. All students will present their work at the end of the semester. In addition, during the academic year, all seniors are expected to attend a series of lectures designed to introduce and integrate ideas of computer science not covered in other coursework. 3 hrs. lect./disc

Spring 2009

More Information »

CSCI 1020 - Lego Robot Design Studio      

Lego Robot Design Studio
This course gives students the opportunity to design, build, and program small, mobile robots using Lego pieces, tiny onboard computers, and a variety of sensors and actuators. In this context, we will explore important concepts from computer science such as structured programming, abstraction, reasoning under uncertainty, real-time control, and elementary robotics. We will also engage other disciplines, including creative design, mechanics, and electronics. The course will culminate with a light-hearted robot talent show featuring the robots created by each team of 3 students. No prior experience with programming or Lego is required.

DED WTR

Winter 2010

More Information »