System and Software Tools

University of Washington, Winter 2025

Kevin Lin

he/him

kevinl@cs.uw.edu

Monday Office Hours

3 – 5 PM in CSE2 151

If I’m not working on this class, you can probably find me looking around for travel and restaurant deals, experiencing the latest indie movies at SIFF cinemas, introducing guests to our underwater neighbors at the Seattle Aquarium, or designing new methods to empower students through education.

Schedule a meeting

Trisha Bhatawdekar

she/her

tbhatawd@cs.washington.edu

Monday Office Hours

3 – 5 PM in CSE2 151

Tuesday Office Hours

3 – 4 PM in CSE2 151

Friday Office Hours

3 – 4 PM in CSE2 151

Hi everyone! My name is Trisha and I’m a 2nd year computer science student. Outside of class, I enjoy reading, playing the piano, paddle boarding in the summer, and skiing in the winter. I’m super excited to TA for CSE 391 and hope you find the course as valuable as I did when I took it!

The first years of undergraduate computing education often emphasize programming, the theoretical foundations of computing, and the physical abstractions that enable computers. But rarely emphasized are the command line tools that enable efficient use of computers for information management and systems administration. By the end of this course, students will feel more comfortable to:

  • Read, write, and navigate commands in a Unix command-line shell.
  • Manage Unix file system concepts including permissions, groups, and users.
  • Chain Unix pipes and redirection for complex information management tasks.
  • Connect to remote servers and use multi-user shared Unix systems.
  • Compose regular expressions and related tools for efficient search.
  • Filter, substitute, and otherwise process string and text context.
  • Utilize git version control including merging across multiple branches.

This course introduces many skills, but expert proficiency requires much more deliberate practice than what we can fit into a single 1-credit course. Instead, the aim of this course is to provide a foundation for future study and extension of the following skills.

What will we learn?

Jan 7
Shell
Slides
git archive --remote=git@gitlab.cs.washington.edu:cse391/25wi/lectures.git --prefix=lec1/ HEAD:1/ | tar -x
Homework 1due 1 PM Jan 14
Jan 14
Shell Input and Output
Slides
  1. More Unix Commands
  2. Input and Output Redirection
  3. Pipes
git archive --remote=git@gitlab.cs.washington.edu:cse391/25wi/lectures.git --prefix=lec2/ HEAD:2/ | tar -x
Homework 2due 1 PM Jan 21
Jan 21
Shell Operators
Slides
  1. More Shell Operators
  2. find, xargs
  3. cut and Log Parsing
git archive --remote=git@gitlab.cs.washington.edu:cse391/25wi/lectures.git --prefix=lec3/ HEAD:3/ | tar -x
Homework 3due 1 PM Jan 28
Jan 28
Git
  1. Introduction to Git
  2. The Four Phases of Git
  3. More Git Commands
  4. Git Branches and Merging
Homework 4due 1 PM Feb 4
Feb 4
Git Remotes and Workflows
  1. Pushing and Pulling to Remotes
  2. Merge Requests
  3. More Git Ideas and Git in the Real World
Homework 5due 1 PM Feb 11
Feb 11
Regex
  1. Introduction to Regex
  2. Alternating and Repeating Characters
  3. Character Sets and Backreferences
git archive --remote=git@gitlab.cs.washington.edu:cse391/25wi/lectures.git --prefix=lec6/ HEAD:6/ | tar -x
Homework 6due 1 PM Feb 18
Feb 18
sed
  1. Introduction to sed
  2. sed with Regular Expressions
git archive --remote=git@gitlab.cs.washington.edu:cse391/25wi/lectures.git --prefix=lec7/ HEAD:7/ | tar -x
Homework 7due 1 PM Feb 25
Feb 25
Users, Groups, and Permissions
  1. Introduction to Users, Groups, and Permissions
  2. .bashrc and .bash_profile
  3. $PATH
  4. File and Directory Permissions
git archive --remote=git@gitlab.cs.washington.edu:cse391/25wi/lectures.git --prefix=lec8/ HEAD:8/ | tar -x
Homework 8due 1 PM Mar 4
Mar 4
Shell Scripting
  1. Executable Files
  2. Basics, Variables, and Exit Codes
  3. Loops and Arithmetic
  4. Conditional Statements
  5. Putting It All Together
git archive --remote=git@gitlab.cs.washington.edu:cse391/25wi/lectures.git --prefix=lec9/ HEAD:9/ | tar -x
Homework 9due 1 PM Mar 11
Mar 11
Web Automation
Homework 10due 1 PM Mar 18

Why should we learn?

The education you receive in this course can help prepare you for programming jobs, but this isn’t the only purpose for computing education.1 Education is not only about yourself and your personal gain, but also about all of us and our capacity to live together as a community.

The University of Washington acknowledges the Coast Salish peoples of this land, the land which touches the shared waters of all tribes and bands within the Duwamish, Puyallup, Suquamish, Tulalip and Muckleshoot nations. Among the traditions of the Coast Salish peoples is a value for the connectedness between all living things and a recognition of the unique ways that each of us comes to know something.2

Modern education has the idea that we all need to know the same thing. At the end of the lesson, everyone will know the same thing. That’s why we have tests, that’s why we have quizzes, that’s why we have homework: to ensure we all know the same thing. And that’s powerful—that’s important—within a certain context.

But for native culture, the idea that each listener divines or finds their own answer, their own meaning, their own teaching from the story is equally powerful—that each person needs to be able to look at the world and define it for themselves within their culture and then also find a way to live in that world according to the teachings of their people in their culture.

