CSE 114A: Foundations of Programming Languages / Spring 2024


Course Description

Problem solving emphasizing recursion, data abstraction, and higher-order functions. Introduction to types and type checking, modular programming, and reasoning about program correctness. Prerequisite(s): CSE or CMPS 101.

Lecture: Tuesdays and Thursdays from 3:20pm to 4:55pm in Oakes 105.

Discussion Sections:

  • Wednesdays, 9:20-10:25am in E2 194 (instructor: Shun Kashiwa)
  • Thursdays, 8:00-9:05am in Kresge 3101 (instructor: Shun Kashiwa)
  • Fridays, 10:40-11:45am in Crown 208 (instructor: Nathan Liittschwager)
  • Fridays, 1:20-2:25pm in Crown 208 (instructor: Jonathan Castello)

Lindsey’s office hours: Mondays, 3:15-4:15pm in E2 349B.

TA Office Hours and Tutoring Hours: See the calendar below for availability.

Course announcements and discussions happen on the CSE114A Zulip organization. Contact course staff if you need an invitation to Zulip.

This week

Coursework

  • We evaluate students on the basis of class participation, homework assignments, code walks, a midterm exam, and a final exam.
  • Assignment regrades must be requested within two weeks of receiving the graded assignment.
  • A valid regrade request should include a specific reason for the regrade.
  • Remember that we try very hard to assign partial credit fairly and consistently, so unless an actual mistake occurred, your regrade request may be declined to ensure fairness to all students.
Class participation

Involves answering questions in class via Google Forms and completing occasional surveys outside of class.

5%

Homework assignments

There will be six programming assignments, mostly in Haskell. The first two are individual assignments, but the remaining assignments may be worked on in groups of at most two.

25%

Code walks

Once during the quarter, you'll be asked to (individually) complete a code walk. You'll sign up to meet with a member of course staff and give them a tour of the homework assignments you've submitted thus far.

5%

Midterm exam

Will be held during lecture (see schedule). Closed book, but you may use a double-sided “cheat sheet.”

30%

Final exam

Held on Monday, June 10, 8:00-11:00am. Closed book, but you may use a double-sided “cheat sheet.”

If your final grade is higher than your midterm grade, it will replace your midterm grade, but you must take both the midterm and the final.

35%

Extra credit

Up to 5% extra credit for superstar participation on Zulip (asking great questions, providing great answers, offering useful resources to your classmates), as determined by course staff.

+5%

Late Policy

  • You have a total of four late days that you can use throughout the quarter as you need them.
  • A late day means anything between 1 second and 23 hours 59 minutes and 59 seconds past a deadline.
  • You should save your late days for when unexpected circumstances arise that prevent you from turning in your homework on time.
  • It is very unlikely that additional extensions beyond these four days will be approved, so use them wisely.

Academic Integrity Policy

Like most courses, this course includes learning activities (of which assignments are a part) and evaluation activities (of which exams are a part). You are mostly free to engage with the learning activities in the way that best helps you learn. But the learning activities are designed to help you pass the evaluation activities, where you have less freedom regarding how to engage. So, be advised that it's in your best interest to engage appropriately with the learning activities.

What does "appropriate" engagement with assignments in this course look like? You can:

  • Ask the course staff for help and advice as needed. That's what we're here for.
  • Ask your classmates for help and advice as needed, but don't copy from anyone else: once you understand the concepts, you must write your own code.
  • Consult resources suggested by the course staff.
  • Use publicly available resources you find, such as online documentation.

Additionally, you must cite any sources you use. When you submit a homework assignment, you must include at the top level of your assignment repository a file called INTEGRITY.md that gives credit to all sources you used while working on the assignment. So that you have an idea of the level of detail that is expected, we have provided an example INTEGRITY.md file. Thorough citation is the way to avoid running afoul of accusations of misconduct.

During code walks, the integrity statements you submit will be good sources of discussion topics -- not to try to catch you out, but rather as an opportunity to talk with the course staff about the parts of the assignments you found difficult, and whether the resources you made use of were effective for you.

Policy on the use of generative AI tools

You are welcome to try using generative AI tools, such as those based on large language models (LLMs), for homework assignments. Such tools can be incredibly useful, and it may be worth your while to learn how to use them.

That said, if the tool generates answers that you don't understand, are not reasonably confident of the correctness of, or would struggle to explain in a code walk, then the tool isn't helping, and you should seek help from the course staff instead.

It's important to be aware of the limits of generative AI tools, and of how to use and cite them properly. In particular, here's what you need to know for this class:

  • You must acknowledge your use of generative AI tools. If you use generative AI tools for any of the work you submit for this class, you must cite your sources as described above, explaining what tool you used, what you used it for, and exactly what prompts you used to get the results. Failure to do so is academic misconduct.
  • If you provide low-effort prompts, you will get low-quality results. You will need to refine your prompts in order to get good outcomes. This will take work.
  • Don't trust anything that a generative AI tool says. It will often hallucinate plausible-but-wrong answers to questions. Assume it is wrong unless you either know the answer or can check with another source. You will be responsible for any errors or omissions provided by the tool. It works best for topics you understand.

(This policy is based on the article "Why All Our Classes Suddenly Became AI Classes" by Ethan Mollick and Lilach Mollick.)

Of course, we haven't even begun to address the topic of the myriad environmental, social, and ethical problems involved in the training, deployment, and use of LLM-based tools, but that's a topic for another course.

Diversity and Inclusion

We strive to create a learning environment that supports a diversity of thoughts and perspectives, and respects each student's individuality and identity. We make mistakes, though, and if there is a way we can make you feel more included, please let one of the course staff know in any way you feel comfortable. We also expect you as a student to honor and respect your classmates and abide by the UCSC Principles of Community. Building an effective learning environment is only possible with mutual respect. Each student must feel comfortable admitting when they don't understand or risking being wrong in public. Please make an effort to protect this space. We do not tolerate intolerance. If you experience any sort of harassment or discrimination, please contact the instructor as soon as possible. If you prefer to speak with someone outside of the course, please see the options below.

DRC accommodations

UC Santa Cruz is committed to creating an academic environment that supports its diverse student body. If you are a student with a disability who requires accommodations to achieve equal access in this course, please submit your Accommodation Authorization Letter from the Disability Resource Center (DRC) to me using the DRC Accommodate system, preferably within the first two weeks of the quarter. I'm eager to discuss ways we can ensure your full participation in the course. I encourage all students who may benefit from learning more about DRC services to [contact the DRC](https://drc.ucsc.edu/contact/).

Previous Offerings


Instructor

Teaching Assistants

Jonathan Castello

Nathan Liittschwager

Shun Kashiwa

Tutors

Aidan Maney

Bhaswati Das Gupta

Brian Nguyen

Eesha Krishnamaguru

Jason Wu

Karthi Sankar

Roger Li

Sulayman Asif