Carnegie Mellon University Systems Courses, Fall 2019: Academic Integrity Policy

The following policy applies to courses based on the textbook Computer Systems: A Programmer's Approach (CS:APP) taught at Carnegie Mellon University. These include the following:
Introduction to Computer Systems
15-213, 18-213, 14-513, 15-513, and 18-613
All of these courses are subject to the university policy on academic integrity. Courses in CIT (18-213, 14-513, and 18-613) are also subject to the CIT policy on academic integrity. This document describes policy issues specific to these courses.

All of these courses have adopted the same standards as to what constitutes an Academic Integrity Violation (AIV). As is noted in the section below titled “Enforcement,” there may be course-specific guidelines regarding the possible penalties when an infraction occurs. Consult the syllabus for your course to get further information on penalties.

Guiding Principles

Our policy is based on the following beliefs, gained through many years of experience:
  • Understanding the operation and implementation of computer systems is best learned by hands-on activities: writing, debugging, measuring, and exercising programs that expose the relevant system principles.
  • Developing programs from scratch, or with limited starting code, requires using design principles and logical thinking that are much deeper than can be gained by copying and modifying an existing implementation. Making use of unauthorized sources diminishes the educational value of an assignment.
  • Although teamwork and collaboration are important real-world skills, it is important to first gain the core competencies that enable individuals to serve as effective team members. These courses are designed to teach and assess these core competencies. Unauthorized collaboration diminishes the educational experience and the reliability of our assessments.
Based on these principles, we provide the following guidelines on what forms of resource use, resource sharing, and collaboration are permitted in these course.

Exams

Each exam must be the sole work of the student taking it. No collaboration of any form is allowed on exams. Students may not discuss any aspect of any exam question with someone who has not yet taken the exam.

Labs and Other Assignments

While You Are Taking the Class

As a general principle, you may not obtain any information about an assignment from an unauthorized source. The following provide clarifications as to which sources are authorized, and which are not.
Copying:
  • You may use material that we explicitly provide you for the assignment. No attribution is required.
  • You may use other course material, including lectures, Piazza posts by the instructors, and material from the course website. For any such use involving code, you must provide clear attribution, indicating the source, and where the included material begins and ends.
  • You may use any material from the CS:APP book, any other course textbook, or the CS:APP web site. For any such use involving code, you must provide clear attribution, indicating the source, and where the included material begins and ends.
  • Beyond this, you may not obtain code or other solution information, either by copying, retyping, or looking at files or documents from any of the above-listed courses for this semester, or a previous semester.
  • You may not obtain code or other solution information from an unauthorized external source, including web pages, code repositories, blog posts, etc.
Searching:
  • You may search for or refer to general information, including the use of systems, networks, compilers, debuggers, profilers, and program libraries.
  • You may not search the Web for solutions or for any advice on how to solve an assignment.
Reusing:
  • You may reuse elements of general knowledge from prior courses. For example, you may use existing code for a linked list or to process commandline arguments. For any such use involving code, you must provide clear attribution, indicating the source, and where the included material begins and ends.
  • If you have worked on one of the labs from CS:APP, either at CMU, at some other school, or on your own, please arrange a meeting with one of the instructors at the beginning of the term to devise a policy on which parts of your solutions you may use. Reuse without explicit permission of an instructor, even if it's your own code, is forbidden.
Using other's code or documents:
  • You may not look at someone else's code (or other documents.) This includes one person looking at code and describing it to another. There is no notion of looking “too much,” since no looking is allowed at all.
  • You may not make use of any information about the labs posted online, except for the authorized sources listed above.
Assistance:
  • You may get assistance on an assignment from the instructors, course staff, and university tutors.
  • You may only get high-level, strategic advice from others, including current and former students, and people external to the university. Forbidden forms of advice include: anything more detailed than a brief verbal description or block diagram, any kind of code or pseudo-code, explicit directions on how to assemble allowed blocks of code, and code-level debugging assistance.

From Now and Into the Future

As a general principle, you may not provide detailed help with an assignment to students this semester or in future semesters for any of the above-listed courses (unless you are serving as a teaching assistant or instructor for the course.) The following are clarifications about which forms of aid are authorized and which are not. Note that they apply to all of the above listed courses and from now and into the indefinite future.
Sharing:
You may not supply a copy of a file or document to an individual student or via a public channel, such as a blog post.
Providing access:
You may not have any of your solution files in unprotected directories or in unprotected code repositories, either by putting files in an unprotected location or by allowing protections to lapse. Be sure to store your work in protected directories, and log off when you leave an open cluster, to prevent others from copying your work. If you make use of a code repository, such as Github, make sure your work is kept private, even after you have left CMU.
Coaching, Assisting, and Collaborating:
  • You may not provide electronic, verbal, or written descriptions of code or other solution information.
  • You may clarify ambiguities or vague points in class handouts or textbooks.
  • You may help others use the computer systems, networks, compilers, debuggers, profilers, code libraries, and other system facilities.
  • You may discuss and provide general, strategic advice about an assignment. Providing anything more detailed than a brief description or a block diagram is not allowed. Providing any kind of code or pseudo-code is not allowed. Providing explicit directions on how to assemble allowed blocks of code is forbidden.
  • You may provide suggestions of potential bugs based on high-level symptoms. Code-based debugging assistance is forbidden.

Enforcement

We will aggressively employ cheat checkers and other means to detect unauthorized use of code from this term, previous terms, and available online. All infractions will lead to formal reporting of an AIV to the university and to the program. The standard penalty will be to be given a failing grade for the course. Lesser penalties may occur, depending on the nature of the infraction. Consult the syllabus for your course for any additional information regarding penalties.

No Statute of Limitations

The above stated rules apply even after your have completed the course. You may not share code you have written for this course with future students. That means you cannot leave your code in unprotected repositories or post it on any web page. You may not provide coaching to future students. We can and will file AIV reports for students who have already completed the course, possibly changing their grades.