Syllabus
Course Description
(Course Catalogue) 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 123.
Goals
Successful course participants will:
- Become familiar with
- the Linux operating system and common tools
- shell interfaces, specifically Bash
- the C programming language
- Develop skill with
- computing automation such as file manipulation and string processing
- using programming tools such as debuggers, profilers, compilation managers, and version control
- software engineering practices such as specification and testing
- Gain understanding in
- explicit memory management
- the challenges of shared-memory concurrency
- object oriented principals in C++
- and develop facility with
- learning new commands or language structures
- acquiring new information and new skills independently
Logistics and Contact Information
Staff:
- Professor Megan Hazen
mh75[at]cs[dot]washington[dot]edu - Naama Amiel
- Perry Chien
- Michael Sabit Ibrahim
- William Tsai
- Selina Wang
For most purposes, use the Edstem discussion page. If email is required, use the course staff email: cse374-staff[at]cs[dot]washington[dot]edu. You will get a quicker and more comprehensive response with this approach.
Lectures and Asynchronous Learning
During the spring quarter of 2026 this course is expected to be in-person and synchronous, with lectures held
However, the instructor is committed to providing an accessible course, including asynchronous work if it is necessary. Students are encouraged to stay home if they are ill. Students who need asynchronous access for one or more lectures should contact the instructor as soon as possible.
Text
There are no books required for this course. However, you may find the following texts to be useful, and I encourage you to check them out.
Linux Pocket Guide, Barrett, O'Reilly, 3rd ed., 2016 (different editions are ok too)
The C Programming Language, Kernighan & Ritchie, Prentice-Hall, 2nd ed, 1988
The Pocket Guide is a concise source of information and provides a useful reference to Linux at the level you need for 374. You are not responsible for memorizing all of the details in it, but I strongly recommend that you read through it. The Kernighan & Ritchie book is the classic reference on C from the people who invented the language. It has useful explanations and examples beyond the information presented in class or reference information available online.
Additionally, the course webpage has a robust resources page with many suggestions for further information and exploration. I recommend checking that page for each new topic.
Communications
See the homepage for more information about the course. You will also wish to refer to the Canvas page, which will provide access to grades, lecture recordings, Zoom meetings and Gradescope connections. Additionally, this course will use an Edstem discussion board. The discussion board will provide invaluable information and discussion with your peers and instructors.
Announcements will be made via Edstem. Edstem, the Canvas page, and the course homepage will be updated frequently. It is your responsibility to stay on top of announcements and deadlines. You may wish to subscribe to the calendar for up to date office hours and assignments scheduling.
Please participate at the Ed discussion page. This page may be used for any course related purpose. You may post publicly, or privately (for course staff only). Questions regarding assignments or course material should be posted in the appropriate sections of the discussion, and students should review current topics for answers before asking a new question. Students are encouraged to post publicly, but, are reminded to share questions about code approach, or pseudo-code, and not actually share code-snippets or problem solutions.
Messages to the course staff that are not appropriate for the public discussion board can be posted to staff only, or be sent to cse374-staff[at]cs. Please don't send email to individual staff members if possible. Messages sent to the entire staff are more likely to receive a timely response, and it helps ensure the staff gives consistent answers to questions, as well as help us get a better idea of whether several people have the same or similar questions. Highly sensitive questions may be send to Professor Hazen (mh75[at]cs) directly.
Course communications will be monitored during all normal business hours. During these times an answer may be expected within four hours. Outside of business hours, including weekends, an answer may be expected within twenty-four hours.
Assignments and Grading
This course will have three different types of assignments. These assignments comprise Practice Problems, Homework Projects, and Assessments. Brief information on these assignments is below, and more extensive information is on the Assignments page.
- Practice Problems
- Practice problems are short and designed to provide students practical review of recent lecture material. Each practice is worth 1 point (credit/no-credit), with a total grade
PP=sum(points_earned)/25. There will be approximately one practice problem per lecture, but, full credit for this sub-score requires that you complete only 25 of them. - Homework Projects
- Homework Projects are longer and designed to challenge students to apply course material. Each homework is worth 10-70 points with feedback provided via Gradescope, with a total grade
HW=total_points_earned/total_points_available. There will be approximately one homework project per week of the course. - Assessments
- Assessments are designed to evaluate student mastery of the subjects. Assessments will be graded out of twenty five points each, with a total grade
SA=sum(points_earned)/100. There will be one assessment for each major component of the course (four in total). Assessments are written or oral.
Your final percentage grade for this course will be F=.25*PP + 0.50*HW + .25*SA. This score will be converted to a 4.0 scale using a linear transformation. This is not a traditional curve designed to fit the grades to a pre-specified distribution, but, rather, adjusts the endpoints to ensure a fair translation to the 4.0 grade scale.
Late Policy
It is the student's responsibility to stay on top of due-dates and assessment-dates - these dates will be marked clearly on the calendar and Assignments webpage. Successful students stay on pace with the course by sticking to the deadlines. However, students are encouraged to contact the instructor as early as possible if they anticipate a challenge meeting a deadline. Students with emergencies are encourage to contact the instructor. Standard late allowances are detailed below.
- Practice Problems
- No practice problems will be accepted after the due date, but some practice problem grades may be dropped.
- Homework Projects
- Each student will be provided with ten total free 'late days'. Students may apply up to three 'late days' per assignment. Late days are needed for business (Monday-Friday) days only. (For example: A homework is due on Thursday night. A student may use one late day and turn it in through Friday night. No late days are needed to turn in on Saturday or Sunday, but one additional late day could be used to turn it in on Monday night.)
- Assessments
- Assessments must be taken during the designated test period, which will be noted on the calendar and Assignments webpage. Students with truly extenuating circumstances should contact the instructor for an alternate arrangement.
Academic Integrity
Any attempt to misrepresent the work you submit will be dealt with via the appropriate University mechanisms, and your instructor will make every attempt to ensure the harshest allowable penalty. The guidelines for this course and more information about academic integrity are in a separate document (cs.washington.edu/academics/schoolwide-policies). You are responsible for knowing the information in that document.
This course is designed to allow students to use tools and work with other students. However, relying on these outside mechanisms too strongly will inhibit students' personal learning. Students are directed to the specific information for each assignment for details about allowed resources and collaboration. When in doubt students should assume that individual effort is required, and external sources, including AI, is forbidden. Students found responsible for violating this policy will receive a 0 on the assignment.
Accommodations and Support
This course welcomes students of all backgrounds. We are committed to creating a more diverse, inclusive, and accessible environment for our students and our field of study. We believe each student and staff member is an individual who can succeed in this course and who merits our respect. We aim to foster an environment that results in mutual growth, and in which communication is open and productive.
This course adheres to University standards including those guidelines laid out in the Student Conduct Code. We refer students to support and accommodation services including Disability Services, Religious Accommodations, and Safe Campus resources.
This instructor seeks to ensure all students are fully included in each course, and strives to create an environment that reflects community and mutual caring. You should expect and demand to be treated by your classmates and course staff with respect. I encourage students with concerns about classroom or course climate to contact me directly. You may use the anonymous feedback form if you wish. In the event you are more comfortable with a different approach, please refer to the resources above.