Course Information

Teaching Staff

Instructor: James Wilcox

Instructor Email: jrw12@cs.washington.edu

Registration Questions: CSE Advisers (ugrad-adviser@cs.washington.edu)

Course Staff and Support Hours: Course Staff and Office Hours

Who to contact?

Here are some common types of questions and the best place to ask them to get the fastest and most accurate response.

  • Registration questions? Email the CSE advisers as the course staff do not have access to add codes.
  • Questions about course concepts? Visit office hours in the Introductory Programming Lab (IPL), instructor office hours, or post on the Ed Discussion board (more info below)
  • Questions about assignments? Visit office hours in the Introductory Programming Lab (IPL), instructor office hours, or post on the Ed Discussion board (more info below)
  • Questions about extenuating circumstances? Post privately on the Ed Discussion board (more info below) or email James at jrw12@cs.washington.edu

Class Session Meeting

See Class Sessions for information on how each day of class will be run.

Other Info

Course Goals

Computing continues to play an ever-increasing role in today’s society. Having an understanding of computing is an essential skill for those in the 21st century; from working in industries more reliant on technology, using computational methods to further scientific understanding, or being an informed citizen in a world with technology all around us.

This course is a third course in computer programming focused on the design and implementation of data structures. It assumes students already have significant experience with programming and understand fundamental computing concepts (such as control structures (loops and conditionals), variables and data, and arrays) as well as basic data structure (lists, sets, stacks, queues, and maps/dictionaries) and the fundamentals of object-oriented programming. Unlike CSE 122, CSE 123 does assume prior experience with the Java programming langauge. If you have not programmed in Java before, be sure to review our Java Tutorial.

In this course, students will learn:

  1. How to implement compound data structures such as lists and trees.
  2. The use of recursion to efficiently solve computational problems.
  3. How to utilize inheritance to represent relationships among similar classes.

Learning Objectives

CSE 123 is designed around a set of 18 learning objectives, organized into seven major themes. At the end of the course, successful students will be able to do the following:

Computational Thinking

  1. Define data structures to represent compound and complex data
  2. Structure data appropriately to efficiently solve a problem
  3. Define a solution to a given problem using a recursive approach

Code Comprehension

  1. Trace the behavior and state of a Java program that uses inheritance, polymorphism, composition, and/or recursion through its execution
  2. Predict the behavior and results of executing a Java program that uses inheritance, polymorphism, composition, and/or recursion
  3. Describe the approximate runtime efficiency of a method or algorithm

Code Writing

  1. Define relationships between Java classes using interfaces, inheritance, abstract classes, and references
  2. Write functionally correct Java classes to represent linked data structures:
    • Linked lists
    • Binary trees
  3. Write functionally correct recursive methods
  4. Write programs and classes that are readable and maintainable, and that conform to provided guidelines for style, implementation, and performance
  5. Implement additional methods and classes within the constraints of existing systems

Communication

  1. Clearly and effectively describe the behavior of a class and its methods
  2. Produce clear and effective documentation to improve comprehension and maintainability of programs, methods, and classes
  3. Distinguish between details relevant to a client and details relevant to the implementer of a class

Testing

  1. Determine the correctness of a class by evaluating its behavior as compared to a provided specification
  2. Identify and enumerate a set of inputs or tests that are sufficient to determine the correctness of a class and its public APIs

Debugging

  1. Identify errors in a class’s state or behavior
  2. Define and implement fixes for identified errors

Ethics/Impact

  1. Describe ethical and sociotechnical issues related to software and technology and explain how their choices as programmers can impact those issues.

Software and Textbooks

Most of this course will be run on EdStem. This includes readings and exercises for both class sessions and quiz sections; the discussion board; and where you can work and submit your assignments. All of the required lesson materials and access to Ed are free for students enrolled in CSE 123 this quarter. Direct links to Ed will be posted from this course website for each relevant activity in class. We recommend using this course website as your primary way of finding information and the right link to Ed.

One of the benefits of using EdStem is that it comes fully featured with an online programming environment. This means it’s not strictly necessary to install any software as long as you can work online! However, we highly recommend doing the software setup so that you can leverage a visual debugger and work offline.

There is no required textbook for CSE 123. All of our readings are available for free on Ed. If you would like a textbook as an additonal resource, we recommend Building Java Programs by Reges and Stepp (5th Edition). Note that while this is an excellent textbook and includes all topics covered in CSE 123, some topics may appear in a different order than we cover in class. We will put references to relevant chapters of the book on the course website for students who are interested in seeing another perpsective on these concepts. The 3rd and 4th editions of the textbook are also reasonable if you already own them or can acquire them more easily. We are not aware of a digital version of the textbook.

