Required: Computer Systems: A Programmer's Perspective, 3/E (CS:APP3e), Randal E. Bryant and David R. O'Hallaron, Carnegie Mellon University, 3rd edition.
Be sure you have the 3rd edition. Get this at the Duke Book Store, Amazon or elsewhere.
Recommended: The C Programming Language, 2nd edition, Kernighan & Ritchie
We use several forms of communication in this class, primarily the course discussion platform, but occasionally we'll send an email via Sakai or DukeHub. We also occasionally announce things in class and/or on the slides in lecture. You are responsible for monitoring all these communication methods to stay up-to-date on class items. We make every attempt to minimize homework modifications, etc. but sometimes it does occur.
5% Pre-class Quizzes
20% Labs
5% Discussion Section
20% Projects
30% Midterms (15 each)
20% Final Exam
Extra credit is available via labs and is capped at 110% of the category, and can increase the final score by at most at 2 points.
We generally use a 10 point scale for grading in this course (A 90-100; B 80-89; C 70-79; D 60-79; F < 60), these ranges include - and +, in the event that the course ends up being very, very difficult and everyone scores badly (this rarely happens), then I may shift the thresholds lower (e.g., an 88 could be an A).
There is one quiz per lecture. The quizzes are 10 question, multiple choice, and correspond to assigned material (e.g., readings, etc. as listed on the course schedule). A quiz must be completed before the corresponding lecture. To facilitate flexibility, quizzes are made available on Sakai approximately one week prior to class and are closed for submission at the start of class. You are allowed three attempts for each quiz.
We will drop the lowest four quizzes, Incapacitation Forms will consume these until used up.
No late quizzes will be accepted.
There are small programming labs associated with each lecture. These labs are designed to reinforce concepts learned from readings & lecture and also to prepare you for the projects. Labs are released after each lecture and are due the following Sunday at midnight. You should start work on both labs prior to your discussion section, since the discussion sections are designed as dedicated help time for the labs. Be sure to carefully read the README file associated with each lab and follow directions appropriately.
Each week the labs have a required portion and an extra credit portion. You are required to submit at least the required portion. We assume everyone may have to miss a few labs, therefore you can skip up to 3 labs. This policy allows us to accommodate illness, etc. and extensions will not be issued for Incapacitation Forms.
Collaboration policy for labs: The labs are to be completed solo, however you are allowed to discuss strategy and concepts of labs with others in the class, but avoid discussing specific implementation techniques. Discussion sections are also dedicated time for help on labs, use that to your benefit. The code you write is to be your own. You may get help from others with syntax, parameter order for functions, etc. but not line by line help. You may get help in understanding what the required functionality is, but not how to implement that functionality.
Discussion grades are based on participation/effort. You are required to attend discussion or fully complete all required lab material prior to the start of your discussion section. If you show up and work on the labs you will get credit for discussion. The labs do not need to be completed until the following Sunday @ 11:59pm. Labs are available several days early and may be fully completed (achieved full points) prior to the start of your discussion and submitted on Gradescope; in this case fill out this form and you don't need to attend discussion.
To accommodate various issues, such as illnesses, job interviews, etc. You will be granted two missed discussions, Incapacitation Forms will consume these until used up.
There are several programming projects in this class. Each project builds on concepts and skills obtained from lecture, readings, and labs. Be sure to carefully read the README file associated with each project and follow directions appropriately.
Collaboration policy for projects: You may complete the projects solo or collaboratively in pairs. Each student must submit a solution to Gradescope. You can discuss concepts and strategies with other students and you can seek help from UTAs in discussion sections if time allows.
You can switch partners for different projects, but you cannot switch during a project (i.e., don't drop someone). You may choose your partner or we can help to match you with someone on a first-come-first-served pairing. Fill out the project pairing form on the Resources page if you'd like us to try to match you to a partner. If you work as a team, you must submit a text file that contains a reflection about the collaboration as part of your solution.
A couple of the projects are unique to each student and directions indicate how to complete and submit these labs.
There are two midterm exams, each worth 15% of your course grade. You are required to attend the exam in person on the specified day and time.
There is one Final Exam that will be in person during our assigned time.
0-24 hours late: 10% penalty 24-48 hours late: 20% penalty > 48 hours late: No Credit
Exceptions to this late policy are allowed only for Dean's excuses and short term illnesses as indicated by submitting the Short-term Illness Notification Form. You must also fill out the appropriate form on the Resources page.
Office hours are provided both in person and online and various times on most days of the week, except Friday (you go to discussion section) and Saturday. Office hours with TAs will have both group Q&A (physical room + common zoom) and the opportunity for 1:1 help. The common zoom room for everyone should used to get conceptual questions answered quickly and efficiently in a group setting. To receive 1:1 help you need to use the online queueing system called My Digital Hand and enter information, including if you are in person or online. TAs will help students in order on the queue.
We expect you to put in a good faith effort toward solving the labs/projects before seeking help at office hours. You will need to enter the steps you've taken toward solving the problem. Failure to enter this information or entering inappropriate information is grounds for a TA to refuse to help you.
Time per student may be limited if many students are queued up
Do not expect help at the last minute right before a deadline
Do not expect TAs to stay extra long helping you
Tips
Check the discussion forum to see if your question(s) have already been answered
Be sure you review the lectures, readings and read the README carefully.
See the Resources page on this site for useful links on Linux, GDB, etc.
All regrading requests (labs, projects, quizzes, exams) must be submitted within one week of the graded item being returned/available using the provided form on the Resources page. Requests after one week will be denied.
There are no special accommodations for late enrollment in the course. Missed assignments (pre-class quizzes, labs, discussions) will receive a 0 and consume any allotted slots for missed items.
We do not tolerate any academic dishonesty. This includes cheating on the labs, projects, quizzes and exams. We refer all suspected cases of academic misconduct to the Duke Office of Student Conduct. This policy applies to all work except those items for which collaboration is explicitly allowed, and then the exception is only within the small collaborator team not across teams.
These are examples and do not represent an exhaustive list of what is considered academic misconduct.
Copying solutions from another person or from any archive of material including, but not limited to online and paper archives.
Receiving help in any detail lower than high level concepts. Examples of lower level details include, but are not limited to, description of general structure of code, pseudo-code, specific lines of code or steps to solve a problem, line by line help, etc. unless otherwise specified.
Searching for the topic or implementation, looking at another solution or similar solution, and then typing it or parts of it as your own. You should not be searching for solutions to the labs/projects.
Copying on an exam or quiz.
Providing another student solutions, or letting them look at your solution at any point, even after the submission deadline.
Providing solutions to any discussion forum or archive (online, paper, etc.)
Assisting another student with more than high level discussion unless otherwise specified.
We continue to deal with the ongoing pandemic. You are expected to follow the most recent guidance from Duke regarding face coverings, social distancing, etc. Please contact the professor or teaching associate if you have any concerns or questions. Duke has several resources for students, including wellness and mental health.