2025 | '24 | '23 | '22 | '21 | '20 | '19 | '18 | '17 | '16 | '15 | '14 | '13 | '12 | '11 | '10 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Fall | F25 | F24 | F23 | F22 | F21 | F20 | F19 | F18 | F17 | F16 | F15 | F14 | F13 | F12 | F11 | F10 |
Summer | N25 | N24 | N23 | M22 | N21 | N20 | N19 | N18 | N17 | N16 | M15 | M14 | M13 | M12 | S11 | |
Spring | S25 | S24 | S23 | S22 | S21 | S20 | S19 | S18 | S17 | S16 | S15 | S14 | S13 | S12 | S11 |
valgrind
tool to
test proper memory management.
You are welcome to use any programming environment that suits you to write your programming assignments. However, all programming homework will be graded by running them on a Unix system using — you may want to make sure they work on Andrew Unix. Popular environment choices include VSCode, emacs and vim, but you should use what works for you: an environment that allows you to write code quickly and efficiently. Here are some useful links:
vimtutor
at the terminalWe require that you disable AI extensions from your programming environment and in general that you do not use AI tools. These tools may give a quick answer but they undermine learning and retention. (See also Academic Integrity Policy.)
There are four categories of tasks: HW, CH, AC and FI, defined in the table below. You can earn a maximum of 1000 total points. Your course performance is computed as
Category | Points available | Points cap | Description |
---|---|---|---|
Homework (HW) | 720 | 720 |
There are two kinds of homework assignments:
|
Checkins (CH) | 780 | 720 | Weekly, in class, closed books, Tuesdays at 7:00pm or 7:45pm depending on section |
Precepts/Activities (AC) | 39 | 30 |
This category combines Friday precepts and daily in-class activities:
|
Final Exam (FI) | 250 | 250 | 3 hours, closed books, on |
Got it? Input values for HW, CH, AC, FI and the resulting course performance to check your understanding.
Checkins and Precepts/Activities operate on the bucket system: there are more points available than what you need to achieve 100% in these categories.
We aim to have homework and checkins graded within two days of submission.
Your assignments and exams are evaluated on the basis of:
We strongly advise students not to use late days in the first half of the course. Later assignments are more challenging and many courses have lots of deliverables towards the end of the semester. The second half of the semester is where late days are most needed.
Nearly all situations that make you run late on an assignment can be avoided with proper planning — often just starting early. Here are some examples:
All regrade requests must be received within 5 days of the work being handed back on or , which we will announce in a post.
What follows is a rough guide to how course grades will be established, not a precise formula — we will fine-tune cutoffs and other details as we see fit after the end of the course. This is meant to help you set expectations and take action if your trajectory in the class does not take you to the grade you are hoping for (see also the Grades tab on this page). So, here's a rough, very rough heuristics about the correlation between final grades and total scores:
The value of your degree depends on the academic integrity of yourself and your peers in each of your classes. It is expected that, unless otherwise instructed, the work you submit as your own is your own work and not someone or something else's work or a collaboration between yourself and others.
Many students who copy code or other work do so in the heat of the moment and regret their actions later on, when more clear-headed. You may contact the instructors by 2pm the day after a deadline and ask to delete your submissions for an assignment, no questions asked. Deleted submissions are not considered when running academic integrity checks and receive a grade of 0. You may do so at most once during the semester. Contact us before we contact you.Practice problems are collaborative but submissions are individual.
Specifically, you are welcome to work on any aspects of a practice problem with other students. However, in order to ensure that the work you submit reflects your learning, we insist that you adhere to a whiteboard policy regarding these discussions: you are not allowed to take any notes, files, pictures or other records away from the discussion, nor shall you memorize answers. For example, you may work on practice problems at the whiteboard with another student, but then you must erase the whiteboard, stop discussing the problem, wait some time (15 minutes is a safe heuristic) and write up your solution individually. We take your ability to recreate the solution independently as proof that you understand the work that you submit.
You may not use AI tools for practice problems.
Programming assignments are strictly individual.
You may ask other students clarifications on the writeup (e.g., "What does this sentence mean?", "Can you explain this notation?") but you may not discusses approaches to solving any aspect of the assignment (e.g., "How would you do this?", "Can you walk me through an example?").
You are not allowed to refer to solutions and/or code written by past or present students, ChatGPT or other AI-based tools, or found on the web, not even to "double-check" your own solution. You may not post code from this course publicly (e.g., to Bitbucket or GitHub).
We will be using the MOSS system to detect software plagiarism. Whenever a programming assignment is similar to a homework from a previous course edition, we will run MOSS on all submissions from that edition as well. All solutions from the Web are also in MOSS — you should assume that if you were able to find it, we have already found it.
Checkins and the final exam are strictly individual.
You are welcome to freely discuss course material (lecture notes/slides, practice exams, precept handouts), as well as to review graded assignments or checkins with students taking the course in the current semester. You may give or receive help with computer systems, compilers, debuggers, profilers, or other facilities (as long as answers and/or code are never visible).
You are not allowed to use any materials from previous iterations of the course, including your own. You may not discuss or receive any help on homework assignments with students who have previously taken the course (excluding current TAs).
If you are uncertain whether your actions will violate this policy, please reach out to a member of course staff to ask beforehand.
You may not use AI tools for any part of work that you will submit for credit. This includes but is not limited to generating solutions, checking solutions, explaining tasks or solutions, formatting code, adding comments to code, or generating test cases. Use of these tools on assignments will be reported as an academic integrity violation.
Your goal in this course is to learn and acquire skills. This is achieved through hands-on practice, which takes time and can feel frustrating. Using generative AI or other improper help for this practice replaces the process of learning and mastering new skills.
Please read the University Policy on Academic Integrity carefully to understand the penalties associated with academic dishonesty at Carnegie Mellon. In this class, cheating/copying/plagiarism means obtaining all or part of a program or homework solution from another student or tool, or unauthorized source such as the Internet or AI tool, having someone else do a homework or take an exam for you, knowingly or by negligence giving such information to another student, reusing answers or solutions from previous editions of the course, or giving or receiving unauthorized information during an examination. In general, each solution you submit (practice problem, programming assignment, checkin or final exam) must be your own work. In the event that you use information written by others in your solution, you must cite the source of this information (and receive prior permission if unsure whether this is permitted). It is considered cheating to compare complete or partial answers, copy or adapt others' solutions, or sit near another person who is taking (or has taken) the same course and complete the assignment together. For programming assignments, working on code together, showing code to another student and looking at another student's code are considered cheating. If you need help debugging, make a post on or go to office hours. It is also considered cheating for a repeating student to reuse one's solutions from a previous semester, or any instructor-provided sample solution. It is a violation of this policy to hand in work for other students.
Your course instructors reserve the right to determine an appropriate penalty based on the violation of academic dishonesty that occurs. Penalties go from negative points in an assignmnent all the way to expulsion from Carnegie Mellon University. If you have any questions about this policy and any work you are doing in the course, please feel free to contact the instructors for help.
If you took this course in full or in part in a past semester, we ask that you delete all your previous work so you won't look at it. In particular, copying or referencing one's own solutions from an earlier semester is a violation of the academic integrity policy and will be handled as such. Doing so may save time close to a deadline but it will not have the effect of learning the material, which will be a serious handicap in exams and in follow-up courses.
Active participation by you and other students will ensure that everyone has the best learning experience in this class. We may take participation in lecture and precepts into account when setting final grades. Fire safety rules require that we never exceed the stated capacity of a classroom. For this reason, we require that you attend the lecture, checkin slot, and precept you are registered for.
As research on learning shows, unexpected noises and movement automatically divert and capture people's attention, which means you are affecting everyone's learning experience if your cell phone, laptop, etc, makes noise or is visually distracting during class. Therefore, please silence all mobile devices during class. You may use laptops for note-taking only, but please do so from the back of the classroom. Do not work on assignments for this or any other class while attending lecture or precept.
If you wish to request an accommodation due to a documented disability, please contact Disability Resources as soon as possible (). Once your accommodation has been approved, you will be able to request extra-time for each exam separately by filling this form a week in advance.
Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress.
All of us benefit from support during times of struggle. You are not alone. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is often helpful.
If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. Counseling and Psychological Services (CaPS) is here to help: call 412-268-2922 and visit their website. Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.
If you or someone you know is feeling suicidal or in danger of self-harm, call someone immediately, day or night:
The Student Academic Success Center is providing various services aimed at helping students master the contents of this course. These optional services are free and voluntary. They are led by trained personnel who have successfully completed the course. Leaders are not members of the course staff. These services are are designed to supplement — not replace — class lectures and precepts. They do not cover homework.
We ask that students do not seek help from upperclassmates who have successfully completed the course. Doing so often leads to violations of the academic integrity policy of the course. In particular, upper-classmates found to violate this policy will be reported and will incur a grade penalty.
while
and for
),void
pointers and casts between pointer types,void
and function pointers,make
, gcc
, and valgrind
.2025 Iliano Cervesato |