Courses | Middlebury College Skip to content Middlebury College Menu Main navigation Admissions Apply Visit Middlebury Affordability Access and Inclusivity Our Students For Counselors Meet Our Team Academics Student Life Dean of Students Student Life Deans Student Activities Community Living New Student Guide Diversity, Equity, and Inclusion Academic LIfe Arts Athletics Health and Wellness Campus Policies Annual Campus Events Athletics Arts Events Performing Arts Series Box Office Stay in Touch Accessibility Services About Middlebury International Search Secondary navigation News and Announcements COVID-19 Information Calendar of Events Offices and Services Giving Search Search Search Breadcrumb Middlebury College Academics Computer Science Courses Additional Navigation Computer Science Faculty and Office Hours Courses Requirements Learning Goals Resources Student and Faculty Work News and Events Courses offered in the past four years. Courses offered currently are as noted. CSCI 0101 Introduction to Computing Course Description 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?" (Juniors and Seniors by waiver) 3 hr. lect./1 hr. lab Terms Taught Fall 2018, Spring 2019, Fall 2019, Spring 2020 Requirements DED View in Course Catalog CSCI 0105 Algorithmic World Course Description Understanding Our Algorithmic World In this course through lectures, labs, and discussions, we will examine the nature of computers and their role in our lives. We will use the lens of multimedia programming to learn basic computer programming and how computers represent and manipulate many common forms of data, such as text and images. We will also talk about the history of computers and learn how they interoperate to create the world we know today, and we will examine the societal impacts of technology on our lives, including implications for privacy, access to resources, and the increasing role of algorithms in shaping our world. (not open to students who have taken CSCI 0145 or higher) 3 hrs. lect./lab Terms Taught Fall 2020, Spring 2022 Requirements DED View in Course Catalog CSCI 0110 Programming through Simulation Course Description Introduction to Programming through Simulation In this course we will introduce computer programming through the exploration and writing of computer simulations with applications to ecological sciences and social sciences. We will use NetLogo as a software/programming tool for developing agent-based simulations. Students will learn basic programming constructs such as variables, conditionals, loops, procedures, and recursion as well as tools for experimenting with computer simulations. No prior experience in programming is expected or required. (not open to students who have taken CSCI 0145 or higher) (formerly CSCI 0190) 3 hrs. lect./disc. 1 hour lab. Terms Taught Fall 2021 Requirements DED View in Course Catalog CSCI 0145 Upcoming Introduction to Computing Course Description 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?" (Juniors and Seniors by waiver) (formerly CSCI 0101) 3 hr. lect./1 hr. lab Terms Taught Fall 2020, Spring 2021, Fall 2021, Spring 2022, Fall 2022, Spring 2023 Requirements DED View in Course Catalog CSCI 0150 Upcoming Computing for the Sciences Course Description 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. (Juniors and Seniors by waiver) 3 hrs. lect./lab Terms Taught Fall 2018, Spring 2019, Fall 2019, Spring 2020, Fall 2020, Spring 2021, Fall 2021, Spring 2022, Fall 2022 Requirements DED View in Course Catalog CSCI 0200 Upcoming Math Foundations of Computing Course Description 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. (CSCI 0145 or CSCI 0150) (Juniors and Seniors by waiver) 3 hrs. lect./lab Terms Taught Fall 2018, Spring 2019, Fall 2019, Spring 2020, Fall 2020, Spring 2021, Fall 2021, Spring 2022, Fall 2022, Spring 2023 Requirements DED View in Course Catalog CSCI 0201 Upcoming Data Structures Course Description 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. (CSCI 0145 or CSCI 0150) (Juniors and Seniors by waiver) 3 hrs. lect./lab Terms Taught Fall 2018, Spring 2019, Fall 2019, Spring 2020, Fall 2020, Spring 2021, Fall 2021, Spring 2022, Fall 2022, Spring 2023 Requirements DED View in Course Catalog CSCI 0202 Upcoming Computer Architecture Course Description 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) (Seniors by waiver) 3 hrs. lect./lab Terms Taught Fall 2018, Spring 2019, Fall 2019, Spring 2020, Fall 2020, Spring 2021, Fall 2021, Spring 2022, Fall 2022, Spring 2023 Requirements DED View in Course Catalog CSCI 0301 Upcoming Theory of Computation Course Description 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. Terms Taught Fall 2018, Spring 2019, Fall 2019, Spring 2020, Fall 2020, Spring 2021, Fall 2021, Spring 2022, Fall 2022, Spring 2023 Requirements DED View in Course Catalog CSCI 0302 Upcoming Algorithms and Complexity Course Description Algorithms and Complexity This course focuses on the development of correct and efficient algorithmic solutions to computational problems, on the underlying data structures to support these algorithms, and on the social implications of algorithms. Topics include computational complexity, analysis of algorithms, proof of algorithm correctness, some advanced data structures, algorithmic techniques including greedy and dynamic programming, and the consequences of real-world applications of algorithms. The course complements the treatment of NP-completeness in CSCI 0301. (CSCI 0200 and CSCI 0201) 3 hrs. lect./disc. Terms Taught Fall 2018, Spring 2019, Fall 2019, Spring 2020, Fall 2020, Spring 2021, Fall 2021, Spring 2022, Spring 2023 Requirements DED View in Course Catalog CSCI 0311 Upcoming Artificial Intelligence Course Description 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 Terms Taught Spring 2020, Spring 2021, Spring 2022, Fall 2022 Requirements DED View in Course Catalog CSCI 0312 Upcoming Software Development Course Description 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 and CSCI 0201) 3 hrs. lect./lab Terms Taught Spring 2019, Fall 2019, Spring 2020, Fall 2020, Spring 2021, Fall 2021, Fall 2022, Spring 2023 View in Course Catalog CSCI 0313 Programming Languages Course Description 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 Terms Taught Fall 2020, Fall 2021 Requirements DED View in Course Catalog CSCI 0315 Upcoming Systems Programming Course Description Systems Programming Students will become intimately acquainted with the low-level software services that applications often take for granted. Through a broad, project-based survey of core system libraries and UNIX system calls, students will explore process management, memory management, linking and loading, threading, synchronization, filesystem operations, and inter-process communication (networking). In each area, students will build software using these building blocks, gaining an understanding of the behavior and efficiency of the tools at their disposal. Students will also gain experience building larger, more complex systems upon which applications can be built. This course is ideal for students who wish to understand and construct the software infrastructure upon which user-level software depends. (CSCI 0202) 3 hrs. lect Terms Taught Fall 2018, Fall 2019, Fall 2020, Fall 2021, Fall 2022 Requirements DED View in Course Catalog CSCI 0318 OOP & GUI Application Dev Course Description Object-Oriented Programming and GUI Application Development In this coding-intensive course students will deepen their understanding of data structures, algorithms, and object-oriented programming concepts through development of GUI (Graphical User Interface) applications. After a brief introduction to C++ and our development environment, Qt, we will immerse ourselves in them through work on an array of application development projects. Along the way, we will be introduced to a number of software development principles and build an understanding of fundamental object-oriented concepts in C++, including classes and inheritance, templates, pointers, constructors/destructors, and ownership. (CSCI 0202 or by waiver) 3 hrs lect./disc. Terms Taught Spring 2021, Fall 2021 Requirements DED View in Course Catalog CSCI 0321 Bioinformatics Algorithms Course Description Bioinformatics Algorithms In this course we will explore and implement algorithmic solutions to modern biology questions. Students will be introduced to motivating biological questions—such as, “How do we compare DNA sequences?”—and then implement solutions to those problems using dynamic programming, graph, randomized, combinatorial and/or other algorithmic approaches. At the completion of the course students will be able to precisely define computational biology problems, design an algorithmic solution and implement that solution in software. No biology background is assumed, but students are expected to be able to implement sophisticated algorithms in Python or another language of their choice. (CSCI 201) 3 hrs. lect./lab. Terms Taught Spring 2019, Spring 2022 Requirements DED View in Course Catalog CSCI 0333 Quantum Computing Course Description Quantum Computing In this course we will explore how quantum mechanics can be applied to problems in communications, algorithms, detection, and cryptography. We will learn how features such as entanglement, superposition, and no-cloning can sometimes give quantum systems an advantage over standard “classical” computers. We will also discuss the current situation and challenges facing experimental quantum computers, as well as the limits of quantum computing. No previous experience with quantum mechanics is required. (MATH 0200) 3 hrs lect./disc. Terms Taught Fall 2019, Spring 2021 Requirements DED View in Course Catalog CSCI 0390 Spatial Agent-Based Modeling Course Description Spatial Agent-Based Modeling In this course students will learn efficient data structures and design techniques for spatially-explicit agent-based modeling using the NetLogo programming language. Agent-based modeling techniques will be applied to problems in the social and natural sciences (such as graph pandemic modeling and population dynamics), mathematics and computational sciences (such as graph algorithms), and agent-based games. We will also explore some advanced programming features of NetLogo. Students will design and implement a significant term software project. (CSCI 0201). Terms Taught Winter 2021, Spring 2022 Requirements DED View in Course Catalog CSCI 0401 Computational Complexity Course Description Computational Complexity We will investigate the computational power of various resources. Examples include determining whether a computer with limited time or limited space can solve more difficult problems, attempting to characterize creativity as a resource, and comparing probabilistic and quantum computation. We will learn why we do not yet have answers to many of the most fundamental questions in computational complexity (like whether P=NP), and we will think critically about the value of studying these topics. Students enrolled in the College Writing (CW) section of the course will explore these ideas through writing, in particular, in three contexts that are critical for theoretical computer science: the proof (expert audience), the review paper (non-expert computer science audience), and the popular science article (educated public audience). (CSCI 0301).3 hrs. sem./1 hr. disc. Terms Taught Fall 2020, Spring 2022 Requirements CW, DED View in Course Catalog CSCI 0414 Advanced Operating Systems Course Description Advanced Operating Systems An operating system manages the complex resources of modern computers and provides an interface between the user and the hardware. In this course, we will explore the key concepts of operating systems, including process, memory, and storage management; synchronization and deadlock; protection and security; and distributed systems. (not open to students who have taken CSCI 0314) (CSCI 315) 3 hrs lect. Terms Taught Spring 2019, Spring 2022 Requirements DED View in Course Catalog CSCI 0416 Upcoming Parallel Computing Course Description Parallel Computing Most modern computer architectures are parallel at multiple scales. In this course students will learn to develop programs that can efficiently use those parallel resources to improve performance and solve ever larger problems. Through a project-based survey students will be introduced to parallel hardware (multicore processors, clusters, GPUs), memory models (shared vs. non-shared), locality, synchronization, and different parallel programming models (threads, MapReduce, message-passing, SIMT, and more). Programming assignments will be implemented in multiple languages. (CSCI 202) 3hrs. lect./lab Terms Taught Spring 2020, Spring 2023 Requirements DED View in Course Catalog CSCI 0422 Geometric Modeling Course Description Geometric Modeling The ability to describe three-dimensional geometric objects is fundamental for computer-aided design, scientific computing, and computer graphics. In this course we will investigate common methods for building and manipulating digital representations of three-dimensional curves, surfaces, and solids using polygonal and polyhedral meshes. This includes topics in mesh parameterization, adaptation, and registration, as well as surface reconstruction and deformation. We will also review common numerical methods used in scientific computing, including the finite element method, and study techniques for visualization, analysis, and design. Students will implement labs and projects using C++, within a framework provided by the instructor. (CSCI 0202 and MATH 0200) 3 hrs. sem Terms Taught Spring 2022 Requirements DED View in Course Catalog CSCI 0431 Upcoming Computer Networks Course Description Computer Networks Computer networks have had a profound impact on modern society. This course will investigate how computer networks are designed and how they work. Examples from the Internet as well as our own campus network will be discussed. (CSCI 0200 and CSCI 0315) 3 hrs. lect./lab Terms Taught Spring 2020, Spring 2023 Requirements DED View in Course Catalog CSCI 0433 Upcoming Compiler Design Course Description 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 Terms Taught Fall 2019, Fall 2022 Requirements DED View in Course Catalog CSCI 0435 Embedded Systems Course Description Embedded Systems In this course we will learn about microcontrollers (compact single-chip integrated circuits at the core of embedded systems), including their architecture and how they interface with the outside world. In laboratory assignments, we will experiment with different families of microcontrollers, analyze various types of interfaces, and learn how to connect with external sensors and devices. While gaining hands-on familiarity with the different aspects of embedded systems, teams of students will engage in a semester-long project to design and build their own embedded system. (CSCI 0202) 3 hrs. lect./1.5 hrs. lab. Terms Taught Fall 2019, Fall 2021 Requirements DED View in Course Catalog CSCI 0450 Fourier Signal Processing Course Description Fourier Analysis and Signal Processing A wide range of computational applications involve oscillating signals in one or more dimensions. Fourier analysis techniques make it possible to analyze these signals in terms of the frequency components that make them up, forming the basis for technologies ranging from audio and video compression to sound and image processing to automatic speech and image recognition. In this course we will introduce the mathematics of Fourier series and transforms, their discretization through the Fast Fourier Transform, and associated topics such as convolutions, filters, and uncertainty relations. We will then apply these techniques to a variety of examples, including music, speech, and images. (MATH 0122 and MATH 0200 and CSCI 0201) 3 hrs. lect./lab Terms Taught Spring 2020 Requirements DED View in Course Catalog CSCI 0451 Machine Learning Course Description 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. Not open to students who have already taken CSCI 1051.) (CSCI 0200 and CSCI 0201 and MATH 0200) 3 hrs. lect./lab Terms Taught Fall 2018, Spring 2021 Requirements DED View in Course Catalog CSCI 0452 Image Processing Course Description Image Processing In this course students will learn basic image processing concepts and explore practical cross-disciplinary case studies in teams. They will use open-source tools to tackle real-world image and video analysis problems ranging from enhancing and denoising to tracking and extracting information from images and videos. Collaboratively, students will get to apply these tools to a problem of their choice in a semester-long project. (CSCI 0200 and CSCI 201) 3 hrs. lect./lab. Terms Taught Fall 2018 Requirements DED View in Course Catalog CSCI 0453 Computer Vision Course Description 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 Terms Taught Spring 2020 Requirements DED View in Course Catalog CSCI 0454 Biometrics Course Description Biometrics Biometric recognition, or simply biometrics, is the science of establishing the identity of a person based on physical or behavioral attributes. In this course we will cover the three primary modalities of biometric recognition, namely fingerprint, face, and iris. We will also introduce other emerging technologies such as recognition of gait, hand geometry, and ear. Other topics will include the security of biometrics, statistics for biometric evaluation, spoofing, ethical issues related to biometric technology, the relation to forensic science, and the impact biometric recognition has had on the judicial system. (CSCI 0200 and CSCI 201) 3 hrs. lect./lab. Terms Taught Fall 2020 Requirements DED View in Course Catalog CSCI 0455 Drone Robotics Course Description Drone Robotics In this course we will introduce the fundamental concepts of robotics, specifically focusing on drones using current research and applications. Topics will include drone control, flight planning, obstacle avoidance, and sensing. We will utilize tools from computer vision, image processing, and artificial intelligence, and we will complete experiments using small drones in compliance with college policy. (CSCI 0200 and CSCI 201) 3 hrs. lect./lab Terms Taught Spring 2019, Spring 2021 Requirements DED View in Course Catalog CSCI 0461 Computer Graphics Course Description 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 WebGL. (CSCI 0202 and MATH 0200) 3 hrs. lect./lab Terms Taught Winter 2021, Fall 2021 Requirements DED View in Course Catalog CSCI 0465 Upcoming Information Visualization Course Description 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) Terms Taught Fall 2018, Fall 2021, Fall 2022 Requirements DED View in Course Catalog CSCI 0466 Usable Mobile Interfaces Course Description Usable Interface Design for Mobile Applications In this course we will explore the fundamental concepts of human-computer interaction and interface design. We will focus on applying an iterative, human-centric design process to mobile development. Topics will include user interface design, user experience, usability, prototyping, user testing, and mobile development. A significant portion of the class will be spent developing a mobile app, walking it through the various prototyping and testing stages. (CSCI 0312) 3 hrs. lect./lab. Terms Taught Fall 2019, Spring 2022 Requirements DED View in Course Catalog CSCI 0467 Upcoming Generative Art Course Description Generative Art In this course we will explore the field of generative art – the artistic practice based on the creation of processes that yield art and design as an output. Through projects, we will find new applications for computing techniques such as visualization, physical simulation, stochastic processes, agent-based modeling, iterated function systems, fractals, genetic algorithms and machine learning. A portion of the class will also be devoted to reading research literature and discussing the nature of computation creativity. A background in art is not required. (CSCI 0201) (not open to students who have taken CSCI 1003) 3 hrs. lect./lab. Terms Taught Spring 2020, Spring 2023 Requirements ART, DED View in Course Catalog CSCI 0500 Upcoming Advanced Study Course Description 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. Terms Taught Fall 2018, Winter 2019, Spring 2019, Fall 2019, Winter 2020, Spring 2020, Fall 2020, Winter 2021, Spring 2021, Fall 2021, Winter 2022, Spring 2022, Fall 2022, Winter 2023, Spring 2023 View in Course Catalog CSCI 0701 Upcoming Senior Seminar Course Description 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). Terms Taught Fall 2018, Spring 2019, Fall 2019, Spring 2020, Fall 2020, Spring 2021, Fall 2021, Fall 2022, Spring 2023 View in Course Catalog CSCI 0702 Upcoming Senior Thesis Course Description 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. Terms Taught Fall 2018, Spring 2019, Fall 2019, Spring 2020, Fall 2020, Winter 2021, Spring 2021, Fall 2021, Winter 2022, Spring 2022, Winter 2023, Spring 2023 View in Course Catalog CSCI 1005 Crash Course/Systems Security Course Description Crash Course in Systems Security In this course students will learn the theory and practice of computer systems security. Morning lectures will be complemented by afternoon lab-sessions in which, under the close guidance of the instructor, students will complete both individual and group projects that will deepen their understanding of how (in)secure systems are implemented. Students will learn to use industry-standard tools for performing analysis of system vulnerabilities; be introduced to the systems security research landscape; and gain an understanding of ethical, political, and financial issues surrounding systems security research. (Approval required; CSCI 0202) Terms Taught Winter 2019, Winter 2020, Winter 2022 Requirements DED, WTR View in Course Catalog CSCI 1007 Human Genome Analysis Course Description Practical Analysis of a Personal Genome In this hands-on laboratory-style course, we will analyze a human genome starting from the raw sequencing data (publicly available). Using databases, scientific literature and other resources, students will formulate hypotheses about that person’s ancestry, physical traits, and disease susceptibility based on the genomic data. At the conclusion of the course, students will be able to describe the science underlying human genome analysis, employ and interpret the results of bioinformatics software tools, and debate the ethical, legal and social implications of personal genomics. No biology background is assumed, but students are expected to be able to use command-line software tools. (CSCI 101 or CSCI 150) Terms Taught Winter 2019 Requirements DED, WTR View in Course Catalog CSCI 1012 Bias, Belonging, Power in Tech Course Description Bias, Belonging, and Power in Technology Algorithms and big data are informing increasingly important decisions, from hiring to setting bail. While we like to think that computers act objectively, in this class we will examine how technology reflects and often reinforces the biases and power structures of the culture that creates it. Since technology is a reflection of the society that creates it, we will also learn about who has been historically welcomed to or excluded from the spaces where computing technology is made. The course will involve reading, discussion, written reflections, an oral presentation, as well as a coding project that creatively engages with the course topics. (One CSCI course at the 0100-level) Terms Taught Winter 2021 Requirements SOC, WTR View in Course Catalog CSCI 1015 Intro to Rocket Propulsion Course Description Introduction to Rocket Propulsion In this course we will investigate the following questions: What is rocket propulsion? How do we send humans and robots to space? How do chemical and electrical rockets work and what applications are they suitable for? How do spacecraft travel to other planets? How can we use computers to design rockets and their trajectories? We will dive into topics including chemical combustion, energy conversion, ionized gases, launch vehicle design and trajectories, Kepler’s Laws, orbit transfers, and much more. We will also read Hidden Figures and have weekly discussions about the text. Assignments will consist of readings, handwritten problem sets, programming assignments, and a short reflection paper on Hidden Figures. (CSCI 101 or CSCI 0145 or CSCI 150, or equivalent and PHYS 109 or equivalent and MATH 0121 or equivalent) Terms Taught Winter 2021 Requirements SCI, WTR View in Course Catalog CSCI 1051 Upcoming Deep Learning Course Description Deep Learning As data becomes ubiquitous and computing resources cheaper, many disciplines have turned to deep learning to solve complicated problems. While it has achieved remarkable success in a variety of "human" tasks, deep learning is often treated as a black-box. In this course, we will study deep learning from its foundations and build an intuitive understanding for why it works. Pairing lectures with labs, we will develop cutting-edge deep learning solutions to a variety of real-world problems. We will cover neural networks, convolutional networks designed for object detection, and recurrent networks used for natural language processing. We may also explore other topics including transformers, reinforcement learning, and generative adversarial networks subject to time and interest.(Not open to students who have already taken CSCI 0451.) (CSCI 0200, CSCI 0201, MATH 0200) Terms Taught Winter 2023 Requirements DED, WTR View in Course Catalog Department of Computer Science 75 Shannon Street Middlebury College Middlebury, VT 05753 Amy Rose, Coordinator 75 Shannon 207 (802) 443-5429 arose@middlebury.edu Amy Briggs, Chair 75 Shannon 213 (802) 443-2255 briggs@middlebury.edu Help shape Middlebury's future. Make a Gift Middlebury College Middlebury, VT 05753 802-443-5000 Admissions 802-443-3000 admissions@middlebury.edu Public Safety 802-443-5911 publicsafety@middlebury.edu facebook instagram twitter vimeo Information For Students Alumni Faculty and Staff Parents Media Donors Job Seekers Visitors Quick Links Emergency Academic Calendar Banner9 Registration BannerWeb Bookstore Box Office Campus Map Directory Directions to Middlebury EthicsPoint Library Museum of Art Oracle Cloud Technology Help Transportation Options Webmail Additional navigation About Middlebury Giving Employment Offices and Services Copyright Privacy Site-Editor Login Back to Top Navigation Close Navigation Admissions Apply Visit Middlebury Affordability Access and Inclusivity Our Students For Counselors Meet Our Team Academics Student Life Dean of Students Student Life Deans Student Activities Community Living New Student Guide Diversity, Equity, and Inclusion Academic LIfe Arts Athletics Health and Wellness Campus Policies Annual Campus Events Athletics Arts Events Performing Arts Series Box Office Stay in Touch Accessibility Services About Middlebury International News and Announcements COVID-19 Information Calendar of Events Offices and Services Giving