Certification Exam Procedure:
I will be on Discord 30 minutes before exam time for any questions/issues.
Finals Week Posted: Dec 07
Certification Exam Time slot is the available time of the Brightspace, Quizzes and Exams, AZ-900 Azure Fundamentals Certification Exam Time. You will not be taking the certification exam in Brightspace. To take the exam, you will need a Certiport Certification Exam Voucher. Your individual voucher is in Brightspace in the Feedback for Project 4. It is of the form XXXX-XXXX-XXXX-XXXX.
Final Exam Due Sunday, Dec 13 by 4 pm.
Project 4 The certification exam counts for Project 4. If you take and finish the exam, you will receive full credit on Project 4. You do not have to pass the certification exam to get full credit.
Project 3 Highest score of Exercises and without this project.
Offie Hours Check my calendar for scheduled office hours. Feel free to message me on Discord or email.
Final Exam Technical Notes
pwd
will show as the same directory as in your jenkins container. Look at the logs carefully when it starts up your docker container in your project.Note: Your day and time will be different. Also note that it may not save the permissions between starts. The group however, is saved.
Practice Crossword Student Azure Crossword Student Azure Crossword Answers
Week 15 Class 43 Fri Dec 04 Posted: Dec 04
Class session:
Finals Week:
Certification Exam Time slot is the available time of the Brightspace, Quizzes and Exams, AZ-900 Azure Fundamentals Certification Exam Time. You will not be taking the certification exam in Brightspace.
Project 3 Highest score of Exercises and without this project.
Project 4 The certification exam counts for Project 4. If you take and finish the exam, you will receive full credit on Project 4. You do not have to pass the certification exam to get full credit.
Final Exam Due Sunday, Dec 13 by 4 pm.
I do not have specific Office Hours during Finals Week. You can contact me via Discord or email.
Final Exam Technical Notes
A user must have Admin access to a repository on GitHub for CircleCI integration. The Final Exam GitHub Classroom repositories were not set up that way and there is no way for me to edit the assignment and add that back in. So I have to manually change it for each repository. Of course, I cannot do that until the repository is created. I will check occasionally. If you need it allowed earlier, let me know.
Note: Your day and time will be different.
Screencast: End Notes notes
Practice Crossword: Student Azure Crossword
Created from the answers to the exercise. This is not an exercise, but for your own practice.
Screencast is short and there are no exercises, so use your time for Certification Exam practice or work on the Final Exam.
Screencast Folder: Class Fri Dec 04
Reminders:
For CircleCI to integrate with a project from GitHub, the user must have Admin access to the repository. When I setup the Final Exam GitHub Classroom repositories, I did not okay that. And there is no way for me to edit the assignment and add that back in. So I have to manually change it for each repository. Of course, I cannot do that until the repository is created.
I will check occasionally. If you need it allowed earlier, let me know.
Week 15 Class 42 Fri Dec 02 Posted: Dec 02
Class session:
Reminders:
Certification Exam Your Certification Exam will take place at the time indicated by the available time of the Brightspace, Quizzes and Exams, AZ-900 Azure Fundamentals Certification Exam Time. You will not be taking the certification exam in Brightspace. Use this to verify your exam time. If there is an issue with the time, let me know as soon as possible.
Exercises There are no more exercises in the course. I will post a crossword for the certification exam, but that will be review for the certification exam. Use any exercise time to work on the Final Exam.
Project 3 This semester, you did much work in the exercises. I believe you did more work than in all the projects last time I offered this course. Therefore, I will count your Exercise score for your Project 3 score. I will also calculate your grade without the Project 3 score and assign you the higher score.
Project 4 The certification exam counts for Project 4. If you take and finish the exam, you will receive full credit on Project 4. You do not have to pass the certification exam to get full credit.
Final Exam See separate description below. Due Sunday, Dec 13 by 4 pm. Some of you are taking the certification exam on Friday afternoon, so I did not want it due on the same day. Of course, you can turn it in earlier.
Screencast: Jenkins Docker Stages & Volumes
# Add the user jenkins to the group docker
$ usermod -a -G docker jenkins
$ groups jenkins
jenkins : jenkins docker
# Change the docker socket to be in the group docker
$ chgrp docker /var/run/docker.sock
# Change the group
$ chmod g+w /var/run/docker.sock
$ ls -lh /var/run/docker.sock
srwxrwxr-x 1 root docker 0 Dec 2 03:24 /var/run/docker.sock
Note: Your day and time will be different.
Screencast: CircleCI Artifacts config.yml
The screencasts are short, and their are no exercises, so spend the rest of the time on work towards the Final Exam.
Screencast Folder: Class Wed Dec 02
Reminders:
Week 15 Class 41 Mon Nov 30 Posted: Nov 30
Class session:
There are a lot of announcements today.
Certification Exam You can view your assigned time in Brightspace, Quizzes and Exams, AZ-900 Azure Fundamentals Certification Exam Time. You will not be taking the certification exam in Brightspace. Use this to verify your exam time. If there is an issue with the time, let me know as soon as possible.
Exercises There are no more exercises in the course. I will post a crossword for the certification exam, but that will be review for the certification exam. Use any exercise time to work on the Final Exam.
Project 3 This semester, you did much work in the exercises. I believe you did more work than in all the projects last time I offered this course. Therefore, I will count your Exercise score for your Project 3 score. I will also calculate your grade without the Project 3 score and assign you the higher score.
Project 4 The certification exam counts for Project 4. If you take and finish the exam, you will receive full credit on Project 4. You do not have to pass the certification exam to get full credit.
Final Exam See separate description below. Due Sunday, Dec 13 by 4 pm. Some of you are taking the certification exam on Friday afternoon, so I did not want it due on the same day. Of course, you can turn it in earlier.
Screencast: CircleCI Basics
The bug in CircleCI is that when you first log on, the previous organization is the default (e.g., “fenics-project”), even if for a different account. Cannot see the projects for that organization (404 error), but a UI bug.
Screencast Folder: Class 41 Mon Nov 30
Reminders:
The Final Exam is due by 4 pm on Sunday, Dec 13 by 4 pm.
Do the following on the markturn project. You can also use another codebase; make sure that the source repository is public or have access.
Implement 2 additional features that these platforms provide that I did not show in class. These features can be either:
You may find it easier to implement a similar feature in both Jenkins and CircleCI.
There is a GitHub Classroom repository for this project. Fill in the Report.md, and put any other code in this repository.
Week 14 Class 40 Wed Nov 25 Posted: Nov 25
Class session:
Announcements:
Today there is no screencast. What I have to show can easily be read.
Note the special, extended due date.
Announcement: AZ-900 Azure Fundamentals Certification Exam Format
We are still working on assigning time slots. Here is some further information on the format of the Certification Exam.
Study areas | Weights |
---|---|
Understanding cloud concepts | 15-20% |
Understanding core Azure services | 30-35% |
Understand security, privacy, compliance, and trust | 25-30% |
Understand Azure pricing and support | 25-30% |
Announcement: Azure Practice Exam
I did not have access to these materials (slides, walkthroughs, review questions) when I prepared for the Certification Exam. I went through the Online AZ-900 Learning Paths (Scroll down the page until the “Two ways to prepare”), which you can consult for background.
Exercise 98: Azure Crossword Questions
As you go through the material and practice quizzes create questions and answers for an Azure Crossword. On the Google Form add at least 2 answers and questions for the crossword. Your question/answer pair must be unique. Try not to repeat any current answer, and if you do, you must come up with a unique question.
One source is questions on the quizzes that you missed or terms you did not know.
I posted this exercise first to keep this in mind as you go through the material, but I suggest completing it last.
Exercise 99: Azure Module 02 Review Questions
All module review questions allow multiple attempts.
Yes, I did forget to assign this when we covered the slides (and already had it made up).
Exercise 102: Azure Practice Exam
After I went through the Online AZ-900 Learning Paths, the way that I prepared was through practice exams.
See the separate post for information on how to access them.
To verify your Practice Exam set up, submit a screenshot of a single question from the practice exam.
Exercise Due Date: 4 pm on Sunday, Nov 29
Reminders:
As part of the AZ-900 Certification Exam, you are also provided with access to practice exams. You can take practice exams through MeasureUp. Please follow the instructions below to set up an account and access the AZ-900 practice exam.
Product Registration Instructions:
MeasureUp Product Key ID: - Located in Brightspace in the feedback of the Grades for Exercise 102: Azure Practice Exam.
Please note, this Product Key has been assigned to you and may not be transferred to another individual. All practice test keys will expire 60 days after registering this key.
Week 14 Class 39 Mon Nov 23 Posted: Nov 23
Class session:
Announcement:
IT here at UA is conducting the Certification Exam. They will conduct the via a VM from Centiport. IT reserves VMs from Centiport for specific time slots and a limit on concurrent test takers.
The Certification Exam will take place during Finals Week. Your schedule and these many constraints make scheduling of this non-trivial. Our course assigned Final Exam time is Wed, Dec 9 from 12:15 - 1:15 pm. However, these do not align perfectly with when we can schedule the Certification Exam, and there may be a limit as to how many students can take the exam at the same time.
Please do the first exercise right away, by midnight today (Mon Nov 23) at the latest, to figure out availability.
Note that it will not harm your grade in the course if you do not pass the Certification Exam. However, you do need to complete the Certification Exam.
The Final Exam is a take-home exam and will not have a specific class meeting. The only specific time that you need to be available during Finals Week is for the Certification Exam.
Exercise 93: Availability for Certification Exam
Complete first. Due by Mon Nov 23 11:59:59 pm at the latest.
You can edit your response for a day or two. After that directly inform me via email of any availability changes.
Screencast: Azure Module 03-5: Monitoring and reporting in Azure notes
In addition to the notes for each screencast, the entire module is available in the Class Sessions
Screencast Folder: Class 39 Mon Nov 23
Exercise Due Date: 4 pm on Tuesday, Nov 24
Reminders:
Week 13 Class 38 Fri Nov 20 Posted: Nov 20
Class session:
Announcement:
The Walkthroughs are on a live, active platform. There can be delays. If you find a step is taking too long (over 5 minutes), then you can stop and submit what you have with a brief note of what you had to stop on. Whatever you do, be sure to delete any resource groups or resources that you created.
The optional Walkthrough for today is Walkthrough: Secure Network Traffic.
Screencast Folder: Class 38 Fri Nov 20
Exercise Due Date: 4 pm on Sunday, Nov 22
Reminders:
Note: To activate your UA Azure account, do the following:
If you have issues, let me know. I cannot test this.
Week 13 Class 37 Wed Nov 18 Posted: Nov 18
We continue to explore Azure. This time, we have some Walkthroughs (i.e., labs) to perform. The training materials I have from Microsoft say to use these as demos (i.e., I would make a screencast) or labs. They are relatively easy to follow, and I think you would prefer running through them yourself.
The Walkthroughs and the Review Questions are direct from Microsoft. Not that educators are perfect, but companies tend to be a bit sloppier in training materials. Also, note that there is one best answer in the Review Questions and then on the Certification Exam.
Some of the walkthroughs require an RDP client to connect to Windows. For macOS, you can download Microsoft Remote Desktop.
Use the region US East. For me, many of the default regions were in Australia.
The instructions for the Walkthroughs all end with advice on deleting the resources. Make sure you do so as a) You don’t want to use up your allowance b) In some cases, you are limited in concurrent use of a type of resource.
For each exercise, there is a Brightspace assignment to upload a screenshot(s). The screenshot should verify that you went through the Walkthrough and got it running. Part of the assignment is figuring out what that would be. Multiple screenshots are allowed for each exercise.
Class session:
I did not assign all the Walkthroughs. The following are optional:
Screencast Folder: Class 37 Wed Nov 18
Exercise Due Date: 4 pm on Thursday, Nov 19
Reminders:
Week 13 Class 36 Mon Nov 16 Posted: Nov 16
Class session:
Announcement:
Today we start on Azure Fundamentals. As a reminder, this material is provided by Microsoft towards the taking, and hopefully passing, the AZ900 Azure Fundamentals Certification. In exchange for the class going through this material, all students receive a chance to take the AZ900 Certification Exam for free.
John Corby, the CIO (Chief Information Officer) of UA, approached me about this late last Spring. I went ahead with it because:
To present this material, I taught myself the topic and took (and passed) the same certification exam you will be taking.
Microsoft provides the slides and labs. I will point out any changes that I make. I see Microsoft’s goals as a) generating more people who understand cloud in general and Azure in particular, and b) seeing how the notes and material could be improved.
I will discuss the Certification Exam later. The class will take the online exam during the last week of classes, and you will receive credit for taking the exam, even if you do not pass.
If you have any questions or issues, please let me know. Questions are particularly crucial as these are not my notes, and this is the first time we are using this material.
Screencast: Azure: Module 01-1: Why Cloud Services? Notes
Screencast: Azure: Module 01-2: Types of Cloud Models Notes
Screencast: Azure: Module 01-3: Types of Cloud Services Notes
Exercise 83: Azure Module 1 Review Questions
You only have one chance to answer, so answer carefully. Use the class slides and other Azure material.
Screencast: Azure Portal Introduction
Exercise 84: Azure Portal
Log into the Azure Portal using your UA id and password.
Submit a screenshot via Brightspace
Note: If you already sent me a screenshot (via Discord or email), you do not have to upload one.
Screencast Folder: Class 36 Mon Nov 16
Exercise Due Date: 4 pm on Tuesday, Nov 17
Reminders:
Week 12 Class 35 Fri Nov 13 Posted: Nov 13
Class session:
Announcement:
Today’s overall goal is to get Jenkins using Docker to build on a different Linux distribution than the one Jenkins is using.
We almost get there. All we have to do is to change the agent in the pipeline. We need to install a Docker plugin for Jenkins. Unfortunately, the plugin server for Jenkins was down all of Thursday and still not up at this time.
Once that is up, we are very close to building in a Docker container on a per-distro basis.
Screencast: Jenkins: DIND & DOOD
Exercise 81: Jenkins DOOD
Install Docker into a Jenkins container.
Then create a screencast showing that it works in DOOD mode from both the host and inside the container.
Shell into the container as root, so you do not have to deal with permission setup.
Submit the showterm URL
Screencast: Jenkins: Pipeline
Exercise 82: Jenkins Pipeline
Get a project to build in a Jenkins pipeline.
Submit the pipeline code (Groovy syntax)
Screencast Folder: Class 35 Fri Nov 13
Exercise Due Date: 4 pm on Sunday, Nov 15
Reminders:
Week 12 Class 34 Wed Nov 11 Posted: Nov 11
Class session:
Screencast: Jenkins: Git, Local, CTest, CPack
This video may be a little rough. My internal drive died, and I was using an external drive that was very slow. I lost the recorded session and had to recreate and record it on my laptop.
Exercises 79 & 80: Jenkins Full Build
Get a project to completely build in Jenkins, i.e., CMake and make/ninja.
If you already got this far in the previous class/exercises, resubmit the screenshot.
You can use:
Submit screenshot via Exercises 79 & 80: Jenkins Full Build in Brightspace.
Screencast Folder: Class 34 Wed Nov 11
Exercise Due Date: 4 pm on Thursday, Nov 12
Reminders:
Week 12 Class 33 Mon Nov 09 Posted: Nov 09
Class session:
Screencast: Jenkins Setup
On Sunday, I was setting up so that ports, such as 8080, were open on the class server. That way, you could run your Jenkins in a container on the class server and get access to it via a web browser. To do so, I have to manage ports. There are many ways to manage ports, but I chose ufw . When I set it up, it warned me about ssh sessions, but I did not think about it.
So I enabled ufw to manage ports. By default, ufw blocks all ports. I enabled port 8080 and was able to see in my local browser Jenkins running in a container on the class server.
Later that night, watching some TV, I noticed the Discord messages about the class server being down. I quickly realized what I had done. I had blocked the SSH port. Luckily, I had an open ssh session to the class server as root and was able to open it back up quickly.
When you will do something that could affect SSH, they always say to have an open SSH session as root running. I know that Linode has another way into the machine (that bypasses the restrictions), but that would take a lot more time.
Exercises 77 & 78: Jenkins Setup
Get Jenkins running in a container and add a project from a GitHub URL. Jenkins can be in a container on your local machine, or you can use the class server (see notes on this below).
In the screencast, I forgot to run the command with a named volume, so be sure to do so:
Then show the following:
apt
Upload to Exercises 77 & 78: Jenkins Setup
To run Jenkins in docker on the class server, you can find an individual port on the Brightspace course page. In the following, replace 8090
with your individual port:
port | |
volume | |
URL |
Screencast Folder: Class 33 Mon Nov 09
Exercise Due Date: 4 pm on Tuesday, Nov 10
Reminders:
Week 11 Class 32 Fri Nov 06 Posted: Nov 06
Class session:
Announcement:
Some comments about the Midterm Exam based on your questions and your current commits:
Exercise 75:
Continue to make the same changes to the file as shown in today’s screencasts. Use the GitHub Classroom repository that you used for CPack DEB.
Screencast: Hub: Git & Docker
When you connect a GitHub account to a Docker Hub acccount, if you have access to a repository on GitHub, then the Docker Hub account has access to it, including those of organizations you belong to (i.e., work). Better to use a separate account.
My accounts used in the screencast:
If you try this yourself, when you connect at Docker Hub, make sure you are logged into the GitHub account you want to link to. In the same browser.
Exercise 76: Hub: Git & Docker Crossword
Some answers to git commands do not appear in the screencast and require the command’s help option or manpage.
Screencast Folder: Class 32 Fri Nov 06
Exercise Due Date: 4 pm on Sunday, Nov 08
Reminders:
Week 11 Class 30 Wed Nov 04 Posted: Nov 03
Class session:
Announcement:
This session is what we were going to do on Monday.
I have a CPack DEB II, but it is too long in combination with today’s screencast, so that will be on Friday (with perhaps a part III).
Screencast: CPack DEB
Note the exercise below where you follow along—lots of useful links.
Exercises 73 & 74: CPack DEB
Note: Some students are experiencing different results from lintian for issues with description and other parts. The version of lintian appears the same, but there is a difference in the CMake version (and CPack version) that may generate them differently. For these exercises, try to approximate what I show in the screencast. The process is the crucial part, and at least you will know where the parts, such as the description, are.
You are going to make the same changes to the file as shown in today’s screencasts. You may want to do this are you are going along.
There is a GitHub Classroom repository for you to use. The link is on the Brightspace course page.
DemoSEComplexityCPack - Git repo with the screencast entries
Complex GPL License For reference, do not use for COPYING.txt
COPYING.txt Example license file for you to modify.
Screencast Folder: Class 30 Wed Nov 04
Exercise Due Date: 4 pm on Thursday, Nov 05
Reminders:
Week 11 Class 30 Mon Nov 02 Posted: Nov 02
Class session:
Major Announcement:
I had multiple screencast recording failures. I did get a good one rerecorded, but it is taking to long to export and upload.
Therefore, class today is cancelled.
If I can, I will post the class meeting later today. You can wait until Wednesday to work on it, but if you want you can start early.
The Midterm is now due by Monday, Nov 9. I will have it posted later today.
Reminders:
The Midterm Exam is due by 11:59:59 pm on Monday, Nov 9.
In this course, we examine a variety of automation and generation tools from low level to high level, including:
We can use these tools for all types of development activities, including:
Using the markturn project as a base, write up an in-depth report on combining the tools for each activity.
Your audience is technical (they know how to program), but they may not be familiar with these tools. They particularly may not know the tools that we covered.
Keep in mind the following:
Week 10 Class 29 Fri Oct 30 Posted: Oct 30
Class session:
Announcement:
I will post the Midterm Exam by class time on Monday, Nov 2. It is a take-home exam due by Friday, Nov 6.
The exercises today work with complicated tools. If you have any questions, make sure to drop into Discord or send me an email. Questions often lead me to clarify the instructions.
I am behind on grading. Will get caught up this weekend.
Screencast: DevOps Remote Work
I swear that it will kill the job if you exit a remote system unless you use nohup. It just takes a while to do so, so I could not demo that in the screencast. Besides, with a critical, long-running program, you do not want to take a chance.
The more modern version of screen
is tmux
, and there are many other alternatives.
Exercise 70: screen session
Create a showterm session that demonstrates using the screen
program. You can use the class server or a local machine.
Demonstrate the following:
screen
session.Upload to DevOps Exercise 70: screen session
Screencast: DevOps Init Systems
In retrospect, on the GenN example, I should have used a Python program instead (less to install).
Also, you can use docker cp
to copy a file into a running container:
systemd genn service - Modify at least User and ExecPath.
Exercises 71 & 72: Service
Take a program and turn it into a system service. The program can be a simple
python or PHP script, or even a bash script. Yes, you can use GenN.cpp. Whatever
it is, it needs to run forever, with some output.
Make the output go to stderr to view with launchctl
.
The choices are:
Create a showterm that demonstrates the following:
Note: Symbolic links are of the form:
If you are in the directory where you want the symbolic link, then it is just:
Upload to DevOps Exercises 71 & 72: Service
Screencast Folder: Class 29 Fri Oct 30
Exercise Due Date: 4 pm on Sunday, Nov 01
Reminders:
Week 10 Class 28 Wed Oct 28 Posted: Oct 28
Class session:
Screencast: Docker Compose Environment Variables
For srcML, I have been using environment variables that start with COMPOSE_. The screencast reminded me that Docker Compose has environment variables with that same prefix. I will be changing all of mine so as not to confuse. Most likely going to a prefix of COMMAND_.
Exercises 68 & 69: Environment Variables
Create a single docker-compose.yml file of 2 services with the following behavior:
Then, in a showterm session, demo running this with the above options. You can use environment variables from the shell or a .env file.
Upload both to Exercises 68 & 69: Environment Variables
Screencast: Docker Volumes
Screencast Folder: Class 28 Wed Oct 28
Exercise Due Date: 4 pm on Thursday, Oct 29
Reminders:
Week 10 Class 27 Mon Oct 26 Posted: Oct 26
Class session:
Screencast: Docker Compose for Debugging
Note how the state of the container is preserved, even if stopped.
The --force-recreate
caused the container to lose the previous state.
Exercise 63: Docker Compose Mass Build
The answers for options include hyphens.
Some of the answers may require looking at the --help
for the commands.
Exercises 64-67: Docker Compose Anchors & Aliases
Create a Docker Compose file for running a command on at least two different services. The services are identical except for the image. Use any publicly-available images.
Use a GitHub Classroom repository Alias&Anchors with the link on Brightspace.
Create the Docker Compose file in at least 4 separate versions described below. Tag each version using the terms below.
For each version, make sure that they are equivalent. Use the command
docker-compose config
to verify for each change.
Screencast Folder: Class 27 Mon Oct 26
Exercise Due Date: 4 pm on Tuesday, Oct 27
Reminders:
Week 9 Class 26 Fri Oct 23 Posted: Oct 23
Class session:
Announcements:
The due date for Project 2 is now Monday, Oct 26.
Part of a screencast today may help you with Project 2. Moreover, you may need to make adjustments to Project 1.
If you want to make adjustments to Project 1, go ahead and do so.
Lots of parts today, but screencast time is shorter.
Exercise 59: Certification Exam Survey
Part of the class will be training material (provided by Microsoft) towards the AZ-900 Azure Fundamentals Certification Exam.
Microsoft is providing a free Certification Exam for students in this program. In order to set this up, I need to figure out some details about scheduling.
Please fill in the survey at the link provided in the title.
Screencast: CMake in the Real World
List all variables:
Examples from the srcML build. Not all of the srcML build is up to date with techniques from this class.
Exercises 61 & 62: Basic docker-compose.yml
a. Create a docker-compose.yml so that when using the command
docker-compose up
outputs the file docker-compose.yml in the current directory.
Try to use version 3.8. If you can’t, use the highest version number on the system you are using.
Install instructions Only have to do Step 1.
b. Create a showterm session to demonstrate running your Docker Compose file.
Screencast Folder: Class 26 Fri Oct 23
Exercise Due Date: 4 pm on Sunday, Oct 25
Reminders:
Week 9 Class 25 Wed Oct 21 Posted: Oct 21
Class session:
Exercise 56: Action Dockerfiles
Create a separate Dockerfile for each of the following:
a) Default command is to cat the file /etc/os-release,
but it can be replaced by any command via the docker run
.
b) Default command is ls -lh
, but the user can specify
the directory (default is /
)
c) Default command is ls -lh bin
, but the user can specify
a different directory instead of bin
The line ...
indicates the output was truncated on this page. Your
output will not be truncated.
Use the exec form (the one with brackets) instead of the shell form.
Upload all three to DevOps Exercise 56: Action Dockerfiles
Screencast: Command Automation
One example of a program that uses ssh
and does follow the
ssh configuration file is git
.
Exercise 57: Command Automation
Create a showterm session to demonstrate the following:
declare
, type
, and/or compgen
.declare
, type
, and/or compgen
.Try to be creative with your examples.
Upload to DevOps Exercise 57: Command Automation
Screencast Folder: Class 25 Wed Oct 21
Exercise Due Date: 4 pm on Thursday, Oct 22
Reminders:
Week 9 Class 24 Mon Oct 19 Posted: Oct 19
Class session:
Announcement:
For Project 1, I will not make any more pull requests.
Screencast: Dockerfile ARG & ENV
--build-arg
--env
--env-file
(incorrect on slide in screencast)--env
, --env-file
, Dockerfile defaultExercise 54: DevOps ARG & ENV Crossword
Answers for options include prefix and internal dashes.
Screencast: CMake Hierarchies
Concepts from SE:
Base Example: CMakeHierarchy
Separate Testing: subprojects
Exercise 55: DevOps CMake Hierarchies Crossword
Assume the Git repository is in your home directory.
Answers may include underscore, “_”, and paths, “/”.
Screencast Folder: Class 24 Mon Oct 19
Exercise Due Date: 4 pm on Tuesday, Oct 20
Reminders:
Week 8 Class 23 Fri Oct 16 Posted: Oct 16
Class session:
Announcements:
Am creating a list of common apt
commands with examples. Currently in-progress.
Screencast: Alias, man pages, Environment
Exercise 52: Alias, man pages, Environment Crossword
Answers can include underscores “_”.
Screencast: Filesystem Hierarchy Standard
Exercise 53: Filesystem Hierarchy Standard Crossword
Paths include slashes “/” in the answers.
Screencast Folder: Class 23 Fri Oct 16
Exercise Due Date: 4 pm on Sunday, Oct 18
Reminders:
Week 8 Class 22 Wed Oct 14 Posted: Oct 14
Class session:
Announcement:
Did not get as much content out in pull requests for Project 1 as I hoped. So extending the due date to 11:59:59 pm Monday, Oct 19.
Note that on real projects, files are constantly being added/deleted/renamed. Directories are reorganized. New library are added, and old libraries are deleted. Reponsibility for the build, including the environment for the build, is one that never stops.
Screencast Folder: Class 22 Wed Oct 14
Exercise Due Date: 4 pm on Thursday, Oct 15
Reminders:
Week 8 Class 21 Mon Oct 12 Posted: Oct 12
Class session:
Exercise 48:
Quite a few have not created their markturn repositories. In order for me to add pull requests, you need to create the initial repository.
Consider this as an exercise due by 2 pm of Mon, Oct 12.
If you already created the repository, there is nothing you need to do to get credit for this exercise.
Screencast: ctest
Exercise 49: Demo CMake File
If you are writing a program and go to use part of an API that you are not sure about, you can add it to your program and write a series of output statements (or assertions) to check the results. The problem with this is that it makes the overall program more complicated. It is easy to get confused because you are mixing the large program’s behavior with understanding the API’s behavior. The behavior that you observe is dependent on the behavior of the large program and the behavior of the API you are trying to use. In good design we try to isolate dependencies.
So when I investigate or present parts of an API, I write small, focused programs whose only purpose is to use the API. For example, if I am not sure how a particular part of std::vector works, I write a small C++ program to try it.
We can do the same with CMake. Below is the start of a small demo program for
get_filename_component()
.
Create an empty directory, copy this file into it, and run cmake. You can even run cmake “in-source” because there is not any “source”.
For this exercise, finish this demo example for all options of get_filename_component(). Replace the hard-coded filename with the filename from the crossword questions in Exercise 50.
Upload your CMakeLists.txt to DevOps Exercises 49: Demo CMake File
Exercise 50: ctest Crossword
Crossword answers can include underscores (‘_’) for multi-part names, and slashes (‘/’) and periods (‘.’) for filenames.
Screencast: ctest Example Part I
Screencast Folder: Class 21 Mon Oct 12
Exercise Due Date: 4 pm on Tuesday, Oct 13
Reminders:
Week 7 Class 20 Fri Oct 09 Posted: Oct 09
Class session:
Announcement:
We have three screencasts today, all devoted to CMake. Since they ran for almost 50 minutes, there is no exercise to enter the examples.
However, there is Project 1, where much of this is useful.
Screencast: CMake Source Directories
I struggle with good naming and directory structure. For srcML, I considered:
src
├── client
└── libsrcml
test
├── client
└── libsrcml
(a)
client
├── src
└── test
libsrcml
├── src
└── test
(b)
client
└── test
libsrcml
└── test
(c)
Choice (a) separates src
and test
first, (b) separates by application first, and (c)
the source files are not in a subdirectory, but the test
s are.
We went with (a) as it fits the build files better (more on that later).
I would have named the client
the client’s name, srcml
, but thought that may be
confusing as it is the name of the entire thing.
Another decision: test
or tests
?
Screencast Folder: Class 20 Fri Oct 09
Exercise Due Date: 4 pm on Sunday, Oct 11
Reminders:
Week 7 Class 19 Wed Oct 07 Posted: Oct 07
Class session:
Screencast: Project 1 & Project 2
Motivation: Jekyll is a static website generator closely associated with GitHub Pages. Besides fixed .html pages, it is the most common way to create a GitHub Pages website. Jekyll generates the website you are looking at now.
Jekyll supports data files in the text data formats YAML, JSON, CSV, and TSV. I recently had to convert srcML documentation pages from an XML format to one of these data formats (JSON or YAML). This conversion was much more difficult than I expected. After much searching and experimentation, I first converted to JSON, manually fixed the JSON, and then converted it to YAML. In addition to the manual work, this involved multiple tools and multiple dead ends.
Screencast: CMake Object Libraries
Note: Seems on some platforms (WSL2?) CMake doesn’t pick up that the Object library needs to compile with -fPIC. So add the following to your srcmlxpathobj target:
set_target_properties(srcmlxpathobj PROPERTIES POSITION_INDEPENDENT_CODE ON)
Exercises 45 & 46: CMake for SEComplexity
Create a CMake build for SEComplexity. You can start with your CMakeLists.txt that has both shared and static libraries.
Then, create a showterm session where you generate, build, and run with a Debug build and then with a Release build.
Upload your CMakeLists.txt and showterm URL to DevOps Exercises 45 & 46: CMake for SEComplexity (Not to Brightspace).
Screencast Folder: Class 19 Wed Oct 07
Exercise Due Date: 4 pm on Thursday, Oct 08
Reminders:
Project 1 is due by 11:59:59 pm Friday, Oct 16 Monday, Oct 19.
There are multiple text data formats, including XML, JSON, CSV, TSV, and YAML. Conversion between these formats is not as easy as it should be. Some tools only include two of these formats. Many tools are not customizable and make conversion decisions that do not reflect an understanding of the formats.
The markturn project is a conversion program for text data formats, e.g., XML, JSON, and YAML. It is a command-line program and corresponding library that allows easy conversion between data in these formats. The ultimate goal is to provide customization so a user would not have to use multiple tools when converting between these formats. And, of course, the program is a platform for additional text data formats.
The project is just starting, with mostly skeleton code. I.E., many of the files are there but are unimplemented. Regardless, the necessary files exist, and the dependencies on external libraries are in place.
You can get your repository through the GitHub Classroom link on the Brightspace page.
The project does not currently have a build. Developers are entering build commands manually. So you are to create a CMake build for the project. This build is to accomplish the following:
tgz
, zip
I will update the code throughout the project as I implement more parts of the code. These updates are in the form of pull requests so you can control when they are part of your repository. At the end of the project, all pull requests must be accepted.
As you create this, keep in mind the following:
Project 2 is due by 11:59:59 pm on Friday, Oct 23 Monday, Oct 26.
The markturn project is going ahead with development. Someone is creating an automated build using CMake.
What is missing are environments to build the project.
Create Docker files that will provide containers for the markturn project. The project needs containers for the following platforms:
The idea behind this mix is a stable, long-term version and the latest version to prepare for the future.
A GitHub Classroom repository is available for you to work on these. You are encouraged to use as many different images as you need for the project.
Week 7 Class 18 Mon Oct 05 Posted: Oct 05
Class session:
Announcement: Using the bind mount, we used a subshell for the pwd
command, as in:
docker run --mount type=bind,source=$(pwd),target=/srcComplexity,readonly
At one point, I briefly mentioned that examples of this had quotes around the subshell. I have not been doing that, even in the screencasts for today.
However, I ran into a problem with pathnames that contain spaces. Ironically enough, when running your CMake files from the previous class:
invalid argument "type=bind,source=..." for "--mount" flag: target is required
as the path, i.e., /Users/collard/Library/Mobile Documents/
contains spaces.
From now on, I will use double quotes around the subshell when it produces a path/filename:
docker run --mount type=bind,source="$(pwd)",target=/srcComplexity,readonly ...
Note that the problem here is not the subshell, but that it returns a filename that may contain spaces.
Exercise 42: CMake Static Library
Create a CMake build for SEComplexity that creates and links only to a static library.
Enter it in steps, and check what occurs on each step.
Upload your CMakeLists.txt to Brightspace.
Exercise 43: CMake Shared Library
Create a CMake build for SEComplexity that creates and links only to a shared library. This CMake file does not include the static library at all.
Enter it in steps, and check what occurs on each step.
Upload your CMakeLists.txt to Brightspace.
Exercise 44: CMake Both Static & Shared Libraries
Create a CMake build for SEComplexity that creates both the static and shared libraries.
The srcComplexity program is to link to the shared library.
Enter it in steps, and check what occurs on each step.
Upload your CMakeLists.txt to Brightspace.
Screencast Folder: Class 18 Mon Oct 05
Exercise Due Date: 4 pm on Tuesday, Oct 06
Reminders:
Week 6 Class 17 Fri Oct 02 Posted: Oct 02
Class session:
Exercises 40 & 41: CMake for SEComplexity
Create a CMake build for SEComplexity. I strongly advise that you enter it in steps (as I did), and make sure each part works.
Demonstrate in a showterm session building and running using your CMake build.
Upload your CMake file and the showterm session URL to DevOps Exercises 40 & 41: CMake for SEComplexity
Screencast Folder: Class 17 Fri Oct 02
Exercise Due Date: 4 pm on Sunday, Oct 04
Reminders:
Week 6 Class 16 Wed Sep 30 Posted: Sep 30
Class session:
Announcement:
So the Makefile tab issue. I was getting your Makefiles by going to the form and copying it off the form in the browser. I then tried downloading a CSV file of your submissions. That fixed many of them, but not all. To summarize, with “Correct” meaning a tab and “Incorrect” meaning spaces:
One lesson from this is to be careful with how you copy/exchange files. Keeping it in file form is always best.
What I should use is the Google Form file upload.
Screencast: Directory Sharing showterm Session
Exercise 39: CMake & Dance
Download the dance.cpp file and create a CMake build for it. You can do this in a local machine, or on the class server.
In a docker container, share the source directory, and demonstrate in a showterm session building the dance program. You can use Make or Ninja, whichever you want to generate using CMake.
Then demonstrate running the dance program.
You can use the mlcollard/linux-dev image, or your own. Note that the standard Ubuntu images do not have everything that you need for the build installed.
Enter your showterm session URL in the form Exercise 39 CMake & Dance
Screencast Folder: Class 16 Wed Sep 30
Exercise Due Date: 4 pm on Thursday, Oct 01
Reminders:
Class session:
Announcements:
Please check the feedback for Exercises 33 & 34 Makefile. Multiple students (but not all) had
spaces instead of tab indentation. I had to run the Makefile through unexpand
to fix them. This issue may be due to how you
copy/paste it into the form. Just make sure that that the Makefile in your directory works.
There are a couple of ways to go through the material for today. View both screencasts, then do the crossword (which involves both), then do the Makefile exercises. Or do the Makefile exercise as you finish the corresponding screencast. Whatever you do, follow the order of static then shared.
I am not entirely confident in how well I prepared you for today’s Makefile exercises. If you have any questions or confusion, please contact me. It will help your answer and benefit the class as this affects what I post on Wednesday.
Exercise 35: Static Library Makefile
A reminder that your previous Makefile (from Exercises 33 & 34) did the following:
make
- Runs srcComplexity (uses the first target by default)make run
- Runs srcComplexity with an example filemake clean
- Cleans up generated filesTake that Makefile (from Exercises 33 & 34) and perform the following changes so that these commands run correctly:
make static
- Builds program srcComplexityStatic using a static library libsrcmlxpath.amake runstatic
- Runs the program srcComplexityStaticmake clean
- Now also removes the static libraryMake sure that the commands all run correctly.
Note: You can add a target for static and srcComplexityStatic in the following manner:
.PHONY: static
static : srcComplexityStatic
You do not need an action for the target static. Then, create the target for srcComplexityStatic.
Upload your Makefile to DevOps Exercises 35 Static Library Makefile
Screencast: Shared Libraries showterm Session
Appears the last minute is messed up. A sync problem in the edit(able) version. Here is the text of the last minute:
I should also point out here that there are many libraries. Where you cannot get the code or get the libraries with the dot, you have an -fpic run on them or the option when they were compiled in that’s one reason we sometimes have to build libraries from scratch if you’re using them in other applications.
Okay. I’m going to stop now.
I was even less abrupt in this one.
Exercise 36: Shared Library Makefile
Take the Makefile from Exercise 35 Static Library Makefile and perform the following changes so that these commands run correctly:
make shared
- Builds program srcComplexityShared using a shared library libsrcmlxpath.somake runshared
- Runs the program srcComplexitySharedmake clean
- Now also removes the shared libraryMake sure that the commands all run correctly.
Upload your Makefile to DevOps Exercises 36 Shared Library Makefile
Exercise 37: Shared & Static Library Crossword
You may need to look at man/info pages for some of the command options.
Screencast Folder: Class 15 Mon Sep 28
Exercise Due Date: Tuesday, Sep 29 at 4 pm
Reminders:
Class session:
$<
Replaced with the first dependency (less than symbol)$^
Replaced with all dependencies (up arrow, or caret, symbol)$@
Replaced with the name of the target (at symbol)Further explanation from the Make Manual
Exercises 33 & 34:
Note: To do this on your own Ubuntu server/installation, you need to install libxml2-dev:
sudo apt-get install libxml2-dev
The class server already has this package installed.
Grab the code for SEComplexity and write a Makefile. You can use the screencast to review anything that you missed. Make sure that it works on the demo server.
I strongly advise that you enter it in steps (as I did), and make sure each part works.
Then, add the following:
#include
for a new source-code file, XPathUtilities.hpp, to
srcMLXPathCount.cpp and update the build. This file can be empty.If both cases, you need to update the Makefile to accommodate these build changes.
Upload your Makefile to DevOps Exercises 33 & 34 Makefile
Screencast Folder: Class 14 Fri Sep 25
Exercise Due Date: Sunday, Sep 27 at 4 pm
Reminders:
Class session:
Announcements
The class server has individual accounts based on your UAID and your submitted key. The shared class1 (class2, etc.) accounts are now deprecated, and I will remove them by Mon Sep 28.
The class server is on Linode. If you have used it to run docker, you are sharing (with the rest of the class) a $5 a month server. See Brightspace for more details, including a coupon code for $20, which is 4 months of free use of your own server.
make; make run; make test
. For the install, copy the sort
program to /usr/local/bin/sortDevOps. When the install is complete, remove the source and build files. Again, all of this is in the Dockerfile.Demonstrate this in a container using a single showterm session:
which sortDevOps
to demonstrate that the program is installedsortDevOps c b a
Your Dockerfile should not only work but demonstrate the principles shown:
You do not have to pull/push to Docker Hub.
Upload your single showterm session URL and your Dockerfile to DevOps Exercises 30 & 31 Dockerfile
Screencast Folder: Class 13 Wed Sep 23
Exercise Due Date: Thursday, Sep 24 at 4 pm
Reminders:
showterm --delete <URL>
Class session:
Exercise 25: Documenting Dockerfiles & Installing via URL Crossword
There are many short “words” in this one.
Inside note. I use crosswordlabs.com to create a crossword. For the first time, I got the warning: “Keep adding more words!” and “We couldn’t place these words on the crossword because they don’t have enough common letters with other words: …”.
Demonstrate this in a container using a single showterm session:
Your Dockerfile should not only work but demonstrate the principles shown:
You do not have to pull/push to Docker Hub.
Upload your single showterm session URL and your Dockerfile to DevOps Exercises 27 & 28 Dockerfile
Screencast Folder: Class 12 Mon Sep 21
Exercise Due Date: Tuesday, Sep 22 at 4 pm
Reminders:
showterm --delete <URL>
Programming classes spend an entire semester using a single programming language, e.g., C++ in 3460:209/210.
In DevOps, there are a large number of new technologies with associated special-purpose languages. One term used for this is DSL (Domain Specific Language). Just with Docker, we use general Unix & bash commands, Dockerfile instructions, docker (CLI) commands, and will eventually use Docker Compose declarations. And this is only one technology in the course.
To be successful, do the following:
Style is very important. I have never seen Dockerfile instructions, e.g., “RUN”, in lowercase. I had assumed that these instructions must be uppercase. In the Dockerfile exercise, some of you did not use uppercase. Yes, it worked, but it did not follow the style, and if you were applying for a job and wrote them that way, they would not hire you.
So follow the style you of the examples and documentation:
Doing so is even more critical than with source code. In DevOps, we tend to:
A brief overview of using CMake using sortDevOps as an example:
/sortDevOps
Many Makefiles assume an in-source build where the generated object code, libraries, and executables are created in the source directory
CMake is typically used with an out of source build where the generated files are in a separate directory from the source. This separation:
make clean
Create a build directory. Typically these are at the same level as the source
and have a name based on the source directory name, e.g., /sortDevOps-Build
.
Invoke the cmake
command to generate the Makefile
cmake /sortDevOps
make; make run; make test
Class session:
Special Note: The class server now has individual accounts based on your UAID and your submitted key. Transition to using those instead of the shared class1 (class2, etc.) accounts.
Screencast: Build Image Part A showterm Session, SimpleDockerfile Repository
One thing I should have mentioned is that tokens (as with dockerhub) allow a more restricted access an account than a password. E.g., a token cannot be used to change a password. This follows the “principle of least privilege”. I.e., we only need to pull and push images, not change the account.
Screencast: Build Image Part B
In two parts due to recording issues. Continuation in the showterm above. I need to work on some tools for easily manipulating showterm sessions.
Exercise 23 & 24: Create a Dockerfile for a container to build a C program (C++ is not needed).
You can build the Dockerfile off any version of Ubuntu. Once you have it working, demonstrate the following in a single showterm session:
Your Dockerfile should not only work but demonstrate the principles shown:
You do not have to pull/push to Docker Hub.
Upload your single showterm session URL and your Dockerfile to DevOps Exercises 23 & 24 Dockerfile
Screencast Folder: Class 11 Fri Sep 18
Exercise Due Date: Sunday, Sep 20 at 4 pm
Reminders:
To delete a temporary showterm session, the command is showterm --delete <URL>
Class session:
Screencast: Running Docker showterm Session
I am trying something new with this screencast. The screencast is a video of me narrating a showterm session. You can also view the showterm session directly (with no audio, of course). Note that the timing is not quite the same as the video is edited, and sometimes showterm is paused as I discuss the command. If you have trouble seeing the commands, refer to the showterm session.
Exercise 21 & 22: Demonstrate the docker commands used in the Running Docker screencast. This assignment counts as 2 exercises.
Use showterm to record your session. Install showterm on your local machine (highly recommended) (see showterm.io for installation instructions, or use the class server (accounts class1, class2, .., class5).
Your session does not have to be perfect. You can mess up commands, etc. Also, don’t enter my mess ups. Note that you can copy and paste from my showterm session, but I suggest you limit it to URLs. Entering the commands will help you to understand and remember them. You may want to follow in the showterm Session as you can move around the session much more easily.
To start your recorded session:
showterm
To end a recorded session, use a “Control-D” or type:
exit
I suggest you first experiment recording a showterm session with just a few simple commands.
After recording your showterm session, a URL of the form http://showterm.io/… will appear. Upload this URL to DevOps Exercises 21 & 22 Running Docker Session
Make sure to view your session via the URL (enter it into a browser). If you want to break this up, you can create multiple showterm sessions. Just make sure to give me all the URLs.
If you want to delete a temporary showterm session (not the URL you are submitting), the command is:
showterm --delete <URL>
Screencast Folder: Class 10 Wed Sep 16
Exercise Due Date: Thursday, Sep 17 at 4 pm
Announcements:
Class session:
Screencast Folder: Class 9 Mon Sep 14
Exercise Due Date: Tuesday, Sep 15 at 4 pm
Announcements:
In the spring, I was approached by the UA CIO (Chief Information Officer) about a program where faculty included training for Azure in their classes. The benefits are:
I felt that one missing part of this course was an overview of a full cloud platform, such as Azure. In preparation, I did the following:
Therefore:
For now, you will need to complete a survey for the program. I will send this out in email during class time on Monday. I am not sure what the survey result is, but whatever it is, upload it as a PDF to Brightspace to receive credit.
Multiple students had issues today with SSH agent forwarding. It appears to boil down to whether you had an ssh-agent running or not.
Suppose you are on a UNIX-based OS using a GUI (Linux desktop, macOS). Then ssh-agent is automatically set up and running. If you are using Linux on a server or WSL, then the ssh-agent is not automatically setup.
So, you have to set them up. The commands to do so are in the notes
If you are on macOS, add the macOS specific SSH directives to your ~/.ssh/config file. They will make managing keys and passphrases easier.
During this class session:
Screencast is in the folder Class 8 Fri Sep 11.
For the last two exercises, I believe I have given you enough information to complete it. If you have any questions at all, contact me. Note that if you update your public key in the DevOps SSH Key form, there may be a delay as I have to manually add the key to the accounts on the class server.
All exercises are due by 4 pm on Sunday, Sep 13. To receive credit for the exercise, you must view the screencast via Brightspace.
Some screencasts are from the notes, so see the notes page to follow along.
Announcements:
Note: See special post on SSH Agent Forwarding and ssh-agent
Complete the following in order:
Special Note: The ForwardAgent has to be in effect using the proper host name. For now, put the ForwardAgent directive in the “Host *” part.
class5
Your public SSH key is in the .ssh/authorized_keys file in one of these accounts.
Before you begin, you must make sure you have done the following correctly:
The following references “knuth or your local machine”. By this, I mean the system that contains your private SSH key. I prefer this to be your local machine, but it is not required.
Complete the following in order:
Special Note: Due to the problem on Friday, today’s lesson is the same as Friday’s
During this class session:
Note: When someone requests your SSH key, they mean the entire contents of your public key file (e.g., id_ed25519.pub). Never handout your private key
Screencast is in the folder Class 6/7 Fri/Mon Sep 4/9.
All exercises are due by 4 pm on Thursday, Sep 10. To receive credit for the exercise, you must view the screencast via Brightspace.
Some screencasts are from the notes, so see the notes page to follow along.
Announcements:
During this class session:
Exercise 10: Activate CS Account
You need to activate your CS account to use the department servers. There were problems with these servers, but hopefully, they are fixed. Unfortunately, I cannot try this as a student.
So follow this process as far as you can. Upload a PDF that shows how far you get. If you don’t understand a step or get stuck, make a note in Brightspace when you upload the PDF. I give full credit for any attempt.
ssh uanetid@knuth.cs.uakron.edu
, where uanetid is
your university account name. You do not have to be on the VPN or on the campus network to access knuth.cs.uakron.eduScreencasts are in the folder Class 5 Wed Sep 2.
All exercises are due by 4 pm on Thursday, Sep 3. To receive credit for the exercise, you must view the screencast via Brightspace.
Some screencasts are from the notes, so see the notes page to follow along.
Announcements:
During this class session:
Exercise 7: Docker Account
Create a Docker account at hub.docker.com. Upload a PDF to Brightspace that verifies you have an account. Deciding how to demonstrate this (i.e., what to upload) is part of the assignment.
Screencasts are in the folder Class 4 Mon Aug 31.
All exercises are due by 4 pm on Tuesday, Sep 1. To receive credit for the exercise, you must view the screencast via Brightspace.
Some screencasts are from the notes, so see the notes page to follow along.
Announcements:
During this class session:
Screencasts are in the folder Class 3 Fri Aug 28.
All exercises are due by 4 pm on Sunday, Aug 30. To receive credit for the exercise, you must view the screencast via Brightspace.
Some screencasts are from the notes, so see the notes page to follow along.
Announcements:
You do not have to be on the campus network (e.g., via VPN) to access Safari Books Online.
First, use the following link:
You will then create an account and use that account from now on.
During this class session:
Screencasts are in the folder Class 2 Wed Aug 26.
Except for Exercise 4, all exercises are due by 4 pm on Thursday, Aug 25. To receive credit for the exercise, you must view the screencast via Brightspace.
Some screencasts are from the notes, so see the notes page to follow along.
Announcements:
Find a case study of DevOps implementation in a company/organization.
Special Due Date: 4 pm Friday, Aug 28 4 pm Sunday, Aug 30
Write up some facts from the case study, looking for the following:
To get the widest variety of case studies, use the DevOps Case Study (link in Brightspace) to indicate who you are, the company, and the url of the case study. Different case studies on the same company are allowed but do not repeat the ordered pair (company, case study).
If you find more than one case study, go ahead and put it in the spreadsheet’s url column on a blank line. Other students can then claim it.
Note that I may share your report with the rest of the class.
The first class covers the following:
Exercise 1: Job Requirements Report
Find two different job listings that have DevOps in the title:
Write a report that includes the following:
The overall purpose of this assignment is to create a list of required technical skills.
Upload the report as a PDF to Brightspace
Exercises are due by 4 pm on Tuesday, Aug 25.
All screencasts are in a folder for that class period. Screencasts are posted by class time, and the corresponding exercises are due the next day. To receive credit for the exercise, you must view the screencast via Brightspace.
The folder for the first class meeting “Class 1 Mon Aug 24” is in Brightspace. To find it:
They are in the folder Class 1 Mon Aug 24. (direct link)
Some screencasts are from the notes, so see the notes page to follow along.
Announcements:
More than any other semester, I am sure that you have questions about the course. I will update this post as needed.
The course is online. This format fits the topic well, and much training in the DevOps field is online.
Class time is a combination of the following:
The screencasts and exercises are available by the start of class time and must be viewed/completed by the next day.
Even though you have past class time to view the screencasts and complete the exercises, I strongly suggest that you try to use class time to do this work.
During class time, I am online and available for questions in shared and private chat sessions. My current plan is to use Discord, as I found it worked well last semester.
Office Hours are online. I am available for questions in shared and private chat sessions.
For now, I do not have set times for on-campus office hours.
The draft syllabus for the course is on the main course page. The final version will be available right before the first class meeting.
The Midterm Exam and Final Exam are both online. I am considering a take-home exam for the Midterm and a demonstration for the Final Exam.
The textbook is available from a link on the main course page.