Class Sessions and Quiz Sections

Class Sessions

To best support your learning in CSE 123 this quarter, we will be using a hybrid classroom model. This will mean our class time will be a mix of time for lecture and time for students to collaboratively work on activities. Time in class spent on students actively participating in their learning has been shown numerous times to improve learning outcomes for students. (Email the instructor if you’re interested in reading about these studies.)

To ensure there is time in class for these opportunities for active practice, we will also ask you to prepare to come to class each day by completing a pre-class reading each day of class. The readings will have a mix of reading slides (often complemented by a video) and questions to let you practice the material you read. The readings/exercises should take about 30 minutes and should be completed before class for that day. The class sessions will begin where the pre-class reading left off after a brief review of the reading.

Why is active participation important?

In a “traditional classroom” model you go to a classroom and a teacher will lecture at you until the end of the session, and then you go home and do the hard work of actually trying to apply that material on practice problems or an assignment. Here are two things that are likely true about “traditional classroom” model:

  1. It is probably familiar to you.
  2. It is probably familiar to most of your instructors (it’s how they learned, so it must work, right?).

Notice this list does not contain “effective for student learning”. Unfortunately for the “traditional classroom” model, most evidence has shown that it’s quite ineffective of achieving that goal!

Think of learning programming (or any skill for that matter) like learning how to ride a bike. How many people know how to ride a bike? Quite a few. How many of them do you think learned how to ride a bike by going to a lecture hall two times a week and then a quiz section twice a week listening to someone explain how to ride a bike? Probably no one! Because that’s obviously not learning how riding a bike works! To learn how to ride a bike, you have to actually go out there and ride the bike!

In more general terms, this means learning some concept or some skill requires active participation in the learning process from the students, most commonly accomplished by deliberate practice and learning by doing. Sitting passively in a lecture listening to someone talk fails at accomplishing this fundamental aspect of learning.

The hybrid classroom model is built around fostering an environment for effective practice. Instead of coming to lecture to hear James talk about some idea and then trying to go practice the idea at home (a much harder task), we try to flip that model around. You will read and watch videos about the concept first (at your own pace) and then come to our class session to work with your classmates, the TAs, and James on practicing that skill. This has the added benefit of collaborative learning where you can work with your peers to construct a working knowledge of the things you saw from the lesson earlier.

It’s okay if the readings don’t make perfect sense the first time you read them! Learning is a process that takes time and work, and revisiting a topic is very important. Things you find confusing in the reading are great things to start off asking questions about on the course message board, in class, or in quiz sections.

Attendance Options

Class sessions will be hosted in person. A “normal” day of class will be composed of some recap of the lesson you read before class and alternating time for group work and discussing applications of those concepts as a whole class. The class sessions will be recorded so students who cannot attend can view them later. We do not take attendance, but expect students to be attending to participate in in-class activties, or watching the recordings in the off-chance they can’t attend class.

Sickness

If you are sick, stay home! Reducing the spread of COVID is paramount to ending the pandemic. If you feel sick or test positive for COVID, stay home. See all the resources outlined in Class Sessions and Quiz Sections for how you can get caught-up on missed live sessions. Any required in-person requirements will have a make-up for students who are sick. You will not be penalized for staying home and keeping our community safe.

Please see more on our COVID Safety page.

Quiz Sections

Quiz sections are smaller, TA-run sessions where students work in groups on practice problems and review concepts from the previous day’s class session. On three specific days of the quarter (see calendar), you will take the quizzes for the course. See below for details on quizzes.

Quiz sections meet on Tuesdays/Thursdays according to the time you registered for. Whenever possible, please attend your assigned quiz section. However, if you need to attend a different quiz section please reach out to the TA whose section you would like to visit to request permission. On quiz days, you must attend the quiz section for which you are registered on MyUW.

Attendance Options

Quiz sections will not be recorded. Instead, the course staff will post all materials used in section on the course website and will also occasionally post helpful videos covering some of the topics covered in section that day. So, anything missed by not being able to attend in person, you will be able to find asynchronously on the course website. If you are sick, you should not attend quiz section.

Inclusion

All students are welcome in CSE 123 and are entitled to be treated respectfully by both classmates and the course staff. We strive to create a challenging but inclusive environment that is conducive to learning for all students. If at any time you feel that you are not experiencing an inclusive environment, or you are made to feel uncomfortable, disrespected, or excluded, please report the incident so that we may address the issue and maintain a supportive and inclusive learning environment. You may contact the course staff or the CSE academic advisors to express your concerns. Should you feel uncomfortable bringing up an issue with a staff member directly, you may also consider sending anonymous feedback or contacting the UW Office of the Ombud.

