CMSI 1024

Software Carpentry*

Fall 2026



* The phrase “software carpentry” was coined by Greg Wilson and Brent Gorda in 1998: https://software-carpentry.org/
  • Brightspace: Where you can access private content and check your grades
  • We will use PostCommit to manage and submit some assignments
  • Every now and then we may use Socrative to ask or answer questions as a class—my Socrative room is DONDILMU

Episodes (a.k.a. Assignments)

  • Episode 0916 Filescape navigator
  • Episode 0928 Curator personalis
  • Episode 1014 Edits, envs, and execution
  • Episode 1026 To [Git]hub and to hold
  • Episode 1109 The non-accidental programmer
  • Episode 1123 Dynamic duo
  • Episode 1207 Welcome to the multiverse
    • Learn Git Branching provides a gamified, visual approach to learning git—it can get pretty advanced so pace yourself according to what has been covered in class so far
  • Episode 1214 Use the force you should not
    • Dangit, Git!?! is a curated (one might say “cherry-picked” 😉) collection of git “vignettes” for specific sticky git situations. The commands include some that we covered in class, some that are variants of what we have covered, and some that are completely new. Consider this a parting gift as you proceed to apply your newfound software carpentry skills to future work. Enjoy! (h/t Frank Manno)

Course Content

Use class time to learn these concepts and commands, practice them, then walk through realistic software development scenarios where they come in handy, in infinitely diverse combinations.

Use online resources to learn more about them in detail and go into greater depth.

  • Getting your bearings and getting around
    • cd
    • pwd
    • ., .., /, and ~
    • ls [-a, -l, -F]
    • “Hidden” files (. again, with a twist)
    • more/less
  • Making changes
    • mkdir [-p]
    • rmdir
    • mv
    • rm
    • cat
    • touch
    • vi and nano/pico
    • Lore: vi vs. emacs
  • Command line QoL
    • History (and searching it)
    • Autocomplete
    • Environment variables (especially PATH)
    • Command editing
    • echo
    • alias
  • Markdown (especially GitHub’s flavor)
  • git started
    • init
    • clone
    • add
    • remove
    • commit
    • push
    • pull
  • git moving
    • log
    • diff
  • git in control
    • restore
    • commit --amend
    • stash
    • reset
    • checkout
  • git your own adventure
    • branch
    • switch
    • merge
  • git fixed
    • restore
    • revert
    • cherry-pick
  • ⚠️ git dangerous (but sometimes necessary)
    • ☢️ reset
    • ☢️ rebase [--interactive]
    • ☣️ push --force