Table of Contents

Systems Tutorial

A guided exploration of systems programming


One of the most challenging classes offered in the CSE program at Notre Dame is Systems Programming. This tutorial series is intended to offer supplementary material to facilite students' success in the course. The goal is to offer language free of unecessary technical jargon, with a focus on the fundamental, "How do I actually use this" implementation skills. This series is aimed at helping reinforce fundamental topics that are core to the systems programming class. Hopefully after this tutorial series students will gain a practical and intuitive understanding of the everyday systems programming environment.

All slides shown during the tutorial will be available here after the lecture is delievered. If you have any specific questions or topics you would like to see covered please enter them in the google form below. This form is anonymous. Before every tutorial I will select a few of the most common questions to cover in addition to the stated topics.

Question submission link

4. List Comprehensions and Generators


While extremely useful (and pythonic) for programmers, list comprehensions and generators can be some of the trickiest things for programmers new to python to figure out. In this tutorial we will go over the basics of list comprehensions and discuss when they might be useful for a programmer to use. We will also discuss generator statements (the one liners) and generator functions (those using yield). After this lecture students should be much more comfortable with parsing list comprehensions and generators, and be able to begin incorporating simple versions of them into their own code.

Slides

3. Structured Data: JSON and CSV


Data is one of the most important pieces of code. In order to facilite easier use of data we use several predefined formats for representing it. This week we will talk about two of the formats, JSON and CSV, and how to more easily use the formats alongside python code. After this week ideally the student will feel comfortable using python to explore and represent complicated structured data.

Slides

2. Introduction to Python


This week will be a brief introduction to the specifics of python programming. We will talk about how to declare variables, how to use loops (for, while), simple if statements, and some of the most common data structures you will use (lists, dicts, and sets). The goal of this week will be to provide enough technical knowledge to get started with writing beginner programs and to therefore allow the student to begin focusing on the higher level design of code as opposed to the syntax required. As during the previous week, if you have any specific questions feel free to submit them to the google form linked above (we'll continue using this same link throughout the semester).

Slides

1. Shell scripting and Regular Expressions


This first tutorial will focus on the basics of shell scripting, and we will also discuss building regular expressions which help us work with text. Scripting is one of the most powerful tools available to the user of a shell. We will talk about how to write scripts line by line. Integral to the idea of scripting is the use of pipelines. After this tutorial you should feel much more comfortable creating your own pipelines and also be able to reason about simple regular expression design.

Slides