Required Course Work

Types of Assignments

There will be five types of course work assigned in CSE 123:

Pre-class Work (daily, ~18 total): Short assignments consisting of readings, tutorials, and practice problems for new concepts that will be discussed in the corresponding lesson. Generally, these assignments will be your first introduction to a concept, and we will expect that you have completed at least the reading prior to class. Note that, while we do not explicitly review the topics covered in pre-class work during class, we do not expect you to fully master the material just from these assignments– that will take additional instruction and practice in class. Pre-class work is not graded, though we will conduct class assuming you have completed the required work for that day.

Creative Projects (~biweekly, 4 total): Medium to large assignments in which you will practice your programming skills. Creative projects will usually include a basic set of instructions to get you started followed by open-ended guidelines for extending, expanding, or modifying your work in a manner of your choosing. These assignments are intended to allow you to explore and discover both the programming skills being practiced and your own interests within the world of computer science.

Programming Assignments (~biweekly, 4 total): Longer programming assignments that will assess your proficiency with the skills and concepts covered in class. While programming assignments will typically emphasize content introduced shortly before their release, they will often integrate content from earlier in the course as well. Programming assignments will be more structured and have more specific requirements than creative projects, but will still often include smaller open-ended components and the potential for extra credit.

Quizzes (~triweekly, 3 total): Collections of short, independent problems completed in section on the assigned day. Quiz problems will take a variety of forms, and will assess course learning objectives. Each quiz will generally focus on content introduced since the last quiz, but may include any content previously covered. Quizzes will be taken during your quiz section on paper and will be timed for 45 minutes. Each quiz’s content will be randomly generated from an equivalent set of problems so there is no benefit to taking a quiz later in the day than someone else. Quizzes will be restricted to 1 8.5”x11” sheet of notes (double-sided printed or handwritten), and you should complete all quiz problems individually without communicating with other students.

Final Exam (during exam week, 1 total): Similar to quizzes, but with more problems and assessing all content from the course. The final exam will be given during exam week. Details on exam logistics will be posted closer to the end of the quarter.

The final exam will be held on Tuesday, December 10, 2024 at 12:30pm.

Late Work

In general, late work is not accepted without extenuating circumstances and pre-arranged accommodations approved by James.

  • If you are unable to turn in a programming assignment or creative project by its initial submission due date, you will be able to use one of your weekly resubmissions in a future week to turn in the assignment.

    Remember, there are 8 assignments and 8 resubmission opportunities, so using a resubmission to turn in an assignment you missed earlier means you will be able to make fewer resubmissions. This means it benefits you the most to try your best to turn in as much of your work as possible before the initial submission date, so you can get feedback on that and iterate on it in a future resubmission, rather than using that resubmission to get your first piece of feedback on that assignment.

  • Quizzes must be completed in-person during the scheduled times (usually in your regular quiz section). If you are unable to attend section on a quiz day due to extenuating circumstances (see below) please reach out to James immediately.

  • The final exam must be taken in-person at the scheduled time, except in unavoidable extenuating circumstances.
  • Make-up opportunities for quizzes and the final exam will generally not be granted for avoidable and foreseeable conflicts such as travel, appointments, or inconvenience.

Course Support Structures

Getting Help from Staff & Peers

Having questions or getting stuck on something is entirely expected in the learning process. If you find something challenging with your studies, that is a sign you are learning! Learning is not something that you need to do alone though! In fact, connecting with your peers or asking a member of the course staff for help can add extreme depth to your knowledge.

  • Synchronous Help (Office Hours): One place to go to get help is our Office Hours hosted throughout the week. TAs staff office hours for many hours a day to provide you the help you need when you need it! This is a great place to go if you want to review a particular course concept, work on a practice problem with the help of a TA or your peers, or get help on a Creative Project or Programming Assignment if you are running into difficulties.

    Tip

    A common misconception is that you can only go to office hours with specific homework questions. That is not true! If you have any questions about course concepts (e.g., from class that day), you are super encouraged to go work on that concept with a member of the course staff at office hours! Getting help with a concept earlier, when you first are feeling unsure, is much better than saving it until you need it on the homework.

  • Asynchronous Help (Ed Discussion): With a class of our size, directly emailing a member of the course staff is not always recommended. There are many of you and only few of us, so if you email one person directly we can’t make a guarantee how quickly we can respond! To alleviate this one-on-one communication of email, we have a course discussion board that will be a much more lively place for discussion and a way to make sure you can are helped more quickly. The message board is set up so that all of the course staff can help you, which will make it more likely for you to receive a quicker response!

