Sections

« Winter 2016 Spring 2016 Summer Study 2016 »

CSCI0101A-S16

CRN: 20022

Introduction to Computing
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?" (Seniors by waiver) 3 hr. lect./lab

CSCI0101X-S16

CRN: 21577

Introduction to Computing
Introduction to Computing Lab
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?" (Seniors by waiver) 3 hr. lect./lab

CSCI0101Y-S16

CRN: 21578

Introduction to Computing
Introduction to Computing Lab
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?" (Seniors by waiver) 3 hr. lect./lab

CSCI0101Z-S16

CRN: 21579

Introduction to Computing
Introduction to Computing Lab
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?" (Seniors by waiver) 3 hr. lect./lab

CSCI0150A-S16

CRN: 22278

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./lab

CSCI0150B-S16

CRN: 22279

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./lab

CSCI0190A-S16

CRN: 21875

Computing through Simulation
Computing through Simulation
Introduction to Computing through Multi-Agent Simulation
In this course we will introduce important topics in the discipline of computer science (including algorithmic reasoning, data abstraction, procedural abstraction, program design, and recursion) in the context of computer modeling and simulation. In particular, we will explore a type of computer simulation known as agent-based modeling as a means of studying phenomena from both biological and social sciences. A significant amount of time will be spent teaching the NetLogo programming language as a software tool for developing simulations. No prior experience in programming is assumed. This course counts as an environmental studies lab science cognate. 3 hrs. lect./lab

CSCI0190Y-S16

CRN: 22001

Computing through Simulation
Computing through Sim Lab
Introduction to Computing through Multi-Agent Simulation
In this course we will introduce important topics in the discipline of computer science (including algorithmic reasoning, data abstraction, procedural abstraction, program design, and recursion) in the context of computer modeling and simulation. In particular, we will explore a type of computer simulation known as agent-based modeling as a means of studying phenomena from both biological and social sciences. A significant amount of time will be spent teaching the NetLogo programming language as a software tool for developing simulations. No prior experience in programming is assumed. This course counts as an environmental studies lab science cognate. 3 hrs. lect./lab

CSCI0190Z-S16

CRN: 22002

Computing through Simulation
Computing through Sim Lab
Introduction to Computing through Multi-Agent Simulation
In this course we will introduce important topics in the discipline of computer science (including algorithmic reasoning, data abstraction, procedural abstraction, program design, and recursion) in the context of computer modeling and simulation. In particular, we will explore a type of computer simulation known as agent-based modeling as a means of studying phenomena from both biological and social sciences. A significant amount of time will be spent teaching the NetLogo programming language as a software tool for developing simulations. No prior experience in programming is assumed. This course counts as an environmental studies lab science cognate. 3 hrs. lect./lab

CSCI0200A-S16

CRN: 21167

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

CSCI0201A-S16

CRN: 20056

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

CSCI0201Y-S16

CRN: 22007

Data Structures
Data Structures Lab
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

CSCI0201Z-S16

CRN: 22008

Data Structures
Data Structures Lab
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

CSCI0202A-S16

CRN: 22010

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

CSCI0302A-S16

CRN: 20378

Algorithms and Complexity
Algorithms and Complexity
This course focuses on the development of correct and efficient algorithmic solutions to computational problems, and on the underlying data structures to support these algorithms. Topics include computational complexity, analysis of algorithms, proof of algorithm correctness, advanced data structures such as balanced search trees, and also important algorithmic techniques including greedy and dynamic programming. The course complements the treatment of NP-completeness in CSCI 0301. (CSCI 0200 and CSCI 0201) 3 hrs. lect./disc.

CSCI0314A-S16

CRN: 22280

Operating Systems
Operating Systems
An operating system manages the complex resources of modern computers and provides an interface between the user and the hardware. This course covers the key concepts of operating systems, including process, memory, and storage management; synchronization and deadlock; protection and security; and distributed systems. (CSCI 0200 previously or concurrently, and CSCI 0202) 3 hrs. lect./lab

CSCI0453A-S16

CRN: 22281

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

CSCI0465A-S16

CRN: 22282

Information Visualization
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)

CSCI0500A-S16

CRN: 20290

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.

CSCI0500B-S16

CRN: 20516

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.

CSCI0500C-S16

CRN: 20566

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.

CSCI0500D-S16

CRN: 20567

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.

CSCI0500E-S16

CRN: 20568

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.

CSCI0500F-S16

CRN: 20713

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.

CSCI0500G-S16

CRN: 21576

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.

CSCI0701A-S16

CRN: 22250

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).

CSCI0702A-S16

CRN: 22555

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.

Department of Computer Science

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