# CSE 142: Intro. to Computer Programming I

Note: All times on this website are listed in PDT (local time in Seattle). You can use this page or Google to convert times to your local time zone.

Teaching staff:

• Instructor: Miya Natsuhara (mnats@cs.washington.edu)
• Course Administrator: Pim Lustig (cse142@uw.edu)
Pim is your best resource for registration questions such as obtaining add codes, switching sections, or changing to or from S/NS grading.
• Course staff and hours: Full list here

Lecture:
All course meetings will be conducted via Zoom.

• MWF 8:30am-9:20am

Other:

## Course overview

This course provides an introduction to programming using the Java programming language. We will explore common computational problem-solving techniques useful to computer scientists, but also to anyone who has large data sets, repetitive processes or other needs for computation. No prior programming experience is assumed, although students should know the basics of using a computer (e.g., using a web browser and a text editor) and should be comfortable with math through Algebra 1. Students with significant prior programming experience should consider skipping CSE 142 and taking CSE 143 or CSE 143X. (No special permission is required.)

## Learning objectives

CSE 142 is organized around five key learning objectives. At the end of the course, students will be able to do the following:
1. Functionality/Behavior: Write functionally correct Java programs that meet a provided specification and/or solve a specified problem
2. Functional Decomposition: Break down problems into subproblems that are modular and reusable, and define methods to represent those subproblems
3. Control Structures: Select and apply control structures (e.g. methods, loops, conditionals) to manage the flow of control and information in programs
4. Data Abstraction: Select and apply basic data abstractions (e.g. variables, parameters, arrays, classes) to manage and manipulate data in programs
5. Code Quality: Define programs that are well-written, readable, maintainable, and conform to established standards

## Remote learning

All class sessions this quarter will be conducted via Zoom. It is highly recommended that you familiarize yourself with the Zoom software and interface as soon as possible. Feel free to ask questions on the message board if you are having trouble with the technology.

Lessons and section meetings will occur at their regularly scheduled times (as defined by the UW Time Schedule). Support hours (with TAs) and coffee hours (with Miya) will also occur at scheduled times. All times (including class times and assignment due times) are given in PDT (local time in Seattle). You can use this page or Google to convert times to your local time zone.

### Recordings and privacy

Lessons will be recorded and recordings will be released to students. Theses recordings will capture the presenter's audio, video and computer screen. Student audio and video will be recorded if they share their computer audio and video during the recorded session. These recordings will only be accessible to students enrolled in the course to review materials. These recordings will not be shared with or accessible to the public.

The University and Zoom have FERPA-compliant agreements in place to protect the security and privacy of UW Zoom accounts. Students who do not wish to be recorded should:

• Choose a Zoom username that does not include any personal identifying information like their name or UW Net ID; and
• Not share their computer audio or video during their Zoom sessions (in the main room).

Quiz sections, support hours, and coffee hours will not be recorded to protect student privacy in these more discussion-based formats.

## Inclusion

All students are welcome in CSE 142 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.

## Course components

### Lessons

Lessons will typically be your first introduction to new concepts. Although we do not take attendance, students are encouraged to attend lessons each day and will be held responsible for all material (including administrative announcements) presented. If you are unable to attend class, you are expected to view the recording. (All lessons will be recorded and posted on the course website within 24 hours of the end of a lesson, and on the same day as often as possible.)

It is not expected that students will have mastered the material by the end of each lesson— mastery requires practice. To encourage students to participate actively in their learning, we will be using PollEverywhere polls in class. These polls are an opportunity to solve problems that help you check your understanding and are not graded.

### Sections

All students are assigned to a section, held at various times on Thursdays. These sections are led by our TAs and provide opportunities to reinforce and practice concepts covered in class in a smaller group setting. In section, we will answer questions, complete and discuss sample problems, and provide tips for that week's topics and assessment (see below). The TA who leads your section will also grade your assessments.

Students are expected to make every effort to attend the section to which they are assigned. If you need to attend a different section for a specific week, you must contact your TA ahead of time and receive permission. You should not regularly attend a section for which you are not registered. (Contact the course administrator if you need to change your section.)

## Required course work

### Types of assignments

There will be four categories of required course work:

