Course Information

Teaching Staff

Instructors: Brett Wortzman and Elba Garza

Instructor Email: cse121-instructors@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; the course staff do not have access to add codes or the ability to overload sections.
  • Questions about course concepts? Visit office hours in the Introductory Programming Lab (IPL), Brett or Elba’s office hours, or post on the Ed Discussion board (more info below)
  • Questions about assignments? Visit office hours in the Introductory Programming Lab (IPL), Brett or Elba’s 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 the course instructors (cse121-instructors@cs.washington.edu)

Class Meetings

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

Other Info

Course Overview and 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 first course in computer programming focused on the basics of procedural programming in Java. It assumes students have not taken a previous programming course and do not have substantial other programming experience. (Students with previous experience are encouraged to consider CSE 122.)

Learning Objectives

CSE 121 is designed around a set of 16 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. Create an algorithm to solve a given problem and express that algorithm in a structured way (e.g. pseudocode)
Code Comprehension
  1. Trace the behavior and state of Java code that uses basic control structures and data abstractions through its execution
  2. Predict the behavior and results of executing Java code that uses basic control structures and data abstractions
Code Writing
  1. Write functionally correct Java programs that meet a provided specification using control structures, primitive data types, and basic data abstractions
  2. Write functionally correct methods from a provided specification that can be composed to solve a larger problem.
  3. Select and apply the following control structures to manage the flow of control and information:
    • Methods
    • for and while loops
    • if, if-else, and if-else if statements
  4. Select and apply the following primitive data types and basic data abstractions to manage and manipulate data:
    • int, double, boolean, String, char
    • Variables
    • Parameters and return values
    • Arrays
  5. Write programs that accept input and produce output to/from the console and text files
  6. Write programs that are readable and maintainable, and that conform to provided guidelines for style and implementation
Communication
  1. Clearly and effectively describe the behavior of a given code snippet
  2. Produce clear and effective documentation to improve comprehension and maintainability of programs and methods
Testing
  1. Determine the correctness of a program by evaluating its behavior as compared to a provided specification
  2. Identify and enumerate a set of inputs or tests that are useful for determining the correctness of a program
Debugging
  1. Identify errors in a method’s 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.

Course Climate

Inclusion

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

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

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

Software and Textbook

Learning Management System (LMS) - EdStem

Most materials for this course will be hosted on EdStem. This includes readings, notes, and exercises for both class sessions and quiz sections; the discussion board; and assignment submission and grading. Access to Ed and all of the these materials are free for students enrolled in CSE 121 this quarter. Direct links to all materials will also be posted on this course website for each relevant activity. We recommend using this website as your primary way of finding links to the correct Ed resources.

Development Environment (IDE) - IntelliJ

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 recommend installing an IDE called IntelliJ so that you can leverage a visual debugger and work offline. Instructions for setting up IntelliJ are on the software setup page.

Textbook (Optional)

There is no required textbook for CSE 121. 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 121, 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 Meetings

Class Sessions (Lessons)

