CSE 142: Intro. to Computer Programming I

Teaching staff:

• Instructor: Brett Wortzman (brettwo@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 support hours: Full list here

Class meetings:

• MWF 11:30am-12:20pm, KNE 130 (A Lecture)
• MWF 3:30pm-4:20pm, KNE 120 (B Lecture)

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. Documentation and Readability: Define programs that are well-written, readable, maintainable, and conform to established standards

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. Lessons will be recorded, but we highly recommend that you attend class live as often as possible to take full advantage of activities and practice and ask questions. Recordings will be posted on the course website within 24 hours of the last lesson on that day, 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.)

Sections will not be recorded, but we will share materials (handouts and solutions) on the course website and/or Ed course. For some sections, we may also have a video of a TA walking through some of the topics or problems that were discussed, but these will not contain questions or discussions from during section.

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:

• Asynchronous help: Ed message board

If you have a question, this should be the first place to chec. It's often the case that many students have the same question, so your question may have already been asked and answered! We also strongly recommend you monitor new questions asked on Ed semi-regularly— seeing questions other students ask can often be surprisingly enlightening.

If not, you can post a new question yourself. If you have a general question about course content or logistics, make a public post. This way, other students can benefit from seeing your question. Students are also encouraged to answer each other's questions— Explaining a topic to someone else is a great way to help you solidify your own understanding! The course staff will still look over student answers and can nicely point out any misconceptions if necessary.

If you have a very specific question about personal details or your own assessment solutions, you can make a private post that will only be visible to the course staff. Though this will sometimes be necessary, we encourage you to try to phrase your question in a way that doesn't 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!

• Synchronous help: Support hours

Support hours with our TAs take place in the Introductory Programming Lab (IPL), located in MGH 334. The IPL is open for many hours on weekdays and a few hours on weekends, and no appointment is necessary. This is a great place to go if you want to review a particular course concept, work on practice problems with the help of a TA or your peers, or get support on assigned work if you are struggling.

Brett also holds support hours, though his availability is much more limited than the IPL. (There's only one of him!) You are welcome to visit Brett's support hours if you would like to talk to him directly about anything. Feel free to come and just chat!

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 and request a separate appointment.

Extenuating circumstances: "Don't suffer in silence!"

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 circumstance that arise during the course, please do not hesitate to contact the instructor 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 physical or mental health and wellness, work-school-life balance, familial responsibilities, military duties, unexpected and unavoidable travel, or anything else beyond your control that may negatively impact your performance in the class.

In general, please reach out as soon as possible regarding extenuating circumstances. While we will make every effort to support and accommodate students experiencing difficulties, we are far more likely to be able to assist before a deadline has passed than after. In particuar, requests for extensions are generally not granted retroactively. Please be communicative with the course staff so that we can support you as much as possible. Our ultimate goal is to help every student be sucessful in the course.

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

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.

Required course work

Types of assignments

There will be four categories of required course work:

Checkpoints (~Weekly, ~10 total)
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 Fridays and may be worked on collaboratively with classmates.
Take-home assessments (~Weekly, 8 total)
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. Details on the exact format and requirements of culminating assessments will be posted later.
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.

Revision and 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 submitted through a provided form, and 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.
• A take-home assessment that has been found to involve academic misconduct may not be resubmitted (see below).

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.

Work in CSE 142 will be graded using an ESN 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.

Take-home assessments will be graded using the full ESN scale. Checkpoints, reflections, culminating assessments will be graded using only SN; no grades of E 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.

On occasion, a grade of U (Unassessable) may be assigned to work that is missing, does not demonstrate meaningful effort, does not provide enough evidence to determine a level of mastery, or violates major course rules. Under certain circumstances, grades of U may also carry additional consequences, such as the loss of the ability to resubmit.

Take-home assessments will be graded on four dimensions:

Behavior
Does the input and output functionality of the submission conform to the specification?
Structure and Design
Is the code well-designed and structured? Is the overall program effectively broken down into methods and are those methods well-written? Does the class effectively use object-oriented design principles (when applicable)?
Use of Language Features
Are Java language constructs used effectively and appropriately?
Does the code conform to all Documentation and Readability expectations?

Work will be assigned a grade on each dimension using the ESN scale, resulting in four ESN 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

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
Structure and 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
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
• 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

Final 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 Ss and Es: Count the number of each of the following earned beyond the requirements for the base grade identified in step 1:
• S's or better on take-home assessments
• E's on take home-assessments
• S's on checkpoints
• S's on culminating assessments
3. Adjustment: Multiply each of the counts found in step 2 by a multiplier determined by the course staff, and add the result to the base grade.

Minimum requirements for each base 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.

at least 3.5
• S or better on all dimensions on all take-home assessments
• At least 6 total E's on each dimension on take-home assessments
• S on at least 8 checkpoints
• S on both culminating assessments
• S on at least 7 reflections
at least 3.0
• At least 28 total S or better on all take-home assessments
• At least 4 total E's on each dimension on take-home assessments
• No U's on take-home assessments
• S on at least 6 checkpoints
• S on both culminating assessments
• S on at least 5 reflections
at least 2.5
• At least 24 total S's or better on take-home assessments
• At least 3 total E's on each dimension on take-home assessments
• 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 2.0
• At least 20 total S's or better on take-home assessments
• S on at least 4 checkpoints
• S on at least 1 culminating assessment
• S on at least 2 reflections
at least 1.5
• At least 18 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

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 support hours for CSE 142. Please attend scheduled support 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 eleven (11) 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 F 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.

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 or utilize a resource in a way that is prohibited, even if you cite the collaboration or resource.

Permitted and prohibited actions

Our collaboration policy can best be summarized as "work you submit must be predominantly your own." There is value in learning from peers and others as you work to master the material, but ultimately, you must do your own work. 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. When in doubt, please contact the course staff for clarification.

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).
• Consulting resources or information from classmates, friends, family members, the internet, or other sources about the general topics and concepts covered in the course, or for help understanding an error message or technical issue.
• Discussing, either verbally or in text, your approach to a take-home assessment at a high-level and in such a way that the people you are discussing with cannot reliably reproduce your exact work (i.e. not describing your exact code). Such description should be in English or another natural human language.
• 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:

• Submitting work that contains code copied from or heavily influenced by another resource, even with edits or changes, except for resources explicitly provided by the course staff.
• Looking at another person's submission on a take-home assessment, or substantially similar code, and basing your own submission on that work. This restriction includes work written by classmates, family members or friends, former students, and online resources (such as GitHub or Chegg), among other sources.
• 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.
• Giving or showing your own work on a course assignment to a classmate in an attempt to help them solve a problem or overcome difficulties.
• Paying or offering to pay another person to produce work you then submit as (part of) your own.
• Searching for or consulting outside work that is explicitly a solution to course assignments.
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 Brett'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.

Acknowledgements

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