Checkpoints (Weekly)
Short assignments consisting of a few problems to give you practice with the content covered in class that week. Checkpoints will generally be due on Saturdays and may be worked on collaboratively with classmates.
Take-home assessments (Weekly)
Longer programming assignments that will assess your mastery of the skills and concepts covered in class that week. While Take-home assessments will emphasize content covered in the week preceding the assessment's release, they will often integrate content from earlier in the quarter as well. Assessments will generally be due on Tuesdays and must be completed independently, though you may discuss your approach with classmates.
Culminating assessments (2x per quarter)
Large, cumulative assignments consisting of a series of problems requiring you to engage with all course content covered to that point. There will be more information as to the exact structure of these assessments later in the quarter as they approach, midway through and at the end of the quarter. Culminating assessments must be completed independently.
Reflections (w/other assignments)
Brief, written assignments designed to help you engage in metacognition and reflect on your current progress and understanding. Each reflection will be directly tied to another assignment, usually a take-home assessment, and will be due along with that assignment.

### Resubmission

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 take-home assessments to demonstrate improved mastery after your initial submission. Resubmissions are subject to the following rules:

• You may not resubmit a take-home assessment for which you did not make an initial submission.
• You may not resubmit a take-home assessment until you have received feedback on your previous submission of that assessment. (Generally one week after the due date.)
• Resubmissions must be accompanied by a short write-up 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.
• A maximum of one take-home assessment can be resubmitted each week.
• All resubmissions must be made no later than the last day of the quarter (Friday, June 4).
• A take-home assessment that has been found to involve academic misconduct may not be resubmitted (see below).

Only take-home assessments may be resubmitted.

### Late work

You MUST make an initial submission for each take-home assessment by the published deadline to receive a grade other than U on that assessment (see grading scale below). Even if your work is incomplete, you are highly encouraged to submit whatever work you have so that you can receive feedback. You will then be able to act on that feedback and resubmit (see the resubmission policy).

Checkpoints, reflections, and culminating assessments will generally not be accepted after their published deadlines.

## Getting help

Learning a new skill such as programming can be very challenging, even for students who are diligent and hard-working. It is expected that you will struggle at some point during the quarter. Please don't be afraid to ask for help if you don't understand something or need assistance with assignments or material. The following are some of the options available when you need assistance:

• Ed message board:

We use Ed as an online Q&A forum where you may ask questions (both publicly and privately). If you have a question, this should be the first place to check— it's often the case that other students may have had the same question. We also strongly recommend you monitor new questions asked on Ed semi-regularly— seeing questions other students ask can often be surprisingly enlightening.

Whenever possible, please prefer posting a public question so that other students can benefit from your question and its response. However, you should never post code from your assessments in a public post. Try to phrase your questions in a way that does not require referencing your actual code. Doing so will not only ensure you are not violating policy, but may help you better understand your question just by asking it!

• Support hours:

Please visit support hours! Answering questions during support hours is often one of the best parts of teaching, so please do us a favor and make use of them.

There are a few main uses of attending support hours:

• With a question: Your question must be clear and specific- for example, saying "I need help" is not a question, instead say "What is part 4 is asking me to do?" or "I'm getting a compiler error in this function. I've narrowed it down to these three lines of code."
• When stuck: Tell us what you are confused about and what you've tried. Don't know where to start? Tell us what you've brainstormed. Code isn't working? Tell us what you've done to debug.
• Clarification on concepts from lecture: Bring an example from lecture or problem from the textbook to ask about. However, keep in mind that the TAs are not your instructor, so if you haven't watched the lectures or read the textbook, don't expect them to teach you all of the material.

No appointment or notification is necessary to attend support hours, and you are welcome to attend any TA's support hours, regardless of who is your section TA. However please note that support hours are public and privacy cannot be guaranteed. If you have a personal question that you would prefer to discuss in private, please contact Brett or your TA to request a separate appointment.

### Extenuating circumstances