To best support your learning in CSE 121 this quarter, we will be using a hybrid classroom model for instruction. 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.

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 (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 the “traditional classroom” model:

  1. It is probably familiar to you.
  2. It is probably familiar to most of your instructors.

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 at 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 a lecture hall twice a week and a quiz section twice a week? Probably no one! Because that’s obviously not how learning how to ride 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 Brett and Elba talk about some idea and then trying to go practice the idea at home (a much harder task), we 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 Brett and Elba 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 the problems as a whole class. We do not take attendance, but we expect students to be attending class and participating in in-class activties, or watching the recordings on the rare occassion that they can’t attend class. The class sessions will be recorded so students who cannot attend can view them later, but note that with the hybrid-style of our class, parts of the recordings will not be as useful since time will be spent with students working in groups.

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 the resources outlined in Class Sessions and Quiz Sections to 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 week. Quiz sections meet on Tuesdays and Thursdays at various times. Like with class sessions, there is generally no attendance requirement, but you are expected to attend to keep up with the course material (assuming you are not sick!). You should attend the section you are registered for; check MyUW for your section time and location. If you need to change sections to accommodate your schedule, please contact the advising team.

On certain days during the quarter, you will take quizzes in your quiz section. See the calendar for quiz dates and below for more details.

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 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. If you are sick on a quiz day, you will use a quiz retake to make up the quiz you missed.

Course Work

Types of Required Assignments

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

Pre-class Work (daily, ~20 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 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.
Quizzes (~biweekly, 4 total)
Collections of short, independent problems completed in section on the assigned day. Quiz problems will take a variety of forms, and will generally assess course learning objectives other than code writing (though you may still be asked to write code on quizzes). Each quiz will generally focus on content introduced since the last quiz, but may include any content previously covered.
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 is scheduled for Wednesday, December 14 from 12:30pm to 2:20pm in Kane Hall.

Revision, Resubmission, and Reattempts

Making mistakes and receiving feedback is an important part of learning any skill, especially for novices– it is rare that any of us do things exactly right the first time we try. We expect your proficiency in the course learning objectives to develop over time, and our goal is assess your proficiency at the end of the course. To that end, you have the opportunity to revise, resubmit, and/or reattempt most work that you submit. There is no penalty for resubmitting or reattempting work under this policy. However, we do impose some restrictions to manage logistical constraints:

  • A maximum of one Programming Assignment or Creative Project can be resubmitted each week and each assignment should only be resubmitted once over the course of the quarter (more on this below).
  • There will be 8 weeks in total where you will be eligible to make a resubmission after receiving feedback from your TA.
  • If you have already made a submission for an assignment, you may not make a resubmission until you have received feedback on your previous submission of that assignment. (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.
  • An assignment that has been found to violate our academic honesty policy 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.

Single Resubmission per assignment: 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. That makes it very important that you complete as much of the 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. We understand that there may be extenuating circumstances that might require you to not fully meet your goal on an assignment with a single resubmission. If you find yourself needing to use more than one resubmission on a single assignment, you should reach out to your TA to discuss a plan for getting caught up with the course and we can provide an exception to allow more than one resubmission for a single assignment.

Retakes - Quizzes

If you are unable to complete the quiz or are not satisfied with the marks you received, you are able to retake each quiz at most once at some point later in the quarter. Retakes cannot be scheduled until after the feedback from the original quiz offering is released, at which point you can schedule a retake for that quiz up to 3 weeks after the original quiz date. The retake will need to be scheduled in one of the available retake slots. The retake will be a completely new quiz that will replace your original quiz grade.

There are no retake opportunities for the final exam due to its placement at the end of the quarter and its role as a culminating assessment where you can demonstrate your proficiency in the course concepts you have been practicing all quarter.

Late Work Policy

In general, late work will not be accepted, except as described under the Extenuating Circumstances policy. If you have circumstances beyond your control that will prevent you from submitting your work on time, please contact the course staff as soon as possible.

Although late work is not typically accepted, resubmissions and reattempts are allowed even if the work was not initially submitted or attempted. Therefore, if you miss a deadline, you may still utilize a resubmission or reattempt to complete the work. Keep in mind that resubmissions and reattempts are limited; we recommend you take advantage of this policy sparingly.

Regardless of any other policies, no work will be accepted after the conclusion of the final exam without prior approval from the course instructors.

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 support hours for help with a specific assignment. 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 support hours! Getting help with a concept earlier, when you first are feeling unsure, is much better than saving it until you need it on an assignment.

  • Asynchronous Help (Ed Discussion): With a class of our size, directly emailing a member of the course staff is not usually recommended. There are many of you and only few of us, so if you email one person directly we can’t guarantee how quickly we can respond. To alleviate this, we have a course discussion board that will be a much more lively place for discussion and a way to make sure you can get help 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 misconceptions (if there are any) so that everyone benefits.
    • If you have a question that’s pretty specific to your assignment solution or is related to a personal situation 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 Brett and Elba, you can instead email Brett/Elba if that makes you feel more comfortable. Note that the response time for the instructors’ email is generally longer than posting on the Ed board.

Grades

Grading Scale

Work in CSE 121 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
Satisfactory1
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 121. 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

Each type of course work will be graded on the ESN scale as follows:

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.

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 each of the following earned beyond the requirements for the base grade identified in the last step:
    • S‘s or better on creative projects
    • E‘s on creative projects
    • S‘s or better on programming assignments
    • E‘s on programming assignments
    • S‘s or better on quiz and exam problems
    • E‘s on quiz and exam problems
  3. Adjustment: Multiply each of the above counts by a multiplier and add the result to the base grade. Each count listed above (e.g. S‘s or better on creative projects, E‘s on quiz and exam problems) may use a different multiplier. These multipliers will be determined by the course staff at the end of the quarter.

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.

Grade Checker

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

Notation

S+ indicates S or E. For example, if a requirement says “16 S+; 14E,” that means you need both at least 16 combined Ss and Es and at least 14 Es. (Or, put another way, at least 14 Es plus at least 2 more Ss or Es.)

Es per dim. indicates how many Es must be earned on each of four dimensions on which programming assignments are graded (see the rubric). For example, if a requirement says “2 E per dim.,” that means that you must earn at least 2 Es on each of the four dimensions.

Minimum Grade Creative Projects Programming Assignments Quiz/Exam Problems
Total Available 4 ESN 16 ESN
4 per dim.
18 ESN
3.5 All (4) S+
3 E
All (16) S+
12 E
3 Es per dim.
16 S+
14 E
3.0 All (4) S+
2 E
14 S+
8 E
2 E per dim.
12 S+
9 E
2.5 3 S+
1 E
12 S+
4 E
1 E per dim.
10 S+
4 E
2.0 2 S+ 10 S+ 9 S+
1.5 1 S+ 8 S+ 7 S+
0.7 1 S+ 4 S+ 4 S+

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. For example, it is possible to earn a 3.0 or above with only 10 S’s or better on quiz/exam problems (assuming all the other requirements are met), but we will only guarantee a 2.5 or above. Estimates of students’ final grades beyond the requirements listed above will not be provided before final grades are released.

Academic Honesty and Collaboration

Philosophy

Much of the following language was borrowed or adapted from Kevin Lin.

Education is about shaping your identity as much as it is about learning concepts and skills. In school, the consequences of making mistakes are relatively small. But the habits you form now—repeated over days, weeks, months, or years—will determine who you become in the future. While taking shortcuts now may seem relatively harmless and easily justified, doing so runs the risk of developing bad habits that will make it difficult for you to act more earnestly or honestly in the future when the stakes are higher and the consequences are more severe.

Academic honesty reflects the trust (or the lack thereof) between students and teachers. We have worked hard to design this course in ways that engender trust and that encourage honest and earnest behavior. We hope that, when you are struggling, you will take advantage of the resources and policies that we have provided (e.g. consulting course resources, posting on the message board, attending support hours, utilizing resubmissions and reattempts) rather than resorting to dishonest conduct.

For more information, consult the Allen School policy on academic misconduct.

Policy

The academic honesty policy for CSE 12X is summarized as follows:

All work you submit for grading in this course must be predominantly and substantially your own.

  • Predominantly means that the vast majority of the work you submit on any given assignment must be your own. Submitting work that includes many components that are not your own work is a violation of this clause, no matter how small or unimportant the pieces that are not your work may be.

  • Substantially means that the most important parts of the work you submit on any given assignment must be your own. Submitting work that includes major components that are not your own work is a violation of this clause, no matter how little work that is not your own you include.

Both of these terms are naturally open to interpretation– when in doubt, we encourage you to ask the course staff for guidance. Misalignment between your and our definitions of these terms will not be considered grounds for excusing violations.

A good rule of thumb for conforming to this policy is that, if you seek out outside resources or help, you search for examples or resources that are not directly tied to the course or the assignment. For example, searching for “how to split a string into words” or “how to write a for loop” is likely acceptable. Searching for “CSE 121 Assignment 1 solution” is likely not.

In addition, the more code you directly copy, the more likely you are to violate the policy. As much as possible, utilize outside resources to help you understand the concepts necessary to write your own code rather than directly including outside code in your work.

Note that this policy only applies to graded work– you are free to collaborate in any way and utilize any resources on work that is not graded. However, keep in mind that ungraded work is often your best chance to practice the skills that you will need for graded work, so it is generally in your best interest to avoid taking shortcuts even on work that is not graded.

Violations

Violations of this policy will be referred to the UW Community Standards and Student Conduct office. Students found responsible for violating this policy will, at minimum, receive no credit for the assignment on which the violation occurred (regardless of whether that assignment was later resubmitted or reattempted). Additional penalties may be imposed for repeated or egregious violations.

Examples of Actions

The following are examples of activities that are encouraged, potentially permitted with caution, and prohibited. These lists are not exhaustive–- there are many actions not included that may fall under any of the three headings. When in doubt, we encourage you to contact the course staff proactively for clarification.

Encouraged/
Permitted

  • Discussing course content, topics, and skills (but not specific graded problems or assignments).
  • Searching online for examples of general course topics, concepts, and skills (but not specific graded problems or assignments).
  • Collaborating in any way on ungraded work (including pre-class work).
  • Using Artificial Intelligence-assisted code generators (e.g. GitHub Copilot) to generate solutions to ungraded work or example problems.
  • Providing or receiving “high-level” guidance on approaches, algorithms, or concepts for an assignment with citation.
    • For example, how to compute a cumulative sum, how to traverse an array, or how to read user input with a Scanner.
  • Providing or receiving guidance on technical details, such as syntax, library methods, or error messages.
    • For example, how to declare a variable, the name and parameters of the method to generate a random integer, or the meaning of a specific error message.

Potentially Permitted
with Caution

  • Providing or using small, insubstantial snippets of code taken from another source (e.g. classmates, friends, the internet) with citation.
    • For example, a single line of code to complete a non-essential task like rounding numbers or modifying the case of a String; or a few lines of boilerplate code such as opening a file for reading or writing.
  • Using Artificial Intelligence-assisted code generators (e.g. GitHub Copilot) to generate boilerplate or trivial helper code with citation.
    • We generally advise against using these tools for anything except exploration. The line between what is allowed and disallowed can be hard to find, and AI-generated code often has subtle flaws.

Prohibited

  • Providing or using large samples of code taken from another source specifically designed to complete any part of a graded assignment.
  • Providing or receiving detailed guidance on how to implement a solution for any part of a specific graded assignment.
  • Providing or receiving any guidance without citation.
  • Using any code taken from another source without citation.
  • Using Artificial Intelligence-assisted code generators (e.g. GitHub Copilot) to generate full solutions for any part of a specific assignment, or to generate any code without citation.

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 (Brett is a big fan of Freakonomics Radio and Today Explained), 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 about whether an action is permitted or not, please contact a member of the course staff.

Withdrawal Clause

This policy is heavily inspired by CS50 at Harvard University.

Sometimes, despite our best efforts, we all take actions we regret. Looming deadlines, outside pressures, and feelings of desperation can conspire to cause us to exercise poor judgment in a variety of ways. In the moment, it can seem as though these actions are justifiable, or even necessary, but upon reflection we wish we had made a different choice.

In recognition of this, we offer the following opportunity:

Any previously submitted work may be withdrawn, no questions asked, within 72 hours of submission by written request to the instructors, as long as the work has not already been flagged as a possible violation of the academic honesty policy. Work that is withdrawn under this policy will receive no credit (as though it were not submitted), but there will be no further penalty or action taken. You will not be asked to describe why you are requesting to withdraw your work. Requests to withdraw work will not be shared outside of the course staff or be part of any academic record, except in cases of repeated acts or abuses of the policy.

To invoke this policy, you must send a written request to the course instructors. Your work will not be considered withdrawn until you have received written confirmation from the instructors of your request.


  1. No grades of S will be given on certain quiz and exam problems.