Table of Contents

This page contains course information pertaining to:

The COMP11 Axioms

  1. Start early. Unlike, say, a set of individual math problems, a program has to function as a whole. The more you build, the more carefully you must think about how the various components fit together. If you're rushing, it's far more likely that you'll break something than build something functional.
  2. Think before you code. A program is just a faster and more reliable version of a procedure that can be done with a pencil and paper. If you do not have a clear idea of how you would solve the problem with a pencil and paper, then you are not ready to write code for it.
  3. Write a little, test a little. Finding a bug in 5 lines of code is far easier than finding a bug in 500 lines of code. A good program is written in small, testable increments. You should not write the next section of your program unless you have a clear plan for how to test it.

Contacting the Course Staff

The preferred means of contacting the course staff is via Piazza. General questions about the homework, course policies, C++, or Linux should be posted publicly so that your classmates can benefit from the answers and any resulting discussion (before posting a question, please check to see whether your question has already been asked!). Questions that are personal in nature, or that pertain to specific pieces of code that you have written can be posted privately to the course staff.

Sign Up: COMP11 Spring 2020 Piazza Forum

COMP11 Course Techware

This course relies on a small number of critical programs and scripts that support the basic routine of completing and submitting labs and homeworks. It is crucial that students arrive at a basic understanding of these technologies in order to complete their work without issues.

The technogies used in this course are decribed and explained here: COMP11 Tech Guide

Final Grade Breakdown

The final grade in this course is computed according to the following breakdown:

Homework 60%
Labs 10%
Midterm 10%
Final 20%

We do not expect to apply a curve to any portion of this grade.

Homework

In general, homworks will go out every Wednesday and be due at midnight the following Tuesday (there will be a longer project towards the end of the term). Each homework will be comprised of three components:
  1. A written component that will be submitted via Gradescope
  2. A programming component that will be submitted via our submit11 system
  3. A style component that evaluates how well your code conforms to our style guide
Homework grades will be posted to Gradescope for students to review.

Written

The written component of your homework must be submitted as a .pdf via Gradescope. Failing to submit your written component or submitting a non-pdf document will result in a loss of credit for this component.

Programming

The programming component of each assignment must be submitted via our submit11 system. First and foremost, the programing component of your homework must compile on Halligan in order to receive any credit. Once your submission has compiled, it is evaluated by comparing its output to the output that our solution code produces.

With the exception of HW0, programming submissions will be graded by an automated system that uses the program, diff, to compare a submission's output to our ground truth. Students will learn to use diff during their second lab sesssion and are expected to use it for testing before submitting all of their susequent homeworks. It is not reasonable to assume that a program is working properly if it is not passing the diff tests.

For the majority of the homework assignments, we will be providing one or more sample input files that students may use for testing. While these tests are designed to be generally representative of the tests we will be using for grading, they are not intended to be comprehensive. Students are expected to create their own input scenarios and test them using diff.

The triplicate of compile-diff-submit should become the cornerstone of every student's submission process.

Style

The COMP11 style guide can be found here: COMP11 Style Guide

Late Homework

Homework is expected to be submitted on time. However, we recognize that the exigencies of college life occasionally thwart a homework deadline. In such circumstances, there are two types of extensions:

Late tokens: A late token grants you a 24-hour extension on an assignment. Each of you has 4 of them to use over the course of the semester. A maximum of two tokens can be used on any single assignment. Using a late token requires no action on your part. Our grading scripts will automatically check the date of your submission and deduct the appropriate number of tokens. However, there are two things that you can do to ensure that your late tokens get accounted for properly:
  1. If you intend to use a late token: Do not submit your written component until you are ready to submit your final code. This will prevent a partial submission from being graded.
  2. If you do NOT intend to use a late token: Do not submit anything after the due date. We grade your most recently submitted work. If that work came in after the due date, it will be counted as late.
When you do use a late token(s), it will be reported along with your homework and lab grades when they are posted. Once you have used all four of your late tokens, late work will no longer receive credit. It is your responsibility to keep track of your late token usage.

Late tokens are designed to accommodate short-term setbacks like catching a cold or an ill-timed deadline in another class. Again, there is no need for any e-mails or explanations. Just turn in the assignment when you get it done, and the late token accounting will happen automatically.

Dean-approved extensions: Extenuating circumstances occasionally exceed the conveniences of the late token system. In these cases, students must proactively reach out to their dean to request an extension (we rarely grant extensions that are requested on or past the due date). Your dean will then work with the course staff to make appropriate arrangements.

Regrade Requests

All regrade requests must be submitted via Gradescope within one week of the assignment grades being released. In cases where it is not immediately obvious how to submit a regrade request for a particular component of an assignment, it is always fine to submit the request on the first problem of the assignment.

A regrade request may or may not result in a new grade being assigned. The new grade may be higher or lower than the original grade. You are always welcome to ask for an explanation of the grade you received.

Labs

Attendance in lab is mandatory. Our weekly labs are designed expressly to prepare students for the current homework. Students will work with a partner to complete a small problem or activity in the allotted time.

Labs will be graded according to whether or not they were completed to a sufficent degree. Lab grades will be posted to Gradescope as a component of the weekly homework grade and adhere to the same regrade deadlines described above.

Collaboration and Academic Integrity

As described above, homeworks will be comprised of two components, a written component and a programming component. For each of them, we have slightly different policies about which forms of outside help and collaboration are acceptable:

Written

The goal of our written problems is to give students practice at finding pieces of information that they have not expressly been given in class and lab. This skill allows you to eventually function independently as a programmer, and is critical for all computer scientists to master.

As such, students are expected to find the answers to written problems themselves. They may not confer with their classmates, and may only minimally query the TA staff. From there, however, any means of finding an answer is fair game. Students may search the internet, consult their textbook, write test programs - anything.

Programming

Both your classmates and the internet at large can be invaluable resources, so long as they are used according to the following three policies:
  1. You may search the internet and talk to other students about general programing concepts and C++ syntax, but not about assignment-specific code or strategies. For example, it is fine to ask "How do you structure a 'while' loop in C++?", but it is not fine to ask "How do you write a Caesar Cipher decryptor in C++?" Assignment-specific questions should only be posed to the course staff.
  2. Use English. Use whiteboards. However, you should never be looking at another student's code and no one outside of our course staff should be looking at your code. If a TA sees you doing this, it will be reported.
  3. Only submit code that you can explain. We reserve the right at any time to ask you to explain a piece of code that you submitted. If you cannot explain the code, then we will have no choice but to assume that it is not your work.
Suspected academic integrity voilations are forwarded directly to the Office of Student Affairs. Their sanctions range from horrible to inconceivably horrible. It's not worth it.