Ed Tips

  • If you are asking a general question about the course logistics or content, you can make a public post. This way other students can benefit from seeing your question, and you can even answer each other’s questions to share your perspectives!
    • If you want, you can choose to post anonymously so that other students in the course can’t see your name. Note that anonymous posting does not hide your identity from the course staff.
  • You’re encouraged to answer each other’s questions as well! Explaining a topic to someone else (even on a discussion board) is a great way to help you better understand the material. The course staff will still look over student answers and can nicely point out some misconception if there is one so that everyone benefits.
  • If you have a question that’s pretty specific to your homework solution, or, is about some personal details that you would not want to share with the class (e.g., DRS accommodations), you can make a private post on Ed that is only visible to the course staff. This way, any member of the staff can respond to get you the help you need!
  • For sensitive matters that you only want to discuss with James, you can instead email James if that makes you feel more comfortable. Note that the response time for the instructors’ email is longer than posting on the Ed board.

Revision and Resubmission (Programming Assignments/Creative Projects)

Learning from mistakes is an important part of mastering any skill, especially for novices. To enable this, you are allowed to revise and resubmit your work on programming assignments and creative projects to demonstrate improved mastery after your initial submission. Resubmissions are subject to the following rules:

  • A maximum of one Programming Assignment or Creative Project can be resubmitted each week (more on this below).
  • There will be 8 opportunities for you to make a resubmission after receiving feedback on your work.
  • You may not make a resubmission until feedback on the initial submission of that assessment has been released (generally one week after the due date).
  • Resubmissions must be accompanied by a form describing the changes made. This will both support you in being deliberate about the changes you make and ease grading of resubmissions by making the changes clear.
  • An assignment may only be resubmitted in the 3 resubmission cycles after feedback for the assignment has been released.
  • An assignment that has been found to involve academic misconduct may not be resubmitted (see below).

Resubmissions will be graded and the new grades will fully replace the previous grades. The new grade will be based entirely on the resubmitted work, meaning that your grades may go down when resubmitting. In addition, while every effort is made to identify all areas that could be improved when grading, feedback is not guaranteed to be exhaustive. Be sure to consult all available resources and materials to ensure your work meets all guidelines. Please see the Programming Assignments and Creative Projects pages for information on how to make resubmissions and when they are due.

Since there are a limited number of weeks in the quarter, it is very important that you stay on top of your work as much as possible. Our resubmission policy is designed such that you should only be using a single resubmission on any particular assignment throughout the quarter. This means that it is imperative for you to complete as much of each assignment as you can by the initial submission date, so that you can receive feedback on more of that assignment before using a resubmission on it later.

Note that there are 8 assignments this quarter and we plan to have 8 resubmission opportunities. While you may resubmit any assignment whose due date has passed in a given resubmission cycle, it is strongly recommended that you only resubmit each assignment once. By resubmitting an assignment multiple times, you are effectively forfeiting the opportunity to resubmit another assignment. You have a finite number of resubmissions this quarter - so use them wisely!

Ignored Problems (Quizzes/Exam)

Quizzes and exams can be stressful experiences, and students sometimes make mistakes not due to lack of proficiency or understanding but due to avoidable errors such as misreading a problem, running out of time, or simply not feeling well on the assessment day. Because of this, we will ignore your two lowest-graded problems across all quizzes and the final exam. These two problems will have no impact on your grade whatsoever– you will not be harmed if you perform poorly and you will not be helped if you perform well. We will, essentially, pretend that they do not exist for the purposes of computing course grades (see below). This will happen automatically when course grades are computed.

Course Climate

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 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.

Disabilities

Your experience in this class should not be negatively-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 lecturer 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.

Grades

Grading Scale

Work in CSE 123 will be graded using the following scale:

Grade Description
E
Excellent
Evidence of meeting or exceeding all learning objectives is present. Work has only trivial or inconsequential flaws, if any. Little to no room left to improve understanding.
S
Satisfactory
Evidence of meeting most or all learning objectives is present. Work includes minor errors or inconsistencies, but no significant shortcomings. Understanding could potentially be improved, but demonstrated proficiency is acceptable.
N
Not yet
Evidence of meeting some learning objectives is present, but there are significant gaps and/or evidence of not yet meeting other learning objectives. Demonstrated understanding needs further development to meet expectations.

It is important to note that, under this system, it is the work that is assessed as a proxy for the student. This is an imperfect system, but is necessary to manage a course of the size and scale of CSE 123. It is in your best interest to ensure that your work accurately reflects your proficiency by being careful and diligent in following instructions, meeting deadlines, and understanding requirements.

