Programming Languages: Syllabus

CSE 341: Programming Languages

Note: All times on this website are listed in PDT (local time in Seattle). You can use this page or Google to convert times to your local time zone.

Overview

Teaching staff:

Times:
All course meetings will be conducted via Zoom.

  • Lecture: MWF 12:30pm-1:20pm
  • Sections:
    • Section AA: Th 12:30pm-1:20pm (Josie, Blake)
    • Section AB: Th 12:30pm-2:20pm (Daniel)
    • Section AC: Th 2:30pm-3:20pm (Omar, Kenny)
    • Section AD: Th 11:30am-12:20pm (Max)

Other:

Goals

Successful course participants will:
  • Internalize an accurate understanding of what functional and object-oriented programs mean
  • Develop the skills necessary to learn new programming languages quickly
  • Master many specific language concepts such that they can recognize them in strange guises
  • Learn to evaluate the power and elegance of programming languages and their constructs
  • Attain reasonable proficiency in the ML, Racket, and Ruby languages (and, as a by-product, become more proficient in languages they already know)

Class Sessions

All class sessions this quarter (lecture, section, office hours, etc.) will be conducted via Zoom. It is highly recommended that you familiarize yourself with the Zoom software and interface as soon as possible. Feel free to ask questions on the message board if you are having trouble with the technology.

Lectures and sections will occur at their regularly scheduled times (as defined by the UW Time Schedule). Office hours will also occur at scheduled times. All times (including class times and assignment due times) are given in PDT (local time in Seattle). You can use this page or Google to convert times to your local time zone.

Recordings and Privacy

Lectures will be recorded and recordings released to students. Theses recordings will capture the presenter's audio, video and computer screen. Student audio and video will be recorded if they share their computer audio and video during the recorded session. These 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.

he 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).

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:

  • Homework Assignments (7-8 total): 70%
  • Quizzes (3-4 total): 30%

Homework

Most weeks, there will be a programming assignment that will involve writing code in one or more of the programming languages being used in class. These assignments are designed to both develop and assess your understanding of the topics covered in class. 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 meet the requirements in the writeup, including both functional and implementation requirements?
  2. Style: Have you written your code using good style and proper idioms for the language in question?
  3. Test quality: Do these tests you write correctly identify problems in buggy implementations, including in unusual or exceptional cases?

Homework assignments will be submitted via Gradescope, and will be run through an automated tester that will verify that the correct files have been submitted, confirm that the code does not contain syntax or type errors, and perform a few other simple checks. Code that does not pass these tests will be subject to an automatic 15% deduction. The automated testing is nowhere near exhaustive, and passing the tests does not guarantee any particular score. Be sure to test your own code thoroughly!

Challenge Problems

Most homework assignments will include one or two "challenge problems" at the end of the assignment. These problems are designed to provide an opportunity to work on an interesting and optional extension of the homework assignment. They will have a small (but non-zero) impact on your grade– typically you will be able to earn no more than 5% of additional credit on an assignment for completeing the challenge problems.

Challenge problems will usually be much more difficult than the credit they are worth suggests, and may be less precisely specified and/or less well-calibrated for difficulty and/or time. These problems should only be attempted after the rest of the assignment has been completed, and only if you are interested in the material and would like to explore further. Working on challenge problems to attempt to make up for past or future struggles on assignments will most likely not be an effective use of your time.

Quizzes

Quizzes will be given roughly every two weeks; the specific material covered by each quiz will be announced at least a week before the quiz occurs. Quizzes may include a combination of conceptual and/or programming questions.

Quizzes will be conducted online, and will be open-note, but should be completed individually unless otherwise indicated. Quizzes will be available for an extended period of time, but will need to be completed within a shorter time after they are started. For example, a quiz might be available for 24 hours but have a time limit of one hour, meaning that you can start the quiz anytime during those 24 hours, but you must complete it no more than one hour after you begin working.

Late days

Homework is due at 11:59:59 PM PDT on the due date. If you are in a different time zone, be sure to verify what time this corresponds to where you are. This deadline is strict.

To accomodate unexpected situations that may require you to miss a deadline, each student may use up to 2 "late days" on each homework assignment. 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:59pm on Saturday by 11:59pm with no penalty. However, work submitted after the due date may not be graded and returned before the next assignment is due and/or may be returned with less feedback. No credit will be granted for work submitted more than two days after the due date without prior approval from Brett. Leftover late days have no impact on your grade.

You are strongly advised to treat your late days as a "safety net" for emergencies or unexpected situations and to plan to submit assignments on time (or early!), especially given thei uncertainty in the world this quarter. You are also advised to not skip class (lecture or section) to work on assignments– we have a great deal of experience that suggests this will hurt you in the long run.

If unusual circumstances truly beyond your control prevent you from submitting an assignment on time, you should contact Brett as soon as possible, and before the due date. We will be more likely to be able to show flexibility if you contact us well in advance of the deadline.

