Middlebury

 

Amy Briggs

Professor of Computer Science

Email: 
Phone: work802.443.2255
Download Contact Information

Personal Homepage

 

Courses


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

Spring 2011, Spring 2012, Spring 2013, Spring 2015

More Information »

CSCI 0200 - Math Foundations of Computing      

Mathematical Foundations of Computing
In this course we will provide an introduction to the mathematical foundations of computer science, with an emphasis on formal reasoning. Topics will include propositional and predicate logic, sets, functions, and relations; basic number theory; mathematical induction and other proof methods; combinatorics, probability, and recurrence relations; graph theory; and models of computation. (One CSCI course at the 0100-level previously or concurrently) 3 hrs. lect./lab

DED

Spring 2013

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

Fall 2010, Fall 2011, Fall 2012

More Information »

CSCI 0301 - Theory of Computation      

Theory of Computation
This course explores the nature of computation and what it means to compute. We study important models of computation (finite automata, push-down automata, and Turing machines) and investigate their fundamental computational power. We examine various problems and try to determine the computational power needed to solve them. Topics include deterministic versus non-deterministic computation, and a theoretical basis for the study of NP-completeness. (CSCI 0200 and CSCI 0201) 3 hrs. lect./disc.

DED

Fall 2011, Fall 2014

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

Fall 2010, Fall 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.

Fall 2010, Winter 2011, Spring 2011, Fall 2011, Winter 2012, Spring 2012, Fall 2012, Winter 2013, Spring 2013, Fall 2014, Winter 2015, Spring 2015

More Information »

CSCI 0702 - Senior Thesis      

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.

Spring 2011, Spring 2012

More Information »

CSCI 1004 - Programming for Novices      

Computer Programming for Novices
All 21st century learners should strive to attain basic programming skills. No matter what discipline we work in, we would all be better problem solvers and better users of computational tools if we had some facility with computer programming and some understanding of how software is built. In this course – for computer programming novices – we will learn the basics of coding using a variety of tools and languages including Scratch and JavaScript. Each class meeting will include both lecture and hands-on lab time.

DED WTR

Winter 2015

More Information »

FYSE 1414 - Computing and Society      

Computing and Society
Computing has contributed to tremendous advances in communication, science, medicine, economics, the arts, and many other fields and areas of our lives. We now employ myriad computational tools that enhance our ability to interact and to express ourselves creatively. Our access to vast amounts of information and raw data holds the promise of helping us solve some of humankind’s most vexing problems, from global health and poverty to climate change. In this seminar we will study some of the big ideas in computing that underlie the ongoing explosion of innovation we are experiencing, and will analyze the many ways in which computing affects society. 3 hrs. sem.

CW DED

Fall 2014

More Information »