Our course emphasizes the following values and policies.

We are responsible for each others’ success
Everyone has a right to feel like they belong in this course. We’ll need to act with compassion and caring to collaborate with each other. Although we will need more than just unexamined commitments to collaboration, listening, empathy, mindfulness, and caring,3 the following guidelines offer a starting point for ensuring compassion toward each other.4
  • Listen with intention to understand first and form an opinion only after you fully understand.
  • Take responsibility for the intended and unintended effects of your words and actions on others.
  • Mindfully respond to others’ ideas by acknowledging the unique value of each contribution.

You should expect and demand to be treated by your classmates and teachers with respect. If any incident occurs that challenges this commitment to a supportive, diverse, inclusive, and equitable environment, please let the instructor know so the issue can be addressed. Should you feel uncomfortable bringing up an issue with the instructor directly, meet our advisors during quick questions or contact the College of Engineering.

We recognize everyone has unique circumstances
Do not hesitate to contact the instructor by private discussion post or appointment. The sooner we are made aware of your circumstances, the more we can help. Extenuating circumstances include work-school balance, familial responsibilities, religious observations, military duties, unexpected travel, or anything else beyond your control that may negatively impact your performance in the class.
It is the policy and practice of the University of Washington to create inclusive and accessible learning environments consistent with federal and state law. If you have already established accommodations with Disability Resources for Students (DRS), activate your accommodations via myDRS so we can discuss how they will be implemented in this course. If you have a temporary health condition or permanent disability that requires accommodations, contact DRS directly to set up an Access Plan.
Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UW’s policy, including more information about how to request an accommodation, is available at Religious Accommodations Policy. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form.
We believe everyone wants to learn
Education is about shaping your identity as much as it is about learning things. In school, the consequences of making mistakes are relatively small. But the habits you form now—repeated over days, weeks, months, or years—determine who you will be in the future. Now is the best time to practice honest habits.
We ask that you do not claim to be responsible for work that is not yours. When you receive substantial help from someone else, include a citation. Don’t post your solutions publicly. Most importantly, don’t deprive yourself or others of the learning opportunities that we’ve created in this course. Specifically:
  • Don’t refer to homework solutions that you did not yourself write.
  • Don’t show another student a homework solution in whole or in part.
  • Don’t share significant details of how to solve a homework question.
  • Discuss in any amount of detail how to solve prework or classwork questions.
  • Discuss general ideas or approaches to homework, including high-level syntax.

Academic honesty reflects the trust (or the lack thereof) between students and teachers. We do our best to design the course in ways that ensure trust, but we know our systems are not perfect. If you submit work in violation of these policies but bring it to the attention of the instructor within 72 hours, you may resubmit your own work without further consequence. Rather than blame students, we want to fix or replace broken systems that compel students to lose trust.

How does learning occur?

In a traditional classroom, you attend class while a teacher lectures until time is up. Then, you go home and do the important work of applying concepts toward practice problems or assignments on your own. Finally, you take an exam to show what you know.

Today, we know that there are more effective ways to learn science, engineering, and mathematics.5 Learning skills like software engineering and algorithm analysis requires deliberate practice: a learning cycle that starts with sustained motivation, then presents tasks that build on prior knowledge, and concludes with immediate, personalized feedback. Each module in the course will involve several different activities that are designed so that we can make the most of our class time together.

Before lecture, prepare for the next lecture by completing the prework.
In Canvas, watch the videos for the day complete the prework quiz prior to the next lecture.
During lecture, collaboratively practice applying what you learned in classwork.
In PollEverywhere and in-person, participate in the guided practice and random call activities.
After lecture, integrate what you learned in real-world problems by completing the homework.
In Gradescope, demonstrate your learning by submitting your homework for feedback.

Expect to spend 1 hour in class and 2 or 3 hours outside of class working on this course. Some weeks may require more or less time than other weeks. If you find the workload is significantly exceeding this expectation, talk to your TA.

How is this course graded?

CR
Earn 70% of possible prework points in Canvas.
Earn 70% of possible classwork points in Canvas.
Earn 70% of possible homework points in Canvas.

Each homework assignment is worth 2 points with a total of 10 homework assignments over the quarter. Partial credit is awarded for completion of subproblems with the final score assigned according to the following logic:

if raw_score < 1.0:
    final_score = 0
elif raw_score < 1.5:
    final_score = 1
elif raw_score < 2.0:
    final_score = 2
  1. Mark Guzdial. 2021. Computer science was always supposed to be taught to everyone, and it wasn’t about getting a job

  2. Roger Fernandes. 2012. Roger Fernandes: Artist/Storyteller/Educator

  3. Brian Arao and Kristi Clemens. 2013. “From Safe Spaces to Brave Spaces: A New Way to Frame Dialogue Around Diversity and Social Justice” in The Art of Effective Facilitation

  4. Asao B. Inoue. 2019. “Sample Charter for Compassion” in Labor-Based Grading Contracts: Building Equity and Inclusion in the Compassionate Writing Classroom

  5. Scott Freeman, Sarah L. Eddy, Miles McDonough, Michelle K. Smith, Nnadozie Okoroafor, Hannah Jordt, and Mary Pat Wenderoth. 2014. Active learning increases student performance in science, engineering, and mathematics


Explore CSE 391

  • Homework - Homework instructions and specifications.
  • Notes - Notes from the prework.