Syllabus

Welcome to CSE 160!

Computational methods permeate the sciences, engineering, and even the humanities. You need a foundational understanding of computation and practical data analysis in order to be successful in science, engineering, business, and other professions.

CSE 160, “Introduction to Data Programming”, is an introductory programming class that meets this need. You will learn to write small programs in the Python programming language to solve real-world scientific and engineering problems. This will be useful in your classes, your research, and your jobs.

Goals

In CSE 160:

Why another programming class?

UW offers a variety of excellent introductory programming classes. No one of them is best for all students. We provide a webpage to help you decide among them. That webpage also contains information about substituting CSE 160 for other UW requirements.

Some characteristics of CSE 160 include:

Why Python?

Many programming languages and computational tools exist to help you analyze data. These include Excel, MATLAB, R, C/C++, Java, and others. Python is a particularly good choice. It is a complete programming language. It is simple to learn and easy to write and read. You can get started with it right away. It comes with excellent libraries that will simplify your programs.

Topics

The Goals section described the high-level goals of the class. Its real objective is to teach you basic problem analysis and computational thinking, and to enable you to apply them in practice to extract meaning from a dataset. Doing so requires you to logically organize data; to design algorithms; to formulate them in a way that computers can execute; to test, identify problems, and find solutions; and to communicate the results.

At a lower level, here are the topics that the class teaches to help you achieve the course's goals. The schedule shows the specific order of topics during the term.

Python concepts:
Expressions, values, types, variables, programs & algorithms, control flow, file I/O, the Python execution model
Data structures:
List, set, dictionary (mapping), tuple, graph (from a third-party library)
List slicing (sublist), list comprehension (shorthand for a loop)
Mutable and immutable data structures
Functions:
Procedural abstraction, function design methodology
Data abstraction (introduction only, no in-depth coverage):
Classes, objects
Testing and debugging:
Test design, coverage, & adequacy
Debugging strategies: divide & conquer, the scientific method
Statistical hypothesis testing
Visualization (graphing/plotting results)
Program decomposition

Prerequisites

The only prerequisite for the class is high school math.

The class does not assume any previous programming experience. — in fact, if you have already taken CSE 143 or any 300-level CSE class, you are not allowed to take CSE 160.

We assume that you are familiar with basic computer usage — you are comfortable running applications, navigating the file system (say, with a tool like Windows Explorer), editing documents with a word processor or text editor, and so forth.

Any student can succeed in CSE 160. But, CSE 160 is not an easy class. To succeed requires you to work diligently, to be organized and systematic, to follow and give instructions precisely, and to ask questions when you are confused. The staff knows you can succeed, and we will help you succeed.

Class logistics: times and staff

Lectures: MWF 3:30-4:20, in CSE2 G020
Sections: Thursdays at 9:30, 10:30, 11:30, 12:30, 1:30, 2:30 and 3:30pm. See the course listing.
The schedule lists readings, lecture topics and assignment due dates, with links to the materials.

Discussion Board:(aka Message Board)
You may use the discussion board to ask questions — and to give help to other students. You can optionally subscribe to discussion board notifications, so that you receive email whenever a new posting is made on the discussion board.

Staff:
Instructor: Ruth E. Anderson
TAs: Amanda Ong, Ananditha Raghunath, Brian Zhu, David Benjamin Chang, Emily Caitlin Chang, Jim Limprasert, Joely Nelson, Melissa Birchfield, Niamh Froelich, Tyler Phuc Bao Nguyen, Wen Qiu, Wisdom Oluchi Ikezogwo
Staff email: cse160-staff@cs.washington.edu
By sending your email to the cse160-staff list you are likely to get a faster and more authoritative response than if you send email to individual staff members. We will answer as quickly as possible, typically within 24 hours. You can also send anonymous email if you are more comfortable with that, though it does not let us respond to you to better understand and solve your problem.

Asking Questions: If you have questions, please ask us! We want to help you, but we are bad at reading minds.
Your first stop for most questions should be the Discussion Board (remember not to post your program there, see Discussion Board etiquette below). For questions involving personal matters send email to cse160-staff at cs. Detailed debugging is best handled in office hours.

Office hours are listed on the schedule. You are also welcome to set up additional meeting times with the course staff.

Discussion Board etiquette: You should never post the code to solve a homework assignment (in whole or in part) on the class discussion board. This includes posting partial code in progress in order to ask what is wrong with it. Before posting your question, remember to check the discussion board (you can use the search feature) to see if it has already been asked. We encourage students to ask and answer questions on the Discussion Board.

