CSE 163, Winter 2020: Syllabus

CSE 163: Intermediate Data Programming

Overview (link)

Teaching staff:

Times:

  • Lecture: PAC 192 from 3:30 to 4:20, MWF
  • Exam 1: Friday, February 14, 3:30 pm - 4:20 pm, PCAR 192
  • Exam 2: Monday, March 9, 3:30 pm - 4:20 pm, PCAR 192
  • Final Project Presentations: Thursday, March 19 from 2:30 pm - 4:20 pm, location TBD

Other:

Goals (link)

The world has become data-driven. Domain scientists and industry increasingly rely on data analysis to drive innovation and discovery; this reliance on data is not only restricted to science or business, but also is crucial to those in government, public policy, and those wanting to be informed citizens. As the size of data continues to grow, everyone will need to use powerful tools to work with that data.

This course teaches intermediate data programming. It is a follow on to CSE142 (Computer programming I) or CSE160 (Data Programming).

The course complements CSE143, which focuses more deeply on fundamental programming concepts and the internals of data structures. In contrast, CSE163 emphasizes the efficient use of those concepts for data programming.

In this course, students will learn:

  1. More advanced programming concepts than in CSE142 or CSE160 including how to write bigger programs with multiple classes and modules.
  2. How to work with different types of data: tabular, text, images, geo-spatial.
  3. Ecosystem of data science tools including Jupyter Notebook and various data science libraries including scikit image, scikit learn, and Pandas data frames.
  4. Basic concepts related to code complexity, efficiency of different types of data structures, and memory management.

Assessment (link)

Here is how your grade will be calculated (Updated after COVID-19 cancelling end of in-person meetings at the end of the quarter):

  • Weekly programming assignments and exercises: 50.625% (6 assignments total)
  • Final project: 11.25%
  • Lecture Readings: 5.625%
  • Exam 1: 22.5%
  • Exam 2: 10%

This maps to the 4.0 grade scale roughly as follows. You will get at least the grade below for the percentages shown:

  • 90% at least 3.5
  • 85% at least 3.0
  • 80% at least 2.5
  • 75% at least 2.0
  • 70% at least 1.5
  • 60% at least 0.7

Homework

Most weeks, there will be a programming assignment that will involve writing Python code from scratch, processing and analyzing data, and answering open ended questions all based on the course material for that week. Programming assignments should be completed individually by each student.

Grading policies for programming projects: Your code will be graded based on the following criteria:

  1. Correctness: Does your code pass the tests we gave you? Does it pass some additional tests we've withheld?
  2. Design: Are there any larger design issues with your code (e.g. inefficiency or gross redundancy)?
  3. Style: Does the automatic style checker we've provided you report no issues with your code?
  4. Test quality: You will sometimes be asked to write tests for your homework assignments. Do these tests correctly identify problems in buggy implementations?

If you are not satisfied with a grade you receive on a homework, you may submit a regrade request. You are responsible for knowing the rules related to regrades outlined in the regrade policy. Please refer to this page to see deadlines for regrades since there is a limited time you may request them.

Final project

The culmination of the course is the creation of a final project that answers some interesting question using real-world datasets. There will be various check-points for the project throughout the quarter. More information about project specifics will be posted in the future. Students are encouraged to work in groups with at most three people in them, but we will allow individual submissions. The project's scope will be testing all of the learning goals listed in the previous section.

Lecture Readings

Before every lecture, there is an assigned reading with exercises that you must complete. The readings and exercises should take less than 30 minutes to complete and are meant to be a warm-up for the lecture that day. Hunter will assume you have done the reading and exercises when coming into lecture.

Lessons are scored on completion, correctness, and effort. You should strive to get the correct answers, but this is supposed to be low-stakes so you should not stress about it as it is just a warm-up. We do not grade on style or elegance of your solution as long as you meet any requirements in the prompt.

Readings and exercises are due by 2pm on the day of class it is assigned for. Late lecture readings are not accepted for credit, but you may go back and try any lessons after they are do if you want to review. Completing these readings/exercies on time counts towards the Lecture Readings part of your grade. It is okay to miss a few readings throughout the quarter, but the expectation is you are doing almost all of them.

Exams

There will be 2 timed exams in this course. These will be written exams and you will be allowed a single sheet of 8.5"x11" paper for notes (both sides).

Make-up exams will only be given in case of a serious emergency. If you miss an exam, even if you are sick or injured, you must contact Hunter BEFORE the exam (or arrange for someone to do so). You must show evidence that you are physically unable to take the exam. No make-ups will be granted for personal reasons such a travel or conflicting schedules. No accommodations will be made for students who arrive late to exams. The only accommodations for exams that will be made are those that correspond to the University's official accessibility guidelines, which must be reflected in your student account.

Late days (link)

Each student receives 5 "late days" for use on homework assignments. A late day allows you to submit a program up to 24 hours late without penalty. For example, you could use 2 late days and submit a program due Thursday 11:30pm on Saturday by 11:30pm with no penalty. Once a student has used up all the late days, each successive day that an assignment is late will result in a loss of 5% on that assignment. Regardless of how many late days you have remaining, you MAY NOT submit a program more than TWO days after it is due. Leftover late days have no impact on your grade.

Each assignment will have a corresponding reflection that will encourage you to reflect on your homework experience and to help us identify changes that need to be made to this assignment or later assignments in the future. These reflections are due at the same time as the assignment, but you may turn them in up to the late cut-off without having to use any late days.

