Syllabus for CSE 190P: Data Programming

Welcome to CSE 190P!

Computational methods permeate the sciences, engineering, and even the humanities. A successful professional requires a foundational understanding of computation and practical data analysis in order to participate in modern scientific and engineering activities.

CSE 190P, “Introduction to Data Programming with Applications”, 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.


In CSE 190P:

Class logistics: times, staff, book

Lectures: MWF 10:50-11:50, June 18 to August 17, in EEB 045
Sections: Th 10:50-11:50, room LOW 206
The calendar lists lecture topics and assignment due dates, with links to the materials.

Forum (bulletin board):
You may use the forum to ask questions — and to give help to other students. You can optionally subscribe to forum notificatons, so that you receive email whenever a new posting is made on the forum.

Instructor: Michael Ernst
Instructor: Bill Howe
TA: Dun-Yu Hsiao
Staff email:
If you have questions, please ask us! We want to help you, but we are bad at reading minds.
Please use the staff email alias (or the forum): you are likely to get a faster and more authoritative response than if you send email to just one staff member.
Office hours are listed on the course calendar. You are also welcome to set up additional meeting times with the course staff. For example, see Michael Ernst's calendar for available times.

When using the staff email alias (but not the forum), 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 (cut and paste or attach the exact output, don't just say “something went wrong” or describe it vaguely), and what you had expected to happen. This will enable us to help you more effectively.

Books: Think Python, 2nd edition. Freely available online in HTML and PDF. Don't use the printed version, which is still in the first edition. There is an interactive version of “How to Think Like a Computer Scientist” (the first edition of “Think Python”), which lets you type and run Python code directly while reading the book.
The Python Tutorial, on the Python website.
Readings are assigned for each lecture — see the calendar or the lecture list for details. Please do the readings before the lecture, so that we can make better use of lecture time and answer your questions about the readings.
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.
More resources: Think Python is 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 documentaton.

Software: Please see the CSE 190P computing resources webpage for information about installing Python or getting a login account on a computer that has Python installed.

Why another programming class?

UW offers a variety of excellent introductory programming classes. We provide a webpage to help you decide among them.

Some characteristics of CSE 190P include:


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 a college or AP programming class, you are not allowed to take the class. We do 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.

Finally, you must be willing to work diligently, and willing to ask questions when you are confused. We know you can succeed, and we want to help you succeed.

Assignments and grading

Assignments are available from the calendar and also, redundantly, on a separate homework webpage.

You will submit your assignments via Catalyst CollectIt (a.k.a. Dropbox).

Your grade is determined by:
Assignments 60%
Exams 30%
Participation 10%

You will complete one programming assignment each week. There are often some written questions on each assignment as well. We will weight your lowest two assignments half as heavily as your other assignments. That means that if you do well overall, but have trouble on just one or two assignments, then your grade need not suffer.

We urge you in the strongest possible terms to get started on your assignments early. It's more efficient to think about problems and then be able to walk away from them — you will spend much less time overall than if you try to do all the work at once at the last minute. Furthermore, you will be able to ask for and receive help.

The exam grade will be determined by:

Your participation grade includes instructor discretion, particularly if the course staff feels your grades do not accurately reflect your true understanding of the material.

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. Rather, the staff discusses each student individually. 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 generally due at 11pm. Catalyst CollectIt makes no allowances for late work, so give yourself enough time to upload your work.

Each student is permitted 4 late days to use during the quarter. Each late day permits you to submit an assignment up to 24 hours late. You may use up to 2 late days per assignment. Each late day is atomic; for example, you cannot use 8 hours of a single late day on each of three assignments.

Important: To submit work late, email before the due date (either original or extended by a previous late day) and request to use a late day.

It is up to you to allocate your late days in the manner most advantageous to you. You may wish to reserve some in case of unexpected emergencies.

Except as extended in advance by one of your 4 late days, or in case of hospitalization, late work will receive no credit.

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 190P and elsewhere. In particular, your assignments must represent your own work and understanding. The following guidelines apply unless an assignment specifically states otherwise. You are not allowed to copy materials 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.) You are allowed to utilize Python libraries in your solution. You are encouraged to talk to your classmates about problem solutions ideas, and you may reuse those ideas, so long as you do not reuse code. You are encouraged to use books, the Internet, 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 answer is in your long-term, not short-term, memory) generate the code based on your own understanding.

Academic misconduct such as plagiarism is grounds for failing the class.

If you have any questions about acceptable behavior, please ask the course staff. We will be happy to answer your questions!