We recognize that our students come from varied backgrounds and can have widely-varying circumstances. We also know that the unusual circumstances of this quarter, and the current state of the world, may bring unique challenges for everyone. If you have any unforeseen or extenuating circumstances that arise during the course, please do not hesitate to contact the instructor in support hours, via email, or through a private Ed Discussion post to discuss your situation. The sooner we are made aware of the situation, the more easily it can be resolved and the more likely we will be able to offer flexibility. Extenuating circumstances can include work-school balance, familial responsibilities, military duties, unexpected travel, or anything else beyond your control that may negatively impact your performance in the class.

Work in CSE 142 will be graded using an ESNU scale:

E (Exemplary)
Work that meets all requirements and displays full mastery of all learning goals and material.
S (Satisfactory)
Work that meets all requirements and displays at least partial mastery of all learning goals as well as full mastery of core learning goals.
N (Not yet)
Work that does not meet some requirements and/or displays developing or incomplete mastery of at least some learning goals and material.
U (Unassessable)
Work that is missing, does not demonstrate meaningful effort, or does not provide enough evidence to determine a level of mastery.

Take-home assessments will be graded using the full ESNU scale. Checkpoints, reflections, culminating assessments will be graded using only SU; no grades of E or N will be awarded on these assignments.

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 142. It is in your best interest to ensure that your work accurately reflects your mastery by being careful and diligent in following instructions, meeting deadlines, and understanding requirements.

Take-home assessments will be graded on four dimensions:

Behavior (B)
Does the input and output functionality of the submission conform to the specification?
Structure & Design (SD)
Is the code effectively broken down into methods and are those methods well-written?
Use of Language Features (UoLF)
Are Java language constructs used effectively and appropriately?
Does the code conform to all code quality expectations?

Work will be assigned a grade on each dimension using the ESNU scale, resulting in four ESNU grades per assessment. The table below summarizes the expectations for each grade in each dimension.

E
must meet all criteria
S
must meet all criteria
N

U

Behavior
• Exhibits correct behavior in all cases, including edge, corner, and error cases.
• Exhibits correct behavior in all common cases
• Exhibits incorrect behavior in some common cases
• Lacks some required functionality
• Behavior does not resemble specification
• Lacks significant portions of required functionality
Structure & Design
• All methods are non-trivial
• No redundancy exists between methods
• main method does not contain any inappropriate functionality
• Each method performs a single, concrete task
• No obvious redundancy exists between methods
• All required methods present and meet requirements
• main method reflects overall structure of program
• Some methods are trivial or perform multiple tasks
• Obvious redundancy exists between methods
• Some required methods missing or do not meet requirements
• main method does not reflect program structure
• No or minimal methods exist
Use of Language Features
• Most appropriate variant of all language features chosen in all circumstances
• Code within control flow constructs is properly factored
• All variables, constants, parameters, and return values have most the appropriate type
• All variables are declared in most local scope possible
• Constants are not used in any inappropriate places
• Control flow constructs used appropriately throughout program
• All variables, constants, parameters, and return values have reasonable types
• All variables are declared in local scope
• Constants used in all expected places
• All required language features present and meet requirements
• Inappropriate control flow constructs used
• Variables, parameters, or return values have inappropriate types
• Any global variables used
• Constants not used in some expected places
• Some required language features missing or do not meet requirements
• Key language features not used
• Not enough code or features present to evaluate effectively
• Banned or inappropriate language features used
• Header comments on all classes and methods are well-written and contain all relevant information
• All identifiers are descriptive and neither too long nor too short
• All code is indented and spaced consistently and cleanly
• Personal style choices are consistent and reasonable
• No lines longer than 100 characters
• All identifiers are meaningful and follow prescribed naming conventions
• Code is indented and spaced appropriately
• Some lines longer than 100 characters
• Some identifier names are not meaningful or fail to follow prescribed conventions
• Indentation or spacing makes code difficult to read or follow
• Code shows little or no effort follow code quality guidelines
• Code is extremely difficult to read and understand

Final grades will be based on the quantity of work completed at each level of mastery, based on the following minimums:

