15-150: Functional Programming, Spring 2024

Table of Contents

Academic Integrity

All students are expected to read, be familiar with, and comply with, the CMU Policy on Academic Integrity.

In addition you must read, be familiar with, and comply with the following 15-150 policy rules:

Any work submitted as a homework assignment, or examination must be entirely your own, developed this semester, and must not be derived in part or whole from work of others. For homework assignments, you may discuss problems with other students who are currently in the course, but only as outlined in the section about cooperative learning below. You may consult a current teaching assistant for this course or a tutor provided by Academic Development, but you should not ask these individuals for detailed help in writing homework solutions.

You must not search the internet (or library or other external source) for homework or exam solutions, and you must not use solutions developed in prior semesters of this course or in related courses. If you took this course in a prior semester you are not allowed simply to hand in verbatim copies of any solutions from before, including your own work. You may consult your own prior work in developing new solutions, but you should write all your work for this semester from scratch.

You must not look at or alter any part of anyone else's homework solution or exam paper. In particular, you must not copy, use as a guide, or cut-and-paste, any homework solutions or exam solutions of another student, or provide such solutions to another student.

You should take appropriate care to prevent other students from cheating, by safeguarding your own work with proper protection to ensure privacy, and by not allowing other students to have access to your files or computer. In particular, you should compose and store all your work in a private location (your local computer, the private directory of your AFS space, password-protected online TeX-editing services).

If you have any question about what is appropriate, please ask the course staff.

Cooperative Learning

To facilitate overall learning, it is permissible for you to discuss lecture notes and conceptual topics with others. It is also permissible for you to discuss a homework assignment with other students who are currently in the course, provided that you adhere to the following policy:

Citing sources: For each assignment, you should submit a file called collab.txt in which you describe any discussions you had with other students and cite any other sources. (For instance, if you took this course in a previous semester and are referring to any material from that course, including your own work, you should also report that in this file.) Here are two examples of entries that we might expect to see in two different collab.txt files for two students who discussed a problem on an assignment:

Notice that both students should describe the discussion, even if information flows in one direction. Of course, this is an extreme case, and in general we would hope to see examples of entries suggesting a two-way discussion.

We may run automatic code comparison software (such as MOSS) on homework submissions to compare solutions from this semester and solutions from earlier semesters. This software is very good at detecting similarities that suggest collaboration or other cheating during code design, even after an attempt to obfuscate. The signal-to-noise ratio in MOSS reports is usually very distinctive, so we can tell if any part of a student's handed in work is derived from some other source. If MOSS detects a collaboration not reported in collab.txt, that will raise a red flag and may be considered cheating or plagiarism.

Any use of AI (such as ChatGPT) on homework will be classified as cheating. A student found to have cheated will be penalized, may fail the class, and may be reported to the university authorities for further discipline.

Violations of the policy outlined above will be investigated, and may result in zero scores on any assignments brought under suspicion and a report to the university authorities. This may also lead to a disciplinary hearing followed by suspension or expulsion from the university. In short: don't cheat! It isn't worth the risk.

Homework Assignments


Each student has 3 grace days available to them during the course of the semester. You may use a maximum of one grace day on any assignment, and they are applied automatically. To use a grace day on an assignment, submit your work for the assignment by the day following the deadline at 11:59 PM. If you submit past this time or attempt to use a grace day when you have none remaining, then we reserve the right to give a 0 on the assignment.

Please don't ask for an extension in place of using a grace day.

(The purpose of grace days is so that you can quickly give yourself a 1-day extension, for any reason you choose. This includes out-of-town trips, health issues, lack of time, WiFi problems, car trouble, etc. Grace days are not intended solely as a time-management tool, but a convenient way to give yourself an extension.)


Any source code that you submit must compile cleanly with an unmodified version of the starter code for that assignment. If you submit source code that does not compile cleanly, you will lose a significant amount of credit for that assignment. In particular, the TAs will not grade any of your code.