Email etiquette: When using the staff email alias (but NOT the Discussion Board), it is always a good idea to attach the current version of your code to your message, so that the staff can better understand and reproduce your problem. In every message, always be explicit about the exact thing you did, exactly what the result was, and what you had expected to happen. (For example, cut and paste or attach the exact output, rather than just saying “something went wrong” or describing it vaguely.) This will enable us to help you more effectively.

Lecture etiquette: We encourage you to use your laptops during class for activities that help you get the most from lecture - following along with slides, typing Python code into the interpreter, taking notes. However talking and doing activites not relevant to lecture (e.g. checking emails, playing games, surfing the web) can be incredibly distracting to those around you. Please be respectful and avoid these activities during class.

Resources: books and software

The class will recommend readings from three resources. Two are freely available on the Internet, and the third is available for ~$30 or less.

Readings from multiple sources are recommended for each lecture — see the schedule for details. While much of what you need to know will be discussed in lecture, most people find reading one or more resources either before or after lecture useful.

The assigned readings are a great place to get started, but you will also need to use other materials to master Python. We also encourage you to use the many Python resources that are available on the Web. Start with the official Python documentation, whose most useful components include a beginner's guide, a tutorial, a list of all the functions built into Python, and searchable online documentation.

Software: Please see the CSE 160 computing resources webpage for information about installing Python on your own computer.

Tools: Philip Guo's Python Tutor lets you execute a program line by line, and it draws the variables and data structures that the program creates during execution.

After CSE 160: If you wish to learn more beyond what CSE 160 teaches you, see the self-study suggestions.

Assignments and Grading

Assignments are available from the schedule and also, redundantly, on a separate homework webpage. Assignment submission forms are linked to on their respective specification documents.

Your course grade will be determined approximately as follows (weights may be slightly modified):

You will complete approximately six programming assignments. There are often some written questions on each assignment as well as a survey that must be filled out as well.

We urge you in the strongest possible terms to get started on your assignments early. This approach will take you much less time overall than if you try to do all the work at once at the last minute. An efficient approach is to start work, then take a break when needed. This lets your subconscious continue to work on the problem, or enables you to return to it with a fresh perspective and renewed energy. Furthermore, you will be able to ask for and receive help.

The exam grade will be determined by a midterm and a final exam. The final will count a bit more than the midterm exam. Our midterm will be held Wednesday Nov 3 and our final exam will be held Thursday Dec 16. More details about exam formats will be announced later.

Your participation grade includes check-ins (on-line questions and programming exercises), homework surveys, as well as other course activities. In-person attendance at lectures or section will not be required for the participation grade.

If you find an error in our grading, please bring it to our attention within one week of that item being returned.

Grading on a “curve”

Grading for this class is not curved in the sense that the average is set at (say) 3.0 and half of the class must receive a grade lower than that. If everyone does well and shows mastery of the material, everyone can receive an A. If no one does well (this is unlikely), then everyone can receive a C. Furthermore, your grade is not affected by someone else dropping the class — whether that person was doing better or worse than you.

Grading for this class is curved in the sense that we do not have a pre-defined mapping from homework and exam scores to a final GPA. There is no pre-determined score (e.g., 90% of all possible points) that earns a 4.0 or a 3.5 or a 2.0 or any other grade. To determine the final grade, we will ask questions like “Did this student master the material?”, and the English descriptions in the Sample UW Grading Guidelines.

Late Work

Assignments are due on different days of the week, generally at 11:59pm. Due dates will be listed on each assignment and shown on the schedule.

Each student is permitted 5 late days to use during the quarter. Each late day permits you to submit an assignment up to 24 hours late. Each late day is atomic; for example, you cannot use 8 hours of a single late day on each of three assignments. Note that some assignments may have multiple parts. Each part of the assignment should be viewed as its own assignment in terms of late days. For example, submitting HW4-part1 1 day late and HW4-part2 1 day late will consume two late days.

You may wish to reserve some late days in case of unexpected emergencies (please let us know about medical emergencies such as those involving hospitalization). If you have used up your late days, a penalty of 10% off per 24-hours late will be assessed. Regardless of the number of late days you have remaining, assignments will not be accepted more than two days after the original due date. An exception is made for weekends, which count as a single late day. That is, if an assignment is due at 11:59pm on Friday, submitting before Sunday at 11:59pm counts as using only ONE late day (submitting by 11:59pm on Monday would count as using TWO late days).