at least 3.5
• S or better on all dimensions on all take-home assessments, including at least 6 total E's on each dimension
• S on at least 8 checkpoints
• S on both culminating assessments
• S on at least 7 reflections
at least 2.5
• At least 30 total S's or better and no U's on take-home assessments
• S on at least 6 checkpoints
• S on both culminating assessments
• S on at least 4 reflections
at least 1.5
• At least 20 total S's or better on take-home assessments
• S on at least 4 checkpoints
• S on at least 1 culminating assessments
• No reflections required
at least 0.7
• At least 16 total S's or better on take-home assessments
• S grades on at least 2 checkpoints
• No culminating assessments required
• No reflections required

To receive a particular minimum grade, all requirements for that grade must be met. Exact final grades, including all grades not listed above, will be determined by the course staff based on each student's overall body of work.

## Optional course activities

### Labs (CSE 190)

We offer a supplemental one-credit add-on to CSE 142, known as CSE 190. This optional, supplemental course is a self-guided programming lab during which students work through material and problems related to that week's content in CSE 142. TAs are available to answer questions and provide support, and students are allowed and encouraged to work together on the material. Lab sessions occur on Tuesdays at various times. (Lab meetings are NOT general office hours for CSE 142. Please attend scheduled office hours for support with other CSE 142 assignments.)

CSE 190 is graded CR/NC. To receive credit for the course, students must complete the required checkpoint problems in eight (8) of the ten (10) offered labs. Students are strongly encouraged to work on lab assignments during the scheduled Tuesday meeting times, but this is not required. In addition, the required problems do not need to be completed by the end of your scheduled lab session— you may work on them at other times if you prefer, or if you are unable to finish. (Lab lessons typically include more content than most students can complete in the 50-minute session.)

Lab lessons will be available to all CSE 142 students, and you are welcome to work on the activities even if you do not enroll in CSE 190. However, to receive credit for CSE 190, you must be enrolled in CSE 142; if you withdraw from CSE 142 at any point during the quarter, you must also withdraw from CSE 190.

If you are interested in registering for the additional lab credit, please be sure to register for one of CSE 190 H through R. Other sections of CSE 190 are not associated with CSE 142.

### Exploration sessions

Each week, we will hold an optional "exploration session" featuring a presentation, discussion, or activity on a topic related to computer science, but outside the normal scope of CSE 142. These sessions will provide opportunities to engage and interact with your classmates, the TAs, and a variety of guests, as well as to explore aspects of CS, STEM, and related areas in ways beyond the programming focus of CSE 142.

Exploration sessions will occur on Thursday evenings. The schedule and list of topics/activities are posted on the Exploration Sessions page.

### Philosophy

Learning is a collaborative process, and everyone benefits from working with others when learning new concepts and skills. In general, we encourage you to collaborate with your classmates in your learning and take advantage of each others' experience, understanding, and perspectives.

However, there is a difference between learning collaboratively and completing work for someone else. This can be a subtle but important distinction. Ultimately, the goal of the course is to ensure that every student masters the material and develops the skills to succeed in future courses, projects, and other related work. Submitting work that is not your own, or allowing another student to submit your work as their own, does not contribute toward developing mastery. In addition, this deprives you of the ability to receive feedback and support from the course staff in addressing the areas in which you are struggling.

### Permitted and prohibited actions

The following is a partial list of collaborative actions that are encouraged and prohibited. This list is not intended to be exhaustive; there are many actions not included that may fall under either heading.

The following types of collaboration are encouraged:

• Discussing the content of lessons, sections, labs, the textbook, or provided examples.
• Working collaboratively on solutions to practice problems or checkpoints.
• Posting and responding to questions on the course message board, including responding to questions from other students (without providing assessment code; see below).
• Describing, either verbally or in text, your approach to a take-home assessment at a high-level and in such a way that the person receiving the description cannot reliably reproduce your exact work. Such description should be in English or another natural human language (i.e. not code).
• Asking a member of the course staff about concepts with which you are struggling or bugs in your work.

The following types of collaboration are prohibited and may constitute academic misconduct:

• Looking at another person's submission on a take-home assessment, or substantially similar code, at any point, in any form, for any reason, and for any amount of time. This restriction includes work written by classmates, family members or friends, former students, and online resources (such as GitHub or Chegg), among other sources.
• Showing or providing your submission on a take-home assessment to another student at any time, in any format, for any reason.
• Submitting work that contains code copied from another resource, even with edits or changes, except for resources explicitly provided by the course staff.
• Having another person "walk you through" work you submit, or walking another person through work they submit, such that the work produced can be entirely and reliably reconstructed from the instructions provided. (That is, submitting work that you produced simply by following instructions on what to write.) This restriction includes classmates, former students, family members or friends, paid tutors or consultants, "homework support" services (such as Chegg), etc.

