[08.25 - 08.27] (1) Introduction to the course (2) Unix/Linux CLI: navigation, pipes, redirection, composability, and permissions [ slides | slides ]
Reading: Learning the Shell from Shotts, W. 2024. The Linux Command Line.
Labor Day (No Class)
[09.03] Bash scripting fundamentals: variables, conditionals, loops, exit codes, functions, arguments, stdin/stdout/stderr [ slides ]
Reading: Writing Shell Scripts (1 - 5) from Shotts, W. 2024. The Linux Command Line.
[09.08] Bash scripting fundamentals (ctd.)
Reading: Writing Shell Scripts (6 - 13) from Shotts, W. 2024. The Linux Command Line.
[09.10] Version control: git essentials (init, add, commit) [ slides ]
[09.15] Version control: git essentials (branch, merge, remote) and collaborative scripting [ slides ]
Assignment 1 available
[09.17] Python scripting essentials: (sys, os, subprocess) and file operations (pathlib, shutil, glob patterns, batch processing) [ slides ]
[09.22] Python scripting essentials (ctd.) + Environment management: virtual environments (venv), dependency isolation [ slides ]
[09.24] Environment management (ctd.) [ video ]
Reading: Ch. 1 (Creating a virtual environment, Installing third-party packages, and Using a third-party tool) from Buelta, J. 2018. Python Automation Cookbook.
(1) Anaconda installation (2) Working with Conda environments
[09.29] EXAM I (covers the first four weeks, up to and including the lecture on Sep 24)
[10.01] Working with strings in Python: simple regular expressions [ slides ]
[10.06] Working with strings in Python (ctd.): POSIX and PCRE patterns [ slides ]
[10.08] Simple testing of Python scripts with pytest [ slides ]
Fall Break (No Class)
[10.15] EXAM II (see announcement on Brightspace for syllabus and other exam details)
[10.20] Object-oriented programming in Python for scripting [ slides ]
[10.22] Testing Python scripts with pytest: fixtures and parametrization [ slides ]
[10.27] Introduction to text processing with awk and sed [ slides ]
Reading: A Sed and Awk Primer from Cooper, M. 2014. Advanced Bash-Scripting Guide.
The following reflects a tentative schedule for the rest of the semester, and may undergo changes as the semester progresses.
[09.10] Python scripting essentials: (sys, os, subprocess) and file operations (pathlib, shutil, glob patterns, batch processing)
[09.15] Environment management: virtual environments (venv), dependency isolation
[09.17] Error handling and logging: exceptions, logging module, crash reports
Assignment 1 deadline
[09.22] EXAM I (covers the first four weeks, up to and including the lecture on Sep 17)
[09.24] Testing Python scripts: pytest fundamentals
[09.29] Regular expressions: POSIX and PCRE patterns, grep and egrep
[10.01] Stream editing with sed: substitutions, transformations, and in-place edits
Assignment 2 available
[10.06] Text and field processing with awk: reports and data extraction
[10.08] Python text tools: re module, named groups, and CSV/JSON processing with pandas
Fall Break (No Class)
[10.15] EXAM II (covers the first four weeks, up to and including the lecture on Oct 8)
[10.20] Integrated workflow: combining Shell and Python for log parsing
[10.22] System monitoring: psutil, process trees
[10.27] Log analysis: extraction patterns, anomaly detection scripts
Assignment 2 deadline
[10.29] Scheduling and Automation: cron jobs, systemd timers
[11.03] Backup scripts: compression, incremental backups, integrity checks
Assignment 3 available
[11.05] Security scripting: permission audits and user management
[11.10] Resource optimization scripts
[11.12] Web interactions: data collection with Beautiful Soup
[11.17] Web automation with Selenium
Assignment 3 deadline
[11.19] API interactions and requests
[11.24] Demonstration & Discussion: an API-powered alert system (e.g., weather/data monitor)
[12.01] Cross-platform challenges: (1) Windows PowerShell and WSL Integration; (2) Differences in path handling (Bash vs. PowerShell)
!! THANKSGIVING !!
[12.03] Automated reporting systems
PDF/HTML reports with Python (Jinja2, pdfkit)
Email alerts with smtplib