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 students to teach themselves 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: either CSE 122, CSE 123, or CSE 143.
Over the past few quarters, we have been transitioning away from the “traditional lecture” format to one that encourages more active practice. Instead of coming to class every week to listen to Matt give a lecture, we will instead provide a series of pre-recorded lectures each week. Some of these pre-recorded lectures are hosted on a website called ItemPool that lets us embed questions to let you test your understanding during the videos. Other videos without practice problems will be posted on YouTube.
The live class sessions will be Tuesdays, from 1:30 pm - 2:20 pm in-person in CSE2 G20. The class sessions will be a Q&A format where students can ask questions about the course content that week and work on some practice questions. Students in previous quarters have reported that these Q&A sessions 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.
For the first day of class (10/03), there are no pre-recorded videos and the class session will look slighty different. Most of the first class will involve Matt introducing syllabus details and covering the course material for that day 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:
- Complete the Pre-Recorded Videos: Watch the videos for the day. If the video is an ItemPool video and it prompts you for 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.
- You should definitely be taking 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 pauses 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 lesson and 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.
- 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.
- In a few sentences, describe in your own words what you learned learned today.
- 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?
Barrett, D. Linux Pocket Guide. 3nd ed., 2016. Optional.
No assignments or required readings will be given directly from the textbook, so you may choose not to purchase it if you like. However, it can make a useful reference for looking things up on homework assignments.
Computer Access and Software¶
The recommended software for the course is the Linux operating system and related utilities such as
git, and other standard Unix commands. The department offers a virtual machine for use to students taking this course. The course web site contains links to download this software free of charge.
As a substitute for visiting the physical CSE labs, those with a CSE NetID may access those computer remotely via https://vdi.cs.washington.edu/.
“Grading” (earning credit in the course)¶
This is a Credit / No Credit (CR/NC) course; you either get credit or not. 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.
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 consists of ten weekly individual assignments submitted electronically from the course web site. Weekly homework assignments will be graded on a two-point scale. You will submit your assignments to Gradescope and most assignments will be autograded. Our intention is that the 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 as well as assign an overall grade upon submission and you will have unlimited re-submissions up until the due date. The last grade outputted by Gradescope by the assignment due date will be your grade for the assignment. Each assignment will have a specific due date in its spec, on the website and on Gradescope.
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.
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 assignments for any reason, except in extreme unavoidable circumstances, as determined by the instructor.
Note on Extenuating Circumstances: If you have extenuating circumstances for an assignment, please contact the instructor as soon as possible to discuss accommodations. See the section below on Extenuating Circumstances.
Academic Integrity Policy¶
This class has a looser collaboration policy than other courses such as CSE 142/143. 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 his/her 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:
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.
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. A student who violates the policy may be offered zero credit for that assignment and/or sent to a University committee. 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. This includes generative AI tools such as ChatGPT, Copilot, or Bard. Please do not hesitate to contact the instructor if you are unsure whether a particular behavior is acceptable under our policy.
After discussing concepts related to a particular HW problem, take a break before you go and solve the problem yourself! Go watch an episode of TV or listen to a podcast (Ruth can’t recommend 99% Invisible enough) to give you some time to process the topics you discussed. This will assure that you are able to reconstruct what you learned from the meeting, by yourself, using your own brain.
This quarter, we will use a number of different tools in CSE 391. Reach out to the course staff if you have questions about using any of them. Please see the Course Tools page for more information about the particular tools we will use this quarter and our policies surrounding them.
Getting Help from Staff & Peers¶
Ed will serve as our online discussion forums. For most questions about the course or materials, they are the right place to ask: the course staff read them regularly, so you will get a quick answer. On Ed, you can also submit questions anonymously or privately to the course if you are more comfortable doing so.
To meet with us, the best way is to visit our virtual Office Hours. Many of us are available at other times by appointment. In Office Hours, you can ask questions about the material, receive guidance on assignments, and work with peers and course staff in a small group setting.
Office Hours are scheduled times where you can meet with members of the course staff to discuss course concepts, get assistance with specific parts of the assignments, or discuss computer science and/or life outside of it. You can our office hours schedule on the Staff/Office Hours page.
Extenuating Circumstances: “Don’t Suffer in Silence”¶
We recognize that our students come from varied backgrounds and can have widely-varying circumstances. We also acknowledge that the incredibly unusual circumstances of this particular quarter may bring unique challenges. If you have any unforeseen circumstances that arise during the course, please do not hesitate to contact the course staff or the instructor 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 performance 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.
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.
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.
Our code and our projects are made better by considering a variety of viewpoints. Your course staff is committed to the values outlined in the Allen School’s inclusiveness statement, and you are expected to uphold a supportive and inclusive learning environment.
If, at any point, you are made to feel uncomfortable, disrespected, or excluded by a staff member or fellow 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.