I don’t remember how I came across the Missing Semester Video Series, but I saw it as a massive stroke of luck. See, I’m currently designing the following course:
Title: Mobile Software DevelopmentDescription:
This course examines software engineering skills through the lens of mobile development. Students will leave with more confidence in their ability to debug, decipher complex software systems, test their code, navigate documentation, leverage version control, and learn new programming languages.
We’ll exercise these skills with both the Android and the iOS framework, but the goal isn’t to become fluent in a mobile stack; the goal is to practice the skills.
The course also capitalizes on the unique history of mobile handsets and tablets to talk about about accessibility, data privacy, sourcing ethics, and to what degree it is our responsibility as engineers to understand and prioritize these things.
I pitched this course after realizing that CS master’s students in their final quarter lacked some critical software engineering skills as well as some critical context. I plan to use mobile development examples as a substrate upon which they can build this knowledge.
I need to squeeze the knowledge into ten three-hour sessions: a tall order, given that I’m starting from scratch. So I felt relieved to find video examples from other lecturers who share some of my goals.
So I’m watching the missing semester series and sharing my notes from each lecture. This post covers the first lecture, which talks about the shell.
My notes omit material that I already use on a daily basis.
Each lecture also includes lecture notes and a set of exercises, which I skimmed through. The thrust of the exercises for this lecture reinforce the role of file permissions and encourage students to look up the
chmod program, which allows them to edit the file permissions that they view with
What struck me: my first encounter with many commands mentioned in this lecture happened in StackOverflow comments. Long before I knew what
chmod did, I had copied and pasted
chmod commands that I found in the responses to a beleaguered programmer with an error message that looked similar to mine.
Is this great? No. A StackOverflow commenter could exploit other programmers by responding to problems with bash commands that fix the problem, but that also give the commenter some kind of access to the computers of those who copy and paste the command. There’s also the easier, maybe even more sinister option: comment with commands with
rm -rf / tucked in there somewhere (DO NOT RUN THAT!!)
But the problem here isn’t necessarily that students lack knowledge of
chmod. After all,
chmod is one arbitrary program among many that might be used, in the present or the future, to fix problems that people post on StackOverflow.
The underlying problem comes from programmers not stopping to research the solutions they find. I didn’t do it: I didn’t know how, I lacked the conditioning, and I just wanted the damn thing fixed. It took me years to understand that I must possess multiple modes as a programmer. I didn’t realize that blazing forward on a feature requires one mode, and fixing a program that’s giving me trouble requires a different mode—a slower mode, one more focused on gathering information than cutting to the solution.
That’s the kind of lesson I want to impart in the course I’m building. I’m interested to see if further lectures in the Missing Semester Series cover concepts like those.
If you liked this piece, you might also like:
This series on a framework for feature engineering (fun for the data scientists and ML engineers)
The risk-oriented testing screencast (example in Ruby, concept useful everywhere)
The time and space efficiency series (again, example in Ruby, concept applicable in other languages)