On occasion, a grade of U (Unassessable) may be given for work that does not enable a proper assessment of the assignment’s learning goals. This may include, but is not limited to, work that is missing, does not demonstrate meaningful effort, does not provide enough evidence to determine proficiency, uses disallowed features or concepts, or violates other major course rules.

Assignment Grading Schemes

Pre-class Work: Pre-class work is not graded.

Creative Projects: Creative projects will be assigned a single ESN grade according to the Creative Project Rubric.

Programming Assignments: Programming assignments will be assigned four ESN grades according to the Programming Assignment Rubric

Quizzes/Final Exam: Each problem on a quiz or the final exam will be assigned a single ESN grade. Across the 3 quizzes and final exam, there will be 15 total graded questions (9 from quizzes, 6 from exam).

Though there will be 15 total quiz and exam problems, the lowest two quiz/exam problem grades will be ignored and not considered in course grade calculation. Course grades will be computed as though there were only 13 total quiz/exam problems.

Course Grades

Course grades will be computed as follows:

  1. Base grade: Identify the highest minimum grade for which the student meets all requirements (see below).
  2. Additional S+’s and E’s: Count the number of additional S+’s and E’s beyond the requirements for the base grade identified in the previous step.
  3. Adjustment: Multiply each of the above counts by a multiplier and add the result to the base grade. Additional S+’s and E’s may each use a different multiplier. These multipliers will be determined by the course staff at the end of the quarter and will not be published.

Minimum requirements for each grade are below. Note that all requirements for a particular grade must be met to guarantee that minimum, though failing to do so does not mean that grade cannot be earned.

Notation

S+ indicates S or E. For example, for a minimum of 2.5 in the table below, you need both at least 24 combined Ss and Es and at least 17 Es. (Or, put another way, at least 17 Es plus at least 7 more Ss or Es.)

Minimum Grade Required S+ Required E
Total available 33 33
3.5 30 27
3.0 27 22
2.5 24 17
2.0 21 0
1.5 14 0
0.7 8 0

To be guaranteed a particular minimum grade, all requirements for that grade must be met. Failing to meet any of the requirements for a particular minimum grade does not preclude the possibility of receiving that grade, but does mean that grade cannot be guaranteed. Estimates of students’ final grades beyond the requirements listed above will not be provided before final grades are released.

Grade Checker

You can also use this tool to see how your scores will map to a minimum promised course grade.

Academic Honesty and Collaboration

This policy applies to all graded work; that is:

  • Creative Projects
  • Programming Assignments
  • Reflections
  • Resubmissions
  • Quizzes
  • Final Exam

Unless otherwise specified, all graded work must be completed individually, and AI tools (such as ChatGPT, CoPilot, Gemini, etc.) should not be used on graded work in any way.

In particular, all graded work must abide by these rules:

  • Do not share solution code with, or view solution code from, any sources, including but not limited to fellow students, prior students, tutors, or the internet.
  • Do not provide or receive detailed guidance on, such as being “walked through” or “walking someone through”, how to implement any part of a graded assignment to or from anyone who is not a member of the course staff.
  • Do not provide or view samples of code that are intended to solve any specific part of a graded assignment’s specification, unless the samples are included in course-provided or course-linked materials.
  • Do not use AI on graded work in any capacity (including but not limited to generating or editing either code or text)
  • Do not use forbidden features in graded work, even if you have learned about them from resources that are non-course provided or by working on non-graded work with other people or AI
  • If you choose to utilize a feature that is not forbidden but is not taught in class in your graded work, you should be prepared to explain, in detail, why you chose to use that feature and how it enhances your code beyond what would have been possible using only features taught in class.
    • Being able to explain your code does not guarantee it does not violate this policy, but failing to be able to explain it greatly increases the chances of a violation.

All potential violations of this policy will be reported to the office of Community Standards & Student Conduct for formal investigation. Students found responsible for violations will receive no credit for the assignment(s) on which the policy was violated, and will lose the ability to resubmit that assignment.

Productive Collaboration

When you or a friend needs help on graded work, here are some ways you can collaborate that are most likely not in violation of our policies:

  • Reference course-provided or course-linked resources for help and guidance
  • Direct fellow students to specific course-provided or course-linked resources that will help them on graded work
  • Explain how course-provided or course-linked examples work, and collaborate with or walk fellow students through non-graded work to help them master high level concepts
  • Encourage fellow students to start their assignments early so that there will be time to receive help from course-provided or course-linked resources before the due date
  • Remind fellow students that it is better to submit an incomplete assignment and use a resubmission to improve their grade than to make a submission that violates course policy and lose the ability to make resubmissions