Each homework assignment will come with a check script. We will not grade assignments that do not pass all of the checks. You should not consider your assignment submitted until you have run the check script and passed all the tests.

The script verifies some very basic properties about your submission: that none of the files have zero size; that all the files are named correctly; that your code compiles with clean copies of any starter code; that any PDFs seem to be valid; etc. In particular, it is not a grading script. Passing the check script means that your assignment will be graded; it does not mean anything about the score you will receive on it.

You should submit written answers as typeset PDFs on Gradescope. Please be sure to select the correct pages for each question on Gradescope. The PDFs that you submit containing your written answers must be valid and complete. Invalid PDFs will not receive credit for anything that might have been in them. Be careful to submit your solution PDF for an assignment, not the assignment writeup or some other PDF; those are invalid submissions.

After submitting an assignment, verify that you submitted everything properly, by examining the submission on Gradescope. It is your responsibility to ensure that the assignment was submitted properly. Leave plenty of time for this visual verification; last minute submissions are very very risky.

We do not release solutions to the homework assignments.


You can find the official style guide on the resources page. Violating the mandatory style guidelines on a homework will result in losing style points for that assignment. These style deductions are permanent after the due date passes.


There will be two midterms and one final examination in this course. Each midterm will be given during a class period, the final exam as scheduled by the registrar.

Unless otherwise announced, all exams will take place in-person.

You may bring one double-sided 8.5" x 11" page of notes to the midterms and the final exam. You may not refer to any other person or source, besides the course staff, during the midterms or final exam.

Missed examinations count as zero credit. Showing up late for an examination does not extend the end time of the exam. Except in the case of dire medical or family emergencies, no make-up examinations will be administered.

You must take both midterms and the final exam to pass the class. Failure to take an examination will result in a failing grade for the course.


Lab attendance is mandatory and is worth 10% of your grade.

Lab solutions will be added to the lab assignment on Canvas the day after the lab.

Making Up a Lab

If for an official reason (i.e., interview, conference, special academic event, illness, etc.) you cannot attend lab, you can still receive credit. You must inform your lab TAs prior to the lab that you will be missing, or else you cannot earn credit for attending lab. You should then come to remote OH on the following Saturday or Sunday and show a TA your completed lab assignment.

The process for earning lab attendance credit will be explained in the first lab.


All lectures will be conducted in-person (see calendar/SIO for rooms), unless otherwise announced.

The best way to learn the material is to participate in lecture, by taking notes and asking questions.

Please take notes by writing (preferably) or typing. Do not record or tape lectures electronically, whether by audio or video, without express written consent of the instructor or Disability Resources.

Note Taking

Research has shown that taking notes, by hand, using a pen or pencil is a vital part of learning for most students. Taking notes on a laptop is a poor substitute. In fact, research has shown that you are better off taking notes by hand and then throwing those notes away, than taking notes on a laptop. It seems that the act of processing material into handwritten notes involves the parts of the brain responsible for learning, while the act of transcribing class material on a laptop largely bypasses those parts. You can learn about this research, which some people find counterintuitive, here.

It does seem reasonable that taking notes on a laptop or tablet using a stylus probably is similar to taking notes with pencil, although we are not aware of any research that actually confirms this intuition. Conversely, it seems reasonable that simply taking photos or screenshots of a lecture is probably even worse than taking notes on a laptop.

Office Hours

We use an online queue, which can be found here: https://15150q.fun/.

Saturday and Sunday TA office hours will be held remotely; all other TA office hours are in-person.

If you are attending remote OH:

During office hours, we limit the time a TA spends with one student to 15 minutes in order to make sure every student has a chance to ask questions. During busier office hours, we may limit the time to 10 minutes. It's often useful to take some time to work things out after you've gotten help from a TA so please avoid placing yourself on the queue directly after being helped. In order to promote this, there is a 15 minute period where you will not be able to join the queue after being helped by a TA.

Grading Policy

last modified 18:55, 15 Jan 2024