Exams
- Midterm: There will be an in-class midterm: Thursday, Oct 24, 2024.
- Final: There will be a final exam in the time and place scheduled by the university. No rescheduling will be permitted. Final exam schedules are usually posted during the last few weeks of the semester.
Unless stated otherwise, all exams above will be closed book. The midterm and the final exam will cover material from class meetings, labs, readings, homeworks, and any other assigned material.
Grading
Your final grade will be determined by the following weights:
- 5%: Homework
- 35%: Lab assignments
- 60%: Midterm + Final exam
Work in the "homework" category will be graded loosely. To receive credit, you must make a credible effort to solve the problem; mistakes will not be penalized, in general. Everything else will be graded strictly, unless explicitly noted otherwise.
Turn-in policy, slack days, and lateness
Late homeworks will not be accepted. We will drop your lowest two homework scores.
Labs will be accepted until a week after they are due. That is, we require that you turn in labs no later than 7 days after they are due, at the same hour as the original lab. We call that day and hour the lab’s drop-dead time; please forgive the expression.
Late labs incur penalties. However, you have 5 slack days that forestall the penalty clock. Here are the details:- Each submission has a 59-minute grace period; for example, if the lab is due at 7:00 PM and your submission time is 7:59 PM, it will be viewed as on time. After that, the lab is viewed as a full day late.
- Each day late incurs a full letter grade penalty, for example, A to B or B+ to C+. Per the previous item, fractions of a day late count as a full day late.
- There is a floor: labs that are 100% correct and submitted up to one week after the deadline will get at least a C (labs that are X% correct and, say, 6 days late would get X% of the points that a C represents, etc). The intent of the floor is that if you do all of the work by the late submission deadline you will pass.
- By spending slack days, you give yourself an extension by that many days. For example, if you turn in the lab two days after the real due date, and spend two slack days, then there is no grade penalty from lateness; alternatively, if you spend that number and turn in the lab three days after the real due date, you get one letter grade penalty.
- You must indicate the number of slack days that you are taking for a given lab at the time when you submit that lab.
- Slack days do not change the drop-dead time: regardless of the slack days spent, the drop-dead time is exactly one week after the lab is due.
If you do not hand in an assignment, or hand in a blank assignment, you get a 0 for that assignment. It is much better for you to hand in an assignment that receives a C for lateness than to simply give up on the assignment.
Exemptions of the lateness rules will be allowed in three cases:
- Illness or genuine crisis. Crisis requires a supporting note from campus authorities. The instructor will not look at such notes; instead, bring the note to the Director of Undergraduate Studies (DUS), who will communicate with the instructor. An illness exemption does not require a doctor’s note, per university policy. However, similar to the crisis case, the instructor will keep students’ medical issues at a remove; thus, anything other than a routine request will be routed to the Director of Undergraduate Studies (DUS) to approve. And, students found to be requesting illness exceptions on a spurious basis will face sanctions.
- Death in the immediate family.
- Accommodation for students with disabilities, as prescribed by the university.
No extensions will be given for any other reason (including job interviews, friends requiring support, work on research publications, etc.).
Collaboration, source material, and academic integrity
Here is this class's collaboration and integrity policy.
- For whatever reason, students sometimes think we aren’t serious about this. Then they find out we are serious, and it's unpleasant for them. If you cheat, you will own the consequences.
- The work that you turn in must be yours. When you turn in an assignment, you are saying that you have done this work yourself. The definition of plagiarism is to present someone else’s or AI-generated work as though it were your own. Code that you turn in must be code that you wrote and debugged. Do not discuss code, in any form, with your classmates or others outside the class (for example, discussing code on a whiteboard is not okay). As a corollary, it's not okay to show others your code, look at anyone else's, or help others debug. It is okay to discuss code with the instructor and TAs.
- You must acknowledge your influences. This means, first, writing down the names of people with whom you discussed the assignment, and what you discussed with them. If student A gets an idea from student B, both students are obligated to write down that fact and also what the idea was. Second, you are obligated to acknowledge other contributions (for example, ideas from Web sites or other sources). Keep in mind that you must cite all sources, even if you rephrase or handwrite the answer. If you use any AI-assisted chatbots, you must submit your entire chat history. The only exception is that material presented in class or the textbook does not require citation.
- The use of AI-assisted code writing tools (e.g., GitHub Copilot) is strictly forbidden in this course. Using such tools for any activities in this course (homeworks, lab, you name it) will be considered cheating.
- The use of AI-assisted chatbots (e.g., ChatGPT, Claude) is strictly forbidden for non-coding assignments . That includes written homework assignments and questions that are answered in
answers.txt
for labs. - Limited use of AI-assisted chatbots is permitted for Lab 2 and onwards, subject to the guideline. Please refer to the guideline for detailed information on allowed and prohibited uses.
- You must not look at, or use, solutions from prior years or the Web, or seek assistance from the Internet. For example, do not post questions from our lab assignments on the Web. Ask the course staff, via email or Campuswire, if you have questions about this.
- You must take reasonable steps to protect your work. You must not publish your solutions (for example, on GitHub outside our class repo, or on Stack Overflow), in this semester or any future semester. You are obligated to protect your files and printouts from access.
- If there are inexplicable discrepancies between exam and lab performance, we will overweight the exam, and possibly interview you. Our exams will cover the labs. If, in light of your exam performance, your lab performance is implausible, we may discount your lab grade (if this happens, we will notify you). We may also conduct an interview or oral exam.
More about collaboration
You can discuss the labs in general terms with your classmates. What does "general terms" mean? First of all, per the policy above, you cannot look at the written work of anyone else (besides your partner for a given assignment, if the assignment is done in pairs). Second, after discussing a problem with another student (or the course staff!), go do something else (read a book, watch a movie) for half an hour before going back to work on the assignment. If you can't remember what the person said after a half hour, you didn't really understand it.
More about source material
You are welcome to use existing public libraries in your programming assignments (such as public classes for queues, trees, etc.) You may also look at code for public domain software such as Linux. Consistent with the policies and normal academic practice, you are obligated to cite any source that gave you code or an idea.
Per the policy above, you may not look at any course material relating to any project or lab similar to this course's assignments. You may not look at work done by students in past years' courses. You may not look at similar course projects at other universities. If you are unsure about whether a particular source of external information is permitted, contact the instructor before looking at it.
Guidelines for Using AI Tools
Prohibited Uses
- Lab-Specific Code Completion: Do not ask AI assistants to complete code specifically required for lab assignments. This includes both full solutions and partial implementations.
- Code Style Improvement: Refrain from using AI assistants to improve or refactor your code style.
- Lab Question Answers: Do not use AI assistants to directly answer questions posed in lab assignments.
- Debugging Assistance: Do not use AI assistants to help identify or fix bugs in your code.
- Algorithm Explanation: Do not ask AI assistants to explain algorithms or data structures related to your assignments.
- AI-assisted Coding Tools: The use of AI-powered coding tools (e.g., GitHub Copilot) is strictly forbidden for all course work.
Allowed Uses (for Labs 2 and onwards only)
- General Programming Language Queries: You may ask AI assistants about basic syntax or general features of the programming language used in the course, provided these queries are not directly related to solving specific lab problems.
- Standard Library Functions: You can ask about the usage of standard library functions, as long as the question is not framed within the context of a lab-specific problem.
Citation Requirements
Chat History Logging:
For each interaction with an AI assistant, save the entire chat history in a separate text file.
Place these files in a chat_history folder within your submission.
Name each file descriptively, indicating the topic or purpose of the conversation.
Example:
chat_history/syntax_query_for_loop.txt
Code Citation:
In your code, use comments to clearly indicate which parts were AI-assisted.
Each AI-assisted section must be associated with a specific chat history file.
Use a standardized comment format for consistency. For example:
// AI-assisted (chat_history/loop_syntax_query.txt)
for (int i = 0; i < 10; i++) {
printf("%d\n", i);
}
// End of AI-assisted section
Source Citation in answers.txt
: For each AI-assisted part, provide:
- A brief description of what you asked
- The filename of the relevant chat history
- How you used or modified the AI’s suggestion.
Important Notes
- You are fully responsible for your submission, regardless of AI assistance. The use of AI tools does not absolve you of accountability for the correctness or quality of your work.
- Using AI tools increases the likelihood of code similarity between student submissions. If we detect similar code across multiple submissions and find no proper citations of AI assistance, it will be considered cheating.
- These guidelines are subject to change. We will inform you of the changes (if any) throughout the semester. Always refer to the most recent version provided by your instructor.
More about academic integrity
The above guidelines are necessarily generalizations and cannot account for all circumstances. Intellectual dishonesty can end your career, and it is your responsibility to stay on the right side of the line. If you are not sure about something, ask.
Regrades
You can submit any graded item for a regrade, under the following conditions. First, you need to submit a clear, written statement that explains the request (what was wrong and why). Second, you must submit your request within one week of when the graded work was returned. Third, we will regrade the entire exam, homework, etc. (so a regrade can potentially decrease your grade.)