Syllabus

Textbook

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

Communicating Information

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. I 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.

Grading

  • 5% Pre-class Quizzes

  • 20% Labs

  • 5% Discussion Section

  • 20% Projects

  • 40% Mini Exams

  • 10% Final Exam

There is no extra credit in this course.

I 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).

Pre-class Quizzes (5% of grade)

There is one quiz per lecture. The quizzes are 10 question, multiple choice, and correspond to assigned material (e.g., readings, etc.). 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.

We will drop the lowest four quizzes, Incapacitation Forms will consume these until used up.

No late quizzes will be accepted.

Labs (20% of grade)

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.

If you achieve 80% of the points across all labs you will receive full credit for labs. Each lab typically has some partial credit so you can reach 80% in any number of ways (e.g., 80% across all labs or full score on 20 and skipping 5 labs). We assume everyone may have to miss a few 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. 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.

Discussion Sections (5%)

Discussion grades are based on participation/effort. You are required to attend discussion or fully complete all 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.

Projects (20% of grade)

There are several programming projects in this class. Each project builds on concepts and skills obtained from lecture, readings, and labs.

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. 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. We are still working out the policy for team submissions for these cases.

Mini Exams (40% of grade)

In place of traditional midterm exams, we will have several shorter exams throughout the semester. There will be a practice exam for each unit and there is the option for one retake. The retake also serves as the alternate time if you have any excused absence from the first offering of the exam, no additional retake will be offered. The exams are online outside of class time and each is to be taken individually with no help from others and no access to any resources other than those provided for the exam. The exams are timed and must be completed by the specified time regardless of when you start the exam.

Final Exam (10% of grade)

There is one Final Exam that will be online during our assigned time.

Policy for Late Labs and Projects

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.

Policy on Office Hours

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 form 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.

Policy on Regrading

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.

Policy on Late Add of Course

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.

Policy for Academic Misconduct

I will not tolerate any academic dishonesty. This includes cheating on the labs, projects, quizzes and exams. I will 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.

What constitutes Academic Misconduct

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, such as 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 and looking at another solution and then typing it or parts of it as your own.

  • 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 archive (online, paper, etc.)

  • Assisting another student with more than high level discussion unless otherwise specified.

COVID-19 Precautions

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.