CSE 163, Spring 2020: Syllabus

CSE 163: Intermediate Data Programming

Note: Times are listed for the PDT time zone (Seattle's time) in 24-hour clock time (e.g. 14:30 is 2:30 pm). You can use this or another time converter to convert to your local time.

Overview

Teaching staff:

Times:

  • Class Sessions: 14:30 - 15:20 (PDT), on Zoom

Other:

Goals

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.

Class Sessions

Motivated by the shift to the online quarter, we will be transitioning to a "flipped classroom" model for our instruction. To accomplish this the lecture content (called "lessons") will be done asynchronously via our learning management system Ed and our "in-person" class sessions (via Zoom) will focus on structured activities to practice the skills and ideas you learned in the lesson. This mean the majority of your time seeing the course content will be on your own time outside the class session, while the class session will be hosted to give you practice on the material you saw in the lesson you completed earlier.

Motivation

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 this classroom model:

  • It is probably familiar to you.
  • It is probably familiar to most of your instructors (it's how they learned, so it must work, right?).

Notice this list does not contain, "effective for student learning". Unfortunately for this classroom model, most evidence has shown that it's quite ineffective of achieving that goal!

Think of learning programming or data science (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 attending an online Zoom meeting three times a week and then a quiz section once a week? Probably no one! Because that's obviously not learning how riding a bike works! To learn how to ride a bike, you have to actually go out there and ride the damn 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 learning by doing. Sitting passively in a lecture listening to someone talk fails at accomplishing this fundamental aspect of learning.

The flipped classroom model is built around fostering an environment for effective practice. Instead of coming to lecture to hear Hunter talk about some idea and then trying to go practice the idea at home (a much harder task), we flip this whole model around! You will read and watch a video about the concept first (at your own pace) and then come to our class session to work with your classmates, the TAs, and Hunter 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.

Details

Every Monday, Wednesday, Friday there will be lessons on Ed that you need to complete that day by 19:00 (PDT). The lesson will be available after the previous day's class session, so you are free to complete it on your own time, as long as you finish by the deadline that night. Notice that the deadline for a lesson is AFTER the time for our class session that day (14:30 - 15:20 PDT). This is because we think the most effective way to learn this content follow the these steps:

  • Complete Reading: Do the reading/video portion of that day's lesson. You can look over practice problems, but you want to spend the time in the class session working on them.
  • Attend Class Session: Come to the class session with questions and ready to work on activities and practice problems with peers.
  • Complete Lesson: Take the skills you practice and go back to the lesson to review anything that you struggled with and finish any problems you didn't solve during the class session.
  • Reflect: Take a minute to look back on what you learned. Think about the following questions (and maybe write down your answers in your notes!):
    • Why did we learn this concept?
    • How does this concept relate to everything we have seen so far?
    • Can I describe this concept in my own words?
    • Write down some "tips" for if you were going to help a colleague who was struggling with this content.

There are also "quiz sections" on Thursdays that will also operate to provide structured practice. Quiz sections will differ from our M/W/F class sessions in that they are smaller and run by the TAs and will focus on tying together concepts from the various days to help prepare you for your weekly homework assignments! Attendance in the class sessions and quiz sections is not recorded and used as part of your grade (but it is used for the bit of extra credit described below). However, it is expected that you are showing up and participating as much as you can so that you are maximizing your learning!

For more details for how lessons are graded, please see the section below on assessment.

Privacy

During the scheduled class sessions, most of the time will be spent having you work with your peers in small groups. This will be facilitated by Zoom's Breakout Room feature. There will be some time, particularly at the beginning, mid-point, and end where the instructor will have everyone in one room to talk about some high-level concept or highlight a key point. These moments will occur outside of breakout rooms in what is referred to as the main room. Since these few moments of lecture might be useful to students who can't make the class session, we will record the class sessions to be posted online. Only the instructor's video and screen will be recorded in the main room, no recordings will happen in the breakouts. If you were to speak in the main class room during the class session, that will be recorded. The chat is not made available in the recording, but it is being stored by Zoom.

The recordings will only be accessible to students enrolled in the course to review materials. These recordings will not be shared with or accessible to the public. The University and Zoom have FERPA-compliant agreements in place to protect the security and privacy of UW Zoom accounts. Students who do not wish to be recorded should:

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

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

Assessment

Here is how your grade will be calculated:

  • Weekly programming assignments and exercises: 70%
    • There will be approximately 6 assignments and a HW0 in total
  • Completing (almost) Daily Lessons: 20%
  • Final project: 10%

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 assignments: 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.

Lesson Completion

As stated above in the Class Sessions section, the course content will be delivered asynchronously via our learning management system Ed. Each day of class (Monday, Wednesday, Friday), you will complete the assigned Ed lesson for that day. A lesson will be made available before the day it is due and can be completed at any time before its due date at 19:00 (PDT). Lessons are graded on completion, correctness, and effort before their due date. Even if you get stuck solving a problem, just try your best since the goal here is your learning, not the points! You are encouraged to save solving the problems in the lesson for the class session that day if you plan on attending so that you can work on them with your peers. Regardless if you attend the class session, you will need to complete all of the readings, videos, and problems by 19:00 (PDT) on the day the lesson is due.

We do not grade your lessons on style or elegance of your solution as long as it meets all requirements in that problem. Late lessons are not accepted for credit, but you are welcome to go back to a lesson and try it after the due date to review.

It is okay to miss a few lessons over the quarter (especially given the circumstances with COVID-19), but the expectation is that you are doing almost all of them on time so that you are keeping up with the course content. Notice we did not define what "a few" is. This is because we want you to focus on the learning aspect rather than the points! Just do your best and everything will be okay!

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.

Participation Extra Credit

Before explaining what this extra credit policy means, we want to emphasize a very important point about extra credit in this class. Completing extra credit will NOT have a major impact on your grade: we will keep track of extra credit independently of your homework and use them to bump up borderline grades at the end of the quarter. This means completing extra credit will not be an effective way of making up for missed/incomplete assignments or boosting your grade.

As we mentioned earlier when talking about the learning process, we emphasized the value of collaborative learning in the learning process. A good learning environment is built by the students participating in the class and can only be incentivized, not built, by the instructors. To emphasize this active participation in this class environment, we will offer a small amount of extra credit for being an active participant in the course. Participation can mean many things, and especially since there are so many circumstances with respect to the pandemic we are facing, we want to honor that not all students can attend the class sessions on time. To that end, we will measure participation in the class by activity on the course message board. This can be from asking questions about course concepts, adding on to the discussion, or asking a follow-up questions to help clarify a point.

This activity can be anything about the course content as long as it's public, adds to the course in a positive way (i.e. not spam, not a blatant repeat of another question, etc.), and it should not be about a programming assignments specifically. For example, "I'm running into this bug on HW4, can you help me?" does not meaningfully add to the whole class (since it a bug specific to your implementation which you should not share). A good example that adds to the course as a whole is asking or answering a question like "Can someone explain why this example from the lesson returns a Series?".

We will analyze this activity throughout the quarter and make adjustments to these borderline grade cases as described in the first paragraph if necessary. This measure of activity will be kept internal to the course staff, so you should not ask questions like "Does this count for participation?" or "How much have I participated on the message board?".

Late Days

Each student receives 8 "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 23:30 PDT on Saturday by 23:30 PDT with no penalty. Once a student has used up all their 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.

If unusual circumstances truly beyond your control prevent you from submitting an assignment, 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.

Late days do not apply for lessons. There is a separate late day system described in the subsection below for the final project.

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.

Project Late Days

The final project will be split into various checkpoints (labelled Parts 0-3) that are due throughout the quarter. Each group (you're considered a group even if it's just yourself) will have 4 "project late days" that you can use on most parts of the assignments. Project late days work much like homework late days, but can only be used on parts of the project. For example, if you submit Part 0 one day late and Part 2 one day late that will consume two project late days. If you have no late days remaining you will incur a penalty equivalent to 10% off for each extra day late for 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 can easily collaborate with your group over Zoom! You are not required to work with others, but is strongly encouraged for the learning experience and because extra 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

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.
    • Some of the lessons might have multiple choice answers. These are generally much more difficult to talk about at a high level since we don't want you telling anyone which answers are correct or incorrect. Again, your discussions should be at a high level and should not discuss the actual answers.
  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

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

Most of this course will be run on Ed. This includes lessons 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 (a fancy term for text editor). 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. Since we will be remote this quarter, we do not recommend doing this setup right away since it is difficult to debug a setup remotely. When working on your final project, you might want to install this if your dataset is too large to be stored on Ed.

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

Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UWs policy, including more information about how to request an accommodation, is available at Religious Accommodations Policy. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form.

Disability Resources for Students

Your experience in this class is important to 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

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. The course website was completely redesigned from the ground up by Wen Qiu. Special thanks to Magdalena Balazinska, Dan Grossman, and the eScience Education Working Group for their leadership in creating this course.