# CS 795/895 Devops, Containers, & the Cloud (Fall 2020)

Zoom meeting links and recordings will be available in Blackboard in the “Zoom” and “Media Gallery” tools, respectively.

# 1 Course Description

Students will explore the process of automating the integration of changes into a code base, the testing of that code on varied platforms, and the delivery and deployment of the code products.

Key concepts to be explored will be:

• Continuous integration and continuous deployment
• Build pipelines
• Automated system testing
• The use of virtual machines and containers as testbeds.
• Conducting testing in the cloud (AWS).
• Deploying products to the cloud.

Ideally, students in this course will already be members of a research group in the CS Dept for which they are developing software that they can use as a testbed for the ideas explored in this course.

This is intended as a prototype for a future course to be offered at the 400/500 level. As the semester progresses, students will be charged with curating a list of relevant readings, creating a series of “How-To” documents detailing the application of specific support technology in a lab or assignment setting, and with demonstrating that technology on their own projects.

## 1.1 Course Pre-requisites

There is no mechanism for enforcing undergraduate prerequisites to graduate courses and no mechanism for enforcing any prerequisites to Topics (795/895) courses.

Nonetheless, this This is intended as a sequel to CS350, Introduction to Software Engineering and students should have something roughly equivalent in their background.

There will be a week-one survey of all enrolled students to assess their level of familiarity with concepts from the “software construction” phase of Software Engineering. This survey will determine how much time is spend in review/survey of the early part of software development, in order to set up

Students taking this course are expected to have at least some familiarity with the use of

• Version control software (git) in a team context.
• Modern forge sites such as github and gitlab.
• 3rd generation automated build managers (e.g., gradle).
• Unit test frameworks (e.g. JUnit), Test-Driven Development and Test-First Development
• Agile development practices.

## 1.2 Instructor

 Steven Zeil E&CS 3208 (757) 683-4928 zeil@cs.odu.edu

Please make sure to include the course name “CS350” in the subject line of any email related to this course.

### 1.2.1 Office Hours

General questions about course content and reports of website problems should normally be asked in the Forums on Blackboard or via email.

Questions about grades, how to solve assignments and other graded activities must be sent to szeil@odu.edu, not posted in Forums.

For more discussion on course communications, please refer to the Communications policy.

## 1.3 Meeting Times and Delivery Method

Meetings: MW 11:00-1215PM

Although scheduled as a synchronous class (i.e., a class with an assigned days and times), due to the scarcity of suitable classrooms on the ODU campus under the constraints of safe distancing constraints, the course will be delivered via Zoom.

Recordings may be made available, but students are expected to attend at the scheduled time.

# 2 Basic Course Information

## 2.1 Required Text

Readings from the Internet will be assigned from the course website.

# 3 Course Policies

## 3.1 Due Dates and Late Submissions

Late assignments and make-up exams will not normally be permitted.

Everything turned in for grading in this course must be your own work, or, for team projects, the work of your own team. Opportunities for teamwork will be clearly identified as such.

• Among other things, this means that if you use ideas found on the internet (outside of the course website) in your answers to an assignment or exam question (including when coding!), you must cite your sources appropriately.

If you use text directly taken from such sources you must appropriately designate the quoted material as such.

The instructor reserves the right to question a student orally or in writing and to use his evaluation of the student’s understanding of the assignment and of the submitted solution as evidence of cheating.

## 3.3 General University Policies

The ODU Catalog lays out a wide variety of University policies that are binding upon both students and faculty. All students are required to abide by these.

1. Each student will be expected to prepare a lesson plan on a topic selected in conjunction with the instructor. This lesson plan will consist of

• An introductory document.
• A list of possible readings.
• A step-by-step lab/assignment to introduce use of the relevant technology.
• A presentation by the student to the class walking through the introductory document.

3. Each student will also be assigned to formally review two lesson plans created by other students. This review will entail

• Critiquing the introductory document and choice of readings.
• Attempting the lab/assignment, while keeping a log of steps performed and difficulties encountered.
4. Each student must maintain, through the semester, a demonstration project involving a non-trivial amount of code, preferably code that includes some system dependencies.

• Students will prepare a report to be submitted at the end of the semester detailing the initial state of this project and the course-relevant technologies that have been added to the project.
• Actual progress in developing the project functionality is not relevant to this course and will not be part of the grading.