If unusual circumstances truly beyond your control prevent you from submitting an assignment or attending an exam on time, you should discuss this with the course staff ASAP. If you contact us well in advance of the deadline, we may be able to show more flexibility in some cases.

Do note that Ed, the online system we use for turning in and grading assignments, does not enforce this late policy automatically. For example, it will let you turn in assignments after the late-cutoff, but we will not accept them while grading.

It is your responsibility to keep track of your late days for the quarter.

Final Project

The final project will be split into various checkpoints (labelled Parts 0-3) that are due throughout the quarter. Each group will have a number of "project late days" that you can use on most parts of the assignments. Groups with one person will have 2 project late days for the quarter while groups of two or more will have 4 project late days for the quarter. For example, if you submit Part 0 one day late and Part 2 one day late that will consume project two late days. If you have no late days remaining you will incur a penalty equivalent to 10% off that portion of the project. No matter how many project late days your group has remaining, you can only use:

  • ONE LATE DAY on Part 0.
  • ONE LATE DAY on Part 1.
  • THREE LATE DAYS on Part 2.
  • Part 3 cannot be submitted late.

For this assignment, you are STRONGLY encouraged to work with a partner or in a group of three; your group will submit one solution. Students in previous quarters reported that they learned a tremendous amount from working with another person. You are not required to work with others, but the extra late days and person-power of a group provides greater flexibility. We will have activities and a process for you to find a group if you want one, but haven't met someone in the course yet. Groups may not be larger than three people. Only one of you will submit the assignment — do not submit duplicates. All group members must contribute equally to BOTH the code and the report writing.

Academic honesty and collaboration (link)

We take academic honesty very seriously. Cheating not only deprives you of practice and understanding, but is also unfair to the rest of your class. Any assignments that has copied or paraphrased content will receive a zero.

You are still, however, encouraged to discuss assignments and concepts on a high level with your classmates so long as you:

  1. Make a serious attempt on each and every problem or coding project before discussing it with others.
  2. Limit cooperation to just group discussion and brainstorming. A good rule of thumb is that you should not take away any written notes, photographs, or other records from your brainstorming session.
    • Do not show your code to another student, nor should you look at another student's code directly. This includes current and former students, tutors, friends, paid consultants, people on the internet etc...
    • Do not post your homework solution code publicly online for any reason.
  3. Write up each and every problem in your own writing, using your own words. (Similarly, you must write code on your own).
  4. List each person you collaborated with at the top of your written homework or in your project writeup and which parts you collaborated on.

Naturally, when working on a partner projects, you're free to share your code and collaborate in full detail with your partner. However, you should not share your code with other groups.

If you have a specific question about your code or written work, the only person you may show your work is a member of the course staff.

Cheating: If you do not follow these rules, you will be considered to have cheated. Cheating is a very serious offense. If you are caught cheating, you can expect a failing grade and initiation of a cheating case in the University system. Cheating is an insult to other students, to the instructor, and to yourself. If you feel that you are having a problem with the material, or do not have time to finish an assignment, or have any number of other reasons to cheat, we have many mechanisms for getting help. Copying the work of others is not the solution.

For more details, see this Academic Misconduct page. If you're not sure if something constitutes cheating, send the instructor an email describing the situation.

Getting help (link)

There are two main ways of getting help:

  • Ed:

    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.

    We do not have a course staff email so if you have a question about a particular concept or part of the assignment that you do not want to post publicly on Ed, you should post privately so that the instructor or any of the TAs can answer. Students should prefer using Ed instead of emailing individual staff members. Obviously, if your concern is a personal matter that you want to talk to the instructor about, you may email the instructor individually.

  • Office hours:

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

One additional resource to keep in mind is the resources page on the class website. This page contains links to a variety of guides, tips, and tricks on material we don't have time to fully cover during lecture or section. The resources there are not necessarily required, but may be useful!

Software and textbooks (link)

Most of this course will be run on Ed. This includes lecture readings and exercises, as well as the discussion board and where you can work and submit your homework.

One of the benefits of using Ed is that it comes fully featured with an online programming environment. This means you do not need to install any software as long as you can work online. If you would like to set up Python for local development, we will use Python 3 installed via Anaconda on all programming assignments and Visual Studio Code is our officially supported IDE. You may use other installations of Python or IDEs, but the course staff may not necessarily be able to help you with any set-up related questions you may have. See Software for installation instructions

Lecture notes and section handouts will be shared on Ed or Google Colaboratory. All links to specific resources can be found on course website.

Religious Accommodations (link)

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 (link)

Your experience in this class is important to me. If you have already established accommodations with Disability Resources for Students (DRS), please communicate your approved accommodations to me 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 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 (link)

We thank Ruth Anderson, Valentina Staneva, Jake VanderPlas, Ariel Rokem, Joe Hellerstein, and Magdalena Balazinska for their contributions to designing this course. The initial materials for this course were created by Hunter Schafer with significant contributions by Josh Ervin, Zorah Fung, Erik Hoberg, Melissa Hovik, Dylan Jergens, Joely Nelson, Nicole Riley, and Erika Wolfe with input from Ruth Anderson. Special thanks to Magdalena Balazinska, Dan Grossman, and the eScience Education Working Group for their leadership in creating this course.