If you discuss a take-home assessment with one or more classmates, you must specify with whom you collaborated in the header comment in your submission. You may discuss with as many classmates as you like, but you must cite all of them in your work. Note that you may not collaborate in a way that is prohibited, even if you cite the collaboration.

Tip! A good rule of thumb to ensuring your collaboration is allowed is to not take written notes, photographs, or other records during your discussion and wait at least 30 minutes after completing the discussion before returning to your own work. (You could use this time to relax, watch TV, listen to a podcast, or do work for another class.) For most students, this will result in you only bringing the high-level concepts of the collaboration back to your work, and ensuring that you reconstruct the ideas on your own.

Instead of utilizing forbidden resources, we hope you will submit whatever work you have, even if it is not yet complete, so you can get feedback and revise your work later. If you are ever in doubt if a collaboration or resources is permitted or not, please contact a member of the course staff.

### Penalties

Any submission found to be in violation of this policy will receive a grade of U, as we are unable to assess your mastery from work that is not your own. In addition, students will forfeit the ability to resubmit work that is found to be in violation. Repeated or egregious violations of the policy will be forwarded to a relevant university committee for further action.

### Amnesty

The course staff has endeavored to create an environment in which all students feel empowered and encouraged to submit their own work, regardless of the quality, and avoid prohibited collaboration. However, despite our best efforts, students may occasionally exercise poor judgement and violate this policy. In many cases, these students come to regret this decision almost immediately. To that end, we offer the following opportunity for amnesty:

If you submit work that is in violation of the academic conduct policy, you may bring the action to Miya's attention within 72 hours of submission and request amnesty. If you do so, you will receive a grade of U for the initial submission, but you will be allowed to resubmit your work under the normal resubmission process. This action will not be shared outside of the course staff and will not be part of any academic record except in the case of repeated acts or abuses of the policy.

This policy is designed to allow students who have acted in a way they regret the opportunity to correct the situation and complete their work in a permitted way. It is not intended to provide forgiveness for violations that are detected by the course staff, nor to be invoked frequently. It is still in your best interest to submit whatever work you have completed so that you can receive feedback and support.

Note that, while requesting amnesty will allow you to resubmit your work, the resubmission must still not violate the collaboration policy. In particular, the resubmission must not include work that is not your own. It is extremely difficult to "unsee" or "forget" work that you may have viewed in violation of the policy, and it is your responsibility to ensure that your resubmission is completed entirely in accordance with the policy. (Needless to say, the easiest way to achieve this is to not violate the policy in the first place!)

## Guidance to students outside the U.S.

Faculty members at U.S. universities—including the University of Washington—have the right to academic freedom which includes presenting and exploring topics and content that other governments may consider to be illegal and, therefore, choose to censor. Examples may include topics and content involving religion, gender and sexuality, human rights, democracy and representative government, and historic events.

If, as a UW student, you are living outside of the United States while taking courses remotely, you are subject to the laws of your local jurisdiction. Local authorities may limit your access to course material and take punitive action towards you. Unfortunately, the University of Washington has no authority over the laws in your jurisdictions or how local authorities enforce those laws.

If you are taking UW courses outside of the United States, you have reason to exercise caution when enrolling in courses that cover topics and issues censored in your jurisdiction. If you have concerns regarding a course or courses that you have registered for, please contact your academic advisor who will assist you in exploring options.

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

## Disability Resources for Students

Your experience in this class is important to us. If you have already established accommodations with Disability Resources for Students (DRS), please communicate your approved accommodations to Miya 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 are not limited to; mental health, attention-related, learning, vision, hearing, physical or health impacts), you are welcome to contact DRS at 206-543-8924 or uwdrs@uw.edu or disability.uw.edu. 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 instructor(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.

## Acknowledgements

Credit for the development for this website template goes to Hunter Schafer and the staff of CSE 163.