Goals¶
In this course, you will learn how to use tools commonly used in software development. Almost all of this course will be teaching tools available on the command line provided by a Unix operating system (e.g., MacOS or Linux). Topics in this class include:
- using a Unix command-line shell
- Unix file system, file and directory management, processes and process management
- permissions, groups, and users
- pipes and redirection
- connecting to remote servers and using multi-user shared Unix systems
- regular expressions and related tools
- string and text processing basics: filtering, substituting, etc.
- version control basics
- bash shell scripting
While this list of topics is long, it barely scratches the surface of what is available out there! This course does not focus on mastery of these topics. Mastery requires lots of time and repeated practice, well past what is available in a single quarter for a 1 credit class.
Instead, we aim to provide a survey of these concepts and tools to enable you to teach yourself new concepts through your own reading, searching, or work outside of this course. Being a self-directed learner is an important skill that you are developing as a university student. It’s especially important in a class like CSE 391 where there is very little contact time throughout the quarter. Our ultimate goal is to give you a foundational understanding of these concepts so that you can direct your learning for the required tools in the future.
Prerequisite: one of CSE 122, CSE 123, CSE 143, or CSE 143X.
Class Sessions¶
In recent iterations of this course, we have transitioned away from the “traditional lecture” format to one that encourages more active practice. Instead of coming to class every week to listen to {{ no such element: dict object[‘instructor_first’] }} talk for 50 minutes, ‘first looks’ at key concepts will be provided through a series of pre-recorded lectures each week. Most of these pre-recorded lectures will be posted on YouTube.
The live class sessions will take place on Tuesdays, from 1:30pm – 2:20pm in CSE2 G20. Class sessions will take the form of Q&A, live coding, and practice questions. Students in previous quarters have reported that these ‘flipped’ classes are some of the most beneficial in helping them approach the weekly assignments. We design the discussion questions to give structured practice of that week’s material to help bridge your understanding to tackle the homework assignments. In other words, coming to class gives to an opportunity to get started on the homework!
Info
For the first day of class (6 January 2026), there are no pre-recorded videos and the class session will look slighty different. Most of the first class will involve {{ no such element: dict object[‘instructor_first’] }} summarizing key syllabus details and introducing the first few Unix tools live!
Recordings will be made available for students who cannot attend live, but it is not required that you watch those recordings since all of the required content will be delivered in the pre-recorded lectures.
We recommend the following workflow to help you get the most out of your time with us during the quarter. For each day of class:
- Watch the Pre-Recorded Videos: Watch the videos for the class day. If the video prompts you with a question, actually pause the video and take some time to think through and answer before continuing. Then, when the video explains the answer make sure you had the right reasoning. If you were incorrect, that’s okay! Just take note of it as something you need to revisit later.
- Take notes to refer to later! The videos will be broken up into smaller portions, so use the time before starting the next video to make sure your notes on the last section are complete.
- Take time to pause and reflect on what you’re learning so far. How does this new concept relate to a past one? What doesn’t quite make sense about this yet?
- Attend the Class Session: Come to class prepared with your notes from the videos, including what you found hard to understand or what you want to learn more about. We will have systems for students to ask questions and discuss their thoughts in the live class time.
- Participate in Class! Our approach to using class time aims to maximize the utility you derive from attending. You can contribute to an engaging and productive class environment by asking questions (out loud or on Slido), discussing with people around you, and helping out peers.
- Reflect: Now that you got some practice with the material for the day, it’s time to reflect on what you learned and you how you felt the day went. Maybe write down a closing section of your notes to summarize what you learned and leave notes to yourself about what you might need to study more:
- Why did we learn this concept?
- How does this concept relate to what we’ve learned previously?
- What parts did you find tricky? Are there things you feel like you still need to work on more before you master the concept?
Computer Access and Software¶
The recommended software for the course is the Linux operating system and related utilities such as bash, make, git, and other standard Unix commands. The department offers a virtual machine for use to students taking this course.
Follow the instructions on the Working at Home page of the website to get started!
“Grading” (earning credit in the course)¶
This is a Credit / No Credit (CR/NC) course; you either get credit or you don’t. All students who earn a total of at least 14 points on the ten weekly homework assignments will be considered to have “passed” the course. There will be an extra credit assignment at the beginning of the quarter worth 1 point.
Our intention is that every student who makes a legitimate effort to learn and complete the material will pass the course. The class is intended to be low-stress and geared toward learning and exploration of concepts.
Warning
A common mistake made by students is hold off completing homeworks until the end of the quarter. The later homeworks tend to be more challenging, since they build off of the concepts learned early in the quarter. Failing to do the early assignments will not set you up successfully for the rest of the quarter, and will put added pressure on the later assignments when your other classes will also be very busy.
We highly recommend completing the earlier assignments when possible, especially HW1 and HW2.
Homework¶
Homework consists of ten weekly individual assignments submitted electronically via Gradescope, with instructions and starting resources available via the course website. Weekly homework assignments will be graded on a two-point scale. You will submit your assig nments to Gradescope and most assignments will be autograded. The Gradescope autograder will grade your assignments using the following rubric:
- 2 points for an attempt at all questions and a significant portion of the answers are correct.
- 1 point for an attempt at a majority of the question, but a significant portion of the answers are not correct.
- No points for an assignment that has many missing parts or partial solutions.
The autograder will output the correctness for each question and assign an overall grade upon submission. You may submit to Gradescope as many times as you’d like before the deadline. The last grade outputted by Gradescope by the assignment deadline will be your grade for the assignment. The assignment deadlines are listed on the course calendar, assignment specifications, and Gradescope.
Tip
A common question is how many of the questions need to be completed to earn at least 1 out of 2 points.
This changes from assignment to assignment based on the questions asked. However, the autograder will always tell you how many points you earned every time you submit the assignment.
Late Work¶
Assignments will NOT be accepted late. If you do not complete a given assignment on time, you will not receive credit for it. But recall that you do not need to turn in every assignment to receive credit for the course.
Extensions will not be given on any assignment for any reason, except as an approved DRS or religious accommodation (agreed upon by the student and instructor in advance) or in extreme unavoidable circumstances (as determined by the instructor).
Note on Extenuating Circumstances: If you have any unforeseen circumstances that arise during the quarter, please contact {{ no such element: dict object[‘instructor_first’] }} as soon as possible. See the section below on Extenuating Circumstances for more information.
Academic Integrity Policy¶
This class has a looser collaboration policy than other courses such as CSE 121/122/123. You are encouraged to talk and work with other students as you complete assignments and to learn from your classmates. However, the work you submit for the weekly assignments must be entirely your own.
You may discuss general ideas of how to approach an assignment, and you may also talk about some specific details of commands or syntax to use (“try using the tail command on #3” or “I used a for-each loop over the directories”). You should document any help you receive from another student or other person at the top of your assignment file(s), listing the person’s name(s) and how much / what kind of help they gave you. If you provided significant help to another student or worked closely with another student, you should also document this at the top of your assignment file(s).
Our policy does still have a few restrictions on collaboration:
- You may not show another student your assignment solution, nor look at their solution, in whole or in part.
- You may not refer to solutions from previous offerings of this course.
- You may not write an assignment for another person nor have someone else write your solution for you.
- You may not provide another person with every detail of how to solve a given problem or assignment.
An example of the line between appropriate and inappropriate help would be:
Allowed
It’s perfectly fine for a friend to sit with you and show basics about how to use a Linux terminal, or even to show you that the ls command is helpful to solve problem #4, and how to find help about the ls command in the Linux manual (man) pages.
Not Allowed
It would not be appropriate for one person to tell another, “I typed exactly ls -laR * | grep example | sort -R for Problem #4.”
As a sanity check, we will run similarity detection software a few times per quarter over student assignments, including assignments from previous quarters.
All suspected violations of course policies on academic honesty will be reported to the office of Community Standards & Student Conduct (CSSC) for formal investigation. Any student work found by CSSC to be in violation of course policies will receive a grade of 0.0. Repeated violations of course policies across multiple assignments will result in the student receiving no credit for the course.
The end goal is to learn the material, and this only comes from attempting the work yourself. The assignments are designed to give you practice with the material while providing an environment that is supportive of discussion with other students and a grading policy that is forgiving of answers that are close but not quite perfect. This course allows more collaboration than some others, and in general we encourage you and your classmates to help each other, but submitting copied work is NOT ACCEPTABLE. Please do not hesitate to contact the instructor if you are unsure whether a particular behavior is acceptable under our policy.
Generative AI
Note that we have a separate page on the use of generative artificial intelligence (AI) in this class.
Course Tools¶
CSE 391 makes use of a number of different computing tools. Reach out to the course staff if you have any questions about using a particular tool. See the Course Tools page for more information about the particular tools we will use this quarter.
Getting Help from Staff & Peers¶
Discussion Board¶
Ed will serve as our online discussion forum. This is the perfect place to ask most questions about the course and materials: the course staff check Ed regularly, so you will get a quick(er) answer. You can also submit Ed questions anonymously or privately.
Office Hours¶
If you would like to meet with {{ no such element: dict object[‘instructor_first’] }} or {{ no such element: dict object[‘ta_name_short’] }}, stop by our office hours! In office hours, you can ask questions about the course material, receive guidance on assignments, and work with peers and course staff in a small group setting. You can our office hours schedule on the Staff/Office Hours page. If you would like to arrange a meeting outside of office hours times, please send us an email.
Learning Environment¶
Extenuating Circumstances: “Don’t Suffer in Silence”¶
If you have any unforeseen circumstances that arise during the course, please do not hesitate to contact the course staff (via private Ed message) or {{ no such element: dict object[‘instructor_first’] }} (via email) to discuss your situation. The sooner we are made aware, the more easily we can provide accommodations.
Typically, extenuating circumstances include work-school balance, familial responsibilities, health concerns, or anything else beyond your control that may negatively impact your ability to perform in the class. Additionally, while some amount of “productive struggle” is healthy for learning, you should ask the course staff for help if you have been stuck on an issue for a very long time.
Life happens! While our focus is providing an excellent educational environment, our course does not exist in a vacuum. Our ultimate goal as a course staff is to provide you with the ability to be successful, and we encourage you to work with us to make that happen.
Disability Accommodations¶
Your experience in this class should not be affected by any disabilities that you may have. The Disability Resources for Students (DRS) office can help you establish accommodations with the course staff.
DRS Instructions for Students
If you have already established accommodations with DRS, please communicate your approved accommodations to the lecturers at your earliest convenience so we can discuss your needs in this course.
If you have not yet established services through DRS, but have a temporary health condition or permanent disability that requires accommodations (conditions include but not limited to; mental health, attention-related, learning, vision, hearing, physical or health impacts), you are welcome to contact DRS. DRS offers resources and coordinates reasonable accommodations for students with disabilities and/or temporary health conditions.
Reasonable accommodations are established through an interactive process between you, your lecturer(s) and DRS. It is the policy and practice of the University of Washington to create inclusive and accessible learning environments consistent with federal and state law.
Religious Accommodations¶
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.
Inclusion¶
Our code and our projects are made better by considering a variety of viewpoints. We strive to create a challenging but inclusive environment that is conducive to learning for all students.
If, at any point, you are made to feel uncomfortable, disrespected, or excluded by a staff member or another student, please report the incident so that we may address the issue and maintain a supportive and inclusive learning environment. Should you feel uncomfortable bringing up an issue with a staff member directly, you may consider submitting anonymous feedback or contacting the Office of the Ombud.