Academic Honesty

Integrity is a crucial part of your character and is essential for a successful career. We expect you to demonstrate integrity in CSE 160 and elsewhere. In particular, your assignments must represent your own work and understanding. Academic misconduct such as plagiarism is grounds for failing the class and will be dealt with by a University committee.

The following guidelines apply unless an assignment specifically states otherwise. If you have any questions about acceptable behavior, please ask the course staff. We will be happy to answer your questions!

You are encouraged to talk to your classmates about problem solution ideas, and you may reuse those ideas, but you may not examine nor reuse any other student's code - this includes code from students who have taken this course or a similar one in previous quarters. You are not allowed to copy code from any source — other students, acquaintances, the Web, etc. (Copying is forbidden via cut-and-paste, via dictation or transcription, via viewing and memorizing, etc.) Your solution may utilize Python libraries that are available that we have discussed in lecture. You are encouraged to use books, the Internet, your friends, etc. to get solution ideas, but you may not copy/transcribe/transliterate code: get the idea, close the other resource, and then (after enough time that the idea is in your long-term, not short-term, memory - e.g. watch a silly TV show for at least 30 minutes) generate the code yourself based on your own understanding.

Python Example Code

You may sometimes find it useful to do a web search to find snippets of Python code that performs some particular operation, and paste it into your own programs. (Remember: It is NEVER acceptable to examine or re-use code from another student, including students who have taken this course or a similar one in previous quarters.) This can be an acceptable short-term strategy if it helps you get past a particular roadblock. However, you must later go back, remove the code you did not write yourself, and write the replacement on your own, from scratch. Recall that the class policy is that you must write everything that you turn in. Violating this is academic dishonesty (cheating), which can lead to a variety of negative consequences for you, including failing the class and further disciplinary action.

It is your responsibility to understand everything that you turn in. We reserve the right to ask you to explain any part of your homework assignment. If you are not able to explain what it means and why you chose it, that is presumed evidence of copying/cheating.

Later, when you are writing your own programs after you complete CSE 160, it's fine to copy others' code if the license permits such use. (Copying one or two lines is usually acceptable regardless of the license.) However, in your future career, please remember two things:

  1. It is your ethical duty to properly cite the source of any code that you did not write yourself. Give credit where credit is due.
  2. You should still understand the code that you copied. Otherwise, if and when the code does not work (for example, maybe the original author made an assumption that is not true in your program, or worse yet, it has a bug!), you will lose more time debugging than you saved by copying.

Re-grade Policy

If you have a question about an assignment or exam that was returned to you, please don't hesitate to ask a TA or the instructor about it during their office hours. Learning from our mistakes is often one of the most memorable ways of learning!

If after discussing your question with a TA or the instructor you feel that your work was misunderstood or otherwise should be looked at again to see if an appropriate grade was given we ask that you submit a re-grade request as follows.

Note that when an assignment or test is re-graded, the entire work will be re-graded. This means that while it is possible to regain some points, it is also possible to lose points.

Disability Resources

The Disability Resources for Students (DRS) is a unit within the Division of Student Life and is dedicated to ensuring access and inclusion for all students with disabilities on the Seattle campus. They offer a wide range of services for students with disabilities that are individually designed and remove the need to reveal sensitive medical information to the course staff. If you have a medical need for extensions of assignment deadlines, these will only be granted through official documentation from DRS. Browse to this link to start the process as soon as possible to avoid delays.

You can refer to the university policies regarding Disability Accommodations for more information.

Religious Accomodations

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 Accommodations Request form.

Extenuating Circumstances and Inclusiveness

We recognize that our students come from varied backgrounds and can have widely-varying circumstances. If you have any unforeseen or extenuating circumstance that arise during the course, please do not hesitate to contact the instructor in office hours, via email, or private discussion board post to discuss your situation. The sooner we are made aware, the more easily these situations can be resolved. Extenuating circumstances 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.

Additionally, if at any point you are made to feel uncomfortable, disrespected, or excluded by a staff member or fellow student, please report the incident so that we may address the issue and maintain a supportive and inclusive learning environment. Should you feel uncomfortable bringing up an issue with a staff member directly, you may consider sending feedback or contacting the Office of the Ombud.

Caveat

All of the information in this document is subject to change throughout the quarter. The course staff will announce any substantive changes.