CSCI 338: Fall 2024

Software Engineering

CSCI 338: Fall 2024

Topic 3. Everything As Code (+ Docker)

In this unit, we will explore the idea of formalizing your entire software stack using code (e.g. operating system configurations, dependencies, documentation, and more). Even if your team is collaborating on the same codebase, if each team member is developing software with a different compiler, interpreter, language version, operating system, etc., you will likely run into conflicts and inconsistencies. Give this, you will learn about why "everything as code" is such an important idea, and some tools and strategies for managing your system stack over time.

Readings

This week our topic is “Everything as Code.” Readings are a bit light because I’m hoping you’ll spend your outside-of-class time getting oriented with Docker.

Slides

Tuesday, 9/10

Slides & Activities

Readings

Thursday, 9/12

Slides & Activities

Readings

Study Questions

  1. What were servers "back in the day"? What are servers now?
  2. What kinds of server challenges do administrators need to be able to handle?
  3. What is virtualization? What is containerization? How are they different?
  4. What is the difference between declarative and imperative code? What are some examples of each?
  5. Besides your application's source code, what other kinds of things should you also represent as code?
  6. What are some of the advantages of putting all aspects of your system in terms of code?
  7. What is Docker and why is it useful?
  8. Be able to explain the following Docker concepts: image, container, volume, bind mount