Table of contents

  1. Goals
  2. Course Staff
  3. Course Materials
    1. CSE Linux Environment
    2. Textbooks
    3. Online Tools
  4. Course Content
    1. Course Topics
    2. Course Components
      1. Lectures
      2. Lecture Participation Polls
      3. Exercises
      4. Homeworks
      5. Review Assignments
  5. Policies
    1. Grading Policies
    2. Due Dates & Late Policy
      1. Homework
      2. Exercises
      3. Review Assignments
      4. Participation
    3. Collaboration and Academic Misconduct Policy
  6. Getting Help
    1. Asking Questions / Getting Assistance, Giving Feedback
    2. Giving Feedback
    3. Disability Resources
    4. Extenuating Circumstances and Inclusiveness


This covers key software development concepts and tools not in introductory courses. Concepts of lower-level programming (C/C++) and explicit memory management; techniques and tools for individual and group software development; design, implementation, and testing strategies. Intended for non-majors. Cannot be taken for credit if credit received for CSE 333. Prerequisite: CSE 143. This is a very practical, skills-oriented course. The goal is to gain exposure to a wide variety of useful concepts and tools. Lecture will introduce concepts, and homework will provide an opportunity to practice. There will be a strong emphasis on independent learning, as it will not be possible to cover each topic comprehensively in class. Successful course participants will:

  1. Gain a basic familiarity with the Linux operating system and toolchain.
  2. Develop the skills to automate common computing tasks such as file manipulation and string processing
  3. Internalize C-level programming and obtain beginning proficiency in C programming
  4. Learn the basics of programming tools such as debuggers, profilers, compilation managers, and version control
  5. Learn core software-engineering practices regarding specification and testing
  6. Understand the basic issues and pitfalls of shared-memory concurrency
  7. Learn how to acquire additional information and skills independently

Course Staff

  • Kasey Champion - Instructor -
  • Kushal Jhunjhunwalla - TA -
  • Kalyani Marathe - TA -
  • Leah Perlmutter - TA -
  • Staff Mailing List -

Course Materials

CSE Linux Environment

All assignments in this class will be graded on the CSE Linux environment. We strongly recommend that you work on the assignments in this same environment. There are two ways to do this:

  1. Remotely log in to
  2. Install and use the CSE home VM on your personal machine.


There are no required texts for this course. The following are some free reference materials you may find helpful:

  1. The C Programming Language
  2. Bash Reference Manual
  3. Linux Man Pages Online
  4. Debugging with GDB
  5. Git Book

Online Tools

To facilitate a remote learning experience we will be leveraging a rather frustratingly large number of different educational platforms:

  1. Class Webpage Look here for a centralized source of all course materials. Here we will post lecture slides, assignment prompts, announcements and reference materials.
  2. Canvas Look here for grades, zoom links and zoom recordings.
  3. Zoom This link will be used for all lecture sessions. All lectures will be recorded. To prevent zoom bombing after lecture 1 access will be password protected. The password will be “374rocks”. You should be able to access this link regardless of which account or machine you use as long as you have the password.
  4. Poll Everywhere We will use Poll Everywhere during lecture for various surveys, activities and question/answer support. You can access the poll with the link “” or via SMS by texting CSE374 to 22333 to join the session, then they text ABC to get access.
  5. Gradescope This is where you will submit all assignments. Gradescope will also be responsible for auto grading your submissions and providing feedback so you will be able to know exactly how many points your submission will earn.
  6. Discord This is where you can ask questions to the CSE 374 staff.
  7. Anonymous Feedback Tool We are all figuring out how to work with one another in this new remote world and we are extremely open to feedback, suggestions or experiences that can help us make this course work best for you. You are welcome to email the course staff directly, post in the discussion board or if you are more comfortable the cs department’s Anonymous Feedback Tool linked here.

Course Content

Course Topics

  1. The Linux Operating System
  2. Working with the Linux Shell
  3. Scripting with Bash
  4. C Programming Language
  5. Computer Memory
  6. Software Engineering Tools and Techniques
  7. C++ Programming Language
  8. Assembly Code
  9. Concurrency

Course Components


There will be 30 lectures online through Zoom. Recordings will be automatically posted to Canvas afterwards (allow for ~1hr processing time). During lecture you will be asked to respond to short polls, occasional review questions and occasional activities conducted via break out rooms.

Lecture Participation Polls

Each lecture will have an accompanying poll hosted via PollEverywhere. The polls will open at the start of each lecture and close 32 hours later (day and a half). These polls will cover a basic topic from lecture or a survey question to help us collect feedback. You will NOT be graded for correctness but simply participation.


There will be ~12 lecture exercises assigned via GradeScope. These will be short (less than 1 hr) step by step tutorials that walk you through concepts covered in a given lecture with accompanying based on your observations. They will be assigned on the day of the associated lecture and due 1 week later.


This course is designed to give you substantial experience with programming. There will be several major programming assignments that synthesize the material from different lectures. These will be released on the lecture day that concludes the topics covered in the homework but you will have 1.5 to 2 weeks to work on the homework before the “suggested” due date. You will submit homeworks to GradeScope where they will be automatically graded, you will be able to resubmit as many times as you like (with some time delay to prevent server overload).

Review Assignments

There will be 3 Review assignments distributed throughout the quarter that will be a series of short answer or multiple choice questions that cover the theoretical aspects of lecture not covered by exercises or homeworks. You may do these assignments solo or in groups up to 4 people. These will be given a week from when they are assigned to complete the assignment but they are intended to only take 2-3 hours to complete. These will be assigned via GradeScope.


Grading Policies

  • Homework: 40%
  • Exercises: 35%
  • Review Assignments: 15%
  • Participation: 10%

Due Dates & Late Policy


  • Submitted via gradescope
  • Homeworks will open after the content needed to complete it has been covered in lecture, but they will be due on a Friday ~1.5 to 3 weeks later depending on the assignment.
  • Each has a “suggested” due date to help you stay on top of work. If you submit your assignment by this time you will receive a 5% extra credit bonus for that assignment.
  • Homeworks 1-3 are due by the “Midpoint” 11/6 to receive full credit.
  • Any homework submitted after the midpoint will incur a 20% late penalty for each 24 hour period after the midpoint they are late.


  • Submitted via gradescope
  • Each exercise will open at the end of the lecture they are associated with and are due 1 week after they are assigned.
  • To get full credit turn in the exercises within a week of open. But if you couldn’t, submit them before the ‘midpoint due date of 11/6/2020’ and you still can get 90% of your grade.
  • Late exercises will incur a 10% late penalty for each 24 hour period after the midpoint due date.

Review Assignments

  • Submitted via gradescope
  • Each review assignment will open on a Friday and be due the following Friday.
  • You may turn in a review assignment 24 hours late for a 20% penalty or 48 hours late for a 50% total penalty. No review assignment will be accepted more than 48 hours late. (This way we can release the answers in a timely manner).


  • Submitted via PollEverywhere
  • Each lecture poll will open at 9:30am PST on their given lecture day and remain open until the next lecture.
  • Lecture 1-3 won’t count and you will not be penalized if you did not participate.
  • No late participation polls will be accepted.

Collaboration and Academic Misconduct Policy

In general, we encourage collaboration, but there is a very fine line between collaboration and cheating. We can learn a lot from working with each other and it can make the course more fun, but we also want to ensure that every student can get the maximum benefit from the material this course has to offer. Keep in mind that the overall goal is for YOU to learn the material so you will be prepared for the exams and for job interviews etc. in the future. Cheating turns the assignments into an exercise that is a silly waste of both your time and ours; save us both by not doing it.

Cheating consists of sharing code or solutions to assignments by either copying, retyping, looking at, or supplying a copy of a file. Examples include:

  • Coaching a friend to arrive at a solution by simply following your instructions (i.e. no thinking involved). An example is helping a friend write a program line-by-line.
  • Copying code from a similar course at another university or using solutions/code on the web, including GitHub.
  • Communicating your solution with another student via electronic or non-electronic means. If you feel that you are having a problem with the material, or don’t have time to finish an assignment, or have any number of other reasons to cheat, then talk with the instructor. Please don’t cheat. If you are in doubt about what might constitute cheating, send the instructor an email describing the situation and we will be happy to clarify it for you. For more information, you may consult the department’s Academic Misconduct Policy.

Getting Help

Asking Questions / Getting Assistance, Giving Feedback

It is very important to us that you succeed in CSE 374! Outside of lectures and sections, there are different ways to ask questions or discuss course issues:

  1. Visit office hours : Each member of the course staff will have weekly drop in office hours where you can ask questions about lecture content and any assignments. This is a great way to get help debugging, setting up your environment or addressing specific assignment questions. In addition, if you need extra time, need to discuss something in private or the set office hour times do not work for you, feel free to email and make an appointment. You may reach out to any of our course staff individually or you can use the mailing list and whomever is available will set up time to work with you.

  2. Make a post on the discussion board : If you have a question about general content, clarifying instructions or course policies please make a post on the discussion board as your question likely will help someone else. The course staff will be actively monitoring the board, but we also strongly encourage students to answer one anothers questions as well, we’re all in this together!

  3. Email : If you have a question about the course policies, need help with a specific personal situation or have other more individual or private inquiries you are welcome to email members of the staff. You can email anyone directly, but for the best response time we encourage you to use the mailing list.

Giving Feedback

Send anonymous feedback to the course staff. The instructor will try to address the issue and share it with others only as appropriate, but will not have a way to reply to you without addressing the whole class.

Disability Resources

The Disability Resources for Students (DRS) is a unit within the Division of Student Life and is dedicated to ensuring access and inclusion for all students with disabilities on the Seattle campus. They offer a wide range of services for students with disabilities that are individually designed and remove the need to reveal sensitive medical information to the course staff. If you have a medical need for extensions of exam times or assignment deadlines, these will only be granted through official documentation from DRS. Browse to this link to start the process as soon as possible to avoid delays.

Extenuating Circumstances and Inclusiveness

We recognize that our students come from varied backgrounds and can have widely-varying circumstances. If you have any unforeseen or extenuating circumstance that arise during the course, please do not hesitate to contact the instructor in office hours, via email, or private EdStem post to discuss your situation. The sooner we are made aware, the more easily these situations can be resolved. 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. Additionally, 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 sending anonymous feedback or contacting the Office of the Ombud.