Peter Johnson
Assistant Professor of Computer Science
pjohnson@middlebury.edu
work(802) 443-5463
fax802-443-2072
on leave AY 20-21, email for appt
75 Shannon 211
Courses
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. (Juniors and Seniors by waiver) 3 hrs. lect./lab DED
Spring 2018
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) (Seniors by waiver) 3 hrs. lect./lab DED
Spring 2017, Fall 2017, Spring 2019, Fall 2019
CSCI 0315 - Systems Programming
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 DED
Fall 2017, Fall 2018, Fall 2019
CSCI 0414 - Advanced Operating Systems
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. DED
Spring 2019
CSCI 0431 - Computer Networks
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 DED
Spring 2018, Spring 2020
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.
Winter 2017, Spring 2017, Fall 2017, Winter 2018, Spring 2018, Fall 2018, Winter 2019, Spring 2019, Fall 2019, Winter 2020, Spring 2020, Fall 2020, Winter 2021, Spring 2021
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 2017, Fall 2017
CSCI 1005 - Crash Course/Systems Security
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) DED WTR
Winter 2017, Winter 2018, Winter 2019, Winter 2020