Academic honesty and collaboration

The following describes the CSE 341 Academic Integrity policy. You are responsible for fully understanding and abiding by this policy. If any part of the policy is ambiguous or unclear, please contact the course staff immediately to request clarification. Misunderstanding the policy will NOT be considered a valid excuse for violating it.

  • Motivation: A course in which students do not accurately present what they know and what work they have done is worse than having no course at all. Your instructor and your fellow students expect and deserve a basic respect for the integrity of this course and an environment where we can all focus on learning. Therefore, this document establishes a clear understanding with the expectation that it will never be an issue.
  • Bottom Line: While we want you to learn from your fellow students and discuss the course material, the work you complete must be your own. If you are ever unclear about how to represent what work you have done, (a) ask and (b) describe clearly what you have done. If you do, the worst that will happen is you will lose some credit on an assignment. This is much better than the alternative.
  • Collaboration Policies: You are encouraged to discuss the material in this course, including homework problems. But you must produce your own homework solutions and you must not look at other students' solutions or other information that takes away the intellectual challenge of the homework.

    Unless specifically told otherwise, you are to complete assignments individually. You may discuss assignments in general terms with other students including a discussion of how to approach a problem, but the code you write must be your own. The intent is to allow you to get some help when you are stuck, but this help should be limited and should never involve details of how to code a solution. You may not have another person (current student, former student, tutor, friend, anyone) “walk you through” how to solve an assignment.

    Copying someone else’s homework or receiving unfair help completing your assignment is cheating (see below), as is copying the homework from another source (the web, other classes, previous course offerings, etc.). We will run plagiarism-detection tools on your submissions.

  • Cheating: Cheating is a very serious offense. If you are caught cheating, you can expect a failing grade on the related assignment and/or initiation of a cheating case in the University system. Cheating is an insult to your colleagues, to the instructors, to the department and major program, and most importantly, to you. 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, then talk with the instructor. Copying others’ work is never an acceptable solution.

    To avoid creating situations where copying can arise, never e-mail or post your solution files. When using the class discussion board, do not post code that is an attempt to solve a homework problem. If in doubt about what might constitute cheating, send the instructor email describing the situation.

  • Online Solutions: Solutions to some of our homework problems are probably, unfortunately, online. Of course, you should not look at such solutions. You are further encouraged to bring them to the attention of the course staff. In general, the course website should have the links you need to complete the assignments. Beyond that, you are allowed to search the web to learn more about the course material, but not to reduce the core intellectual challenge of an assignment. If the difference between the two is not clear, then ask. When in doubt, do not click on the result of a web search that looks like a homework solution. Do not web-search for terms specific to our homework problems, like the name of the function we ask you to write.

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

Relation to Coursera Course

A course very similar to CSE 341 is available on the online course platform Coursera. To date, thousands of people have participated in this course. This fact should have little or no impact on students enrolled in CSE 341.

The most important thing to note is that students enrolled in CSE 341 are not allowed to register for, participate in, or otherwise access materials from the Coursera course. Doing so constitutes a violation or the academic integrity policy and will be treated as such. (Similarly, Coursera students should not be interacting with CSE 341 or its materials.) If you have previously participated in the Coursera course, you may still take CSE 341, but you must not access or utilize any of your work from the prior course. (If you completed the Coursera course, you are likely to find CSE 341 rather redundant, and might consider if it is a good use of your time.)

For more information, please read the full policy on the relation of CSE 341 to the Coursera course. Contact the course staff if you have any questions.

Getting help

Learning new programming languages and paradigms can be very challenging, even for experienced programmers, and it is expected that you will struggle at some point during the quarter. Please don't be afraid to ask for help if you don't understand something or need assistance with assignments or material. 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.

    Whenever possible, please prefer posting a public question so that other students can benefit from your question and its reponse. However, you should never post code from your assignments in a public post. Try to phrase your questions in a way that does not require referencing your actual code. Doing so will not only ensure you are not violating policy, but may help you better understand your question just by asking it!

  • 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.

    No appointment or notification is necessary to attend office hours, however please note that office hours are public and privacy cannot be guaranteed. If you have a personal quesiton that you would prefer to discuss in private, please contact Brett or your TA and request a separate appointment.

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

Previous instructors of this course have developed written reading notes and videos for the material in the course. These will be used in lieu of a traditional textbook.

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 us. If you have already established accommodations with Disability Resources for Students (DRS), please communicate your approved accommodations to Brett 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

Credit for the original development of this incarnation of CSE 341 goes to Professor Dan Grossman, upon whose excellent materials this offering has been built. Thanks also to Zach Tatlock, James Wilcox, and a host of other previous instructors and TAs of CSE 341 who have developed, edited, updated, and provided feedback on various materials and content for the course.

Credit for the development for this website template goes to Hunter Schafer and the staff of CSE 163.