This assignment introduces the tools and workflow used throughout the course: the Lumen/Git submission workflow, remote access to the shared course device, and the standard Python development environment.

There is very little to write. The work is getting your tools in order so that every later assignment runs smoothly. It is graded on completion, not cleverness.

Full step-by-step instructions, including every command you need to run, are in the README.md of the repository Lumen creates for you. Work from that README. This page is the summary and the requirements.


Objective and Expected Learning Outcomes

By completing this assignment, you will be able to:

  1. Work in a Lumen-provisioned repository on a development branch and submit by opening a Student PR into main.
  2. Use core shell commands to orient yourself, inspect files, and validate work.
  3. Initialize an account on a shared multi-user Linux system, including replacing an issued default password.
  4. Set up key-based SSH and run passwordless, non-interactive commands on a remote Linux system.
  5. Create and use a Python virtual environment (venv).
  6. Install packages with pip and capture dependencies in requirements.txt.
  7. Produce and commit a session log and a remote probe as evidence of your work.

The Course Workflow (Lumen)

This course uses Lumen for assignment management. When an assignment is released, Lumen creates a private GitHub repository for you from the instructor’s template. There is no “Accept assignment” link; the repository simply appears, and from that point on it is a normal GitHub repository you clone, edit, commit, and push to.

Two pull requests travel in opposite directions, and they are easy to confuse:

  Direction Who opens it Who merges it
Update PR instructor main → your main Instructor You
Student PR your development → your main You Instructor

You merge the Update PR (rare; only when the instructor corrects a released assignment). You never merge the Student PR: opening it is your submission, and merging it is part of grading.

Read the Lumen Workflow and Submission document once, in full, before you submit anything.


The Device

All remote work in this course targets the shared course DGX Spark at cs494.evl.uic.edu. Every assignment after this one runs there: telemetry collection, time-series databases, dashboards, and AI inference. This week you are only proving you can get in.

You must be on the UIC campus network, or connected to it through the UIC VPN, to reach this machine. It is not accessible from the open internet. If you are working from off campus, start the UIC VPN first, the same one you use for other UIC systems. Without it, every ssh to the device will hang and then fail with Connection timed out, which is a network problem rather than anything wrong with your account.

Your account already exists. Your username is your UIC NetID and your initial password is your UIN. That default was set for everyone, so it is not a secret and it protects nothing. You must change it on your first login. This is required and it will be checked. Because the device is shared, keep your work under your own home folder and do not disrupt other students’ processes.


Instructions

Follow the steps in the repository README carefully and in order. Steps 3 through 6 happen inside the recorded terminal session you start in Step 2.

Step 1: Get Your Repository and Branch

Clone the repository Lumen created for you, then create and switch to the development branch. All work for this course happens on development, never directly on main.

Step 2: Start Recording Your Work

Run the provided session-recording script from the repository root. It captures your terminal session and timing data into logs/. Mark a checkpoint as you finish each remaining step.

Step 3: Complete the Course Survey and Record It

Complete the course survey in full, then record your name and completion date/time in SURVEY_COMPLETION.md.

Step 4: Claim Your Account and Set Up SSH Keys

Log in to the DGX Spark with your NetID and UIN, change the default password, then generate an SSH key and install it on the device so that login is passwordless. Passwordless login is not a convenience here: it is what lets unattended jobs, deployments, and monitoring agents run with nobody at the keyboard.

Step 5: Capture the Remote Probe

Run the provided probe script against the device and save its output to logs/remoteProbe.txt. The probe runs SSH in non-interactive mode and will not prompt for a password, so it only works once key-based login works. An empty output file means your key setup is not finished.

Step 6: Set Up the Python Environment and Complete the Script

Create a virtual environment, install the required packages with pip, and complete the three TODOs in scripts/remoteReadiness.py: parse the YAML config, implement the text transform with validation, and read the mode and output path from the config instead of the hardcoded values. Freeze your dependencies into requirements.txt.

Step 7: Reflect and Finalize

Fill out reflection.txt, then finalize and exit the recorded session.


Submission Requirements

To receive credit, you must:

  1. Work on the development branch in your Lumen-provisioned repository.
  2. Complete the course survey and fill in SURVEY_COMPLETION.md.
  3. Change your default password on the DGX Spark.
  4. Commit logs/remoteReadinessSession.txt, logs/remoteProbe.txt, and logs/timing.json.
  5. Commit your completed scripts/remoteReadiness.py, frozen requirements.txt, and reflection.txt.
  6. Push to development and open a Student PR from development into main, titled HW00 Submission.

Do not merge the Student PR, delete your development branch, or push further commits to development after opening it. The open PR is your submission and its timestamp is your submission time. If you submitted too early, close the PR, finish the work, and open a new one.

Do not commit .venv, anything under data/processed/, or any password, token, or private key.


Evaluation Criteria

This assignment is graded on completion and correct use of the workflow.

Criterion Weight
Git workflow: development branch with commits, open Student PR into main (not merged) 20%
Course survey completed and SURVEY_COMPLETION.md filled in 10%
logs/remoteProbe.txt shows a real, non-interactive probe of the DGX Spark 20%
scripts/remoteReadiness.py: all three TODOs correct; runs from a fresh venv 25%
requirements.txt frozen and includes PyYAML and rich 10%
logs/remoteReadinessSession.txt and logs/timing.json show a reasonable session 10%
reflection.txt filled out (name, date, certification, reflection) 5%

Notes on Course-Wide Requirements

  • There is no GitHub Classroom invitation for this course. Lumen provisions your repository automatically.
  • A reflection file is required for this assignment, including the certification statement in its header.
  • Every later assignment uses this same workflow: development branch, Student PR into main, reflection file, and no merging of your own PR.
  • This assignment pairs with Lab 01 (Edge Development Tooling: SSH, Linux, Git, and GitHub). If a step gives you trouble, read the matching lab part first; the repository README maps each step to its section of the lab, and Lab 01 Part 15 covers common SSH and Git failures.

Additional Resources

  • Lumen Workflow and Submission - How your repository is created, how to handle an Update PR, and how the Student PR submission works. Read this once, in full.

  • Git Documentation - Official documentation for Git, including detailed explanations of commands, workflows, and concepts. This is the authoritative reference for understanding how Git works under the hood.

  • GitHub Docs - Comprehensive documentation for using GitHub features such as repositories, branches, pull requests, issues, and authentication.

  • OpenSSH Manual - Reference for ssh, ssh-keygen, ssh-copy-id, and key-based authentication.

  • Python venv Documentation - Creating and using virtual environments.

  • pip Documentation - Installing packages and freezing requirements.

  • Git Command Cheat Sheet (PDF) - A concise, printable reference listing commonly used Git commands and workflows.