CS 112 Syllabus - Spring 2021

1 Course Basics

1.1 Schedule

Our schedule can be found on Blackboard.

1.2 Course Outcomes

  1. An ability to use procedural programming language concepts including expressions, simple data types, boolean logic, decision statements, input/output, loop constructs, functions, and exceptions.
  2. An ability to combine these procedural programming techniques to solve problems of varying degrees of difficulty.
  3. An ability to refine computer programs through debugging and testing to ensure proper operation.
  4. An ability to read, understand, and evaluate a program specification in order to independently implement the desired behavior.
  5. An ability to understand issues and ethics related to obtaining and using code from unknown, unreliable, or unethical sources, as a precursor to best professional practices.

Additionally, CS 112 satisfies the "Information Technology and Computing" Mason Core requirements, which fosters these Learning Outcomes:

  1. Students will understand the principles of information storage, exchange, security, and privacy and be aware of related ethical issues.
  2. Students will become critical consumers of digital information; they will be capable of selecting and evaluating appropriate, relevant, and trustworthy sources of information.
  3. Students can use appropriate information and computing technologies to organize and analyze information and use it to guide decision-making.
  4. Students will be able to choose and apply appropriate algorithmic methods to solve a problem.

1.3 Prerequisite

C or better in MATH 104, 105, or 113, or sufficient scores on the math placement test.

1.4 Contact Information

Sections Professor office hours location email
-001, -002, -005, -006 Professor Ana Loreto Gonzalez ONLINE loreto@gmu.edu
-003 Professor Brian Hrolenok ONLINE hrolenok@gmu.edu

1.5 Text: Zyante

  • Required - zyBooks online text.
    1. Sign up at zybooks.com.
    2. Enter this zyBook code (all sections): GMUCS112NearySpring2021
    3. Subscribe (indicate your lecture section when prompted)

1.6 Piazza

  • sign up: https://piazza.com/gmu/spring2021/cs112/home, use the code 2021SpringCS112Kernighan.
  • All correspondence will go through Piazza. You can send private messages to the instructors (professors, GTAs, UTAs all) as well as post public questions visible to all students, collaborate on responses, and tag everything by topic.
    • Unless you have a confidential matter to discuss directly with an individual professor, please do not email us directly, use a private piazza post or visit in person. Project help questions sent via email are extremely low priority, as they were sent to the wrong place.
  • Course discussions will take place on Piazza. Go sign up now so you don't miss announcements.

1.7 Blackboard

  • Grades will be posted to Blackboard: https://mymason.gmu.edu
  • All assignments will be submitted (per published deadlines) via Blackboard.

1.8 Optional Reading

  • Quite Optional - The Practice of Computing Using Python, William Punch and Richard Enbody. This is for students who want extra reading resources. You might be able to view a copy for free at Fenwick Library. It is the textbook we used to require before adopting the ZyBook.

2 Grading

The course will have one midterm and a final. Much of the effort during the semester will be completing projects, homeworks, and regular assessments in lab (e.g. quizzes and programming tasks).

In general, all grades should be available about one week after the deadline. We will often have Sunday project deadlines (plus 48 hours of late work accepted per the policy below), so you would usually get a grade posted by the following week's Wednesday.

2.1 Semester Grade Composition

Category Percent Notes
Projects 40% the 2 lowest grades count half as much as others (no drops)
Group Homeworks 7% drop 1 lowest, average others evenly
Zyante readings 5% drop 2 lowest assignment grades
Lab Quizzes 10% drop 2 lowest, average others evenly
Midterm 13% see midterm replacement policy below
Final Exam 25% must pass final/testing avg. to pass class

2.2 Assessment

Grades will be assessed on the following scale:

Grade Score Grade Score Grade Score Grade Score
A+ 98 % B+ 88% C+ 78% D 60%
A 92 % B 82% C 72% F 0%
A- 90 % B- 80% C- 70%    
  • Given the percentages above and the allowed dropped lowest grades, you should always be able to calculate your semester grade at any point in the semester.
  • There will be no make-up or extra-credit assignments at the end of the semester; your grade should be a measure of your semester-long progress.
  • note that generally, project/homework scores are higher, and test scores lower, than many students' overall semester score.

2.3 Individual Projects

Each programming assignment is an individual effort; no collaboration allowed on projects.

Programming projects will be a primary focus of your experience, progress, and grade - each one should take multiple sessions of coding, with questions asked of the course instructors in person or online in between those sessions. This is the practice you need to learn, master, and internalize various concepts of the course.

2.3.1 Deadlines, Tokens

  • Each project has a posted deadline.
  • The latest you can turn in work is 48 hours after the posted deadline. There are no exceptions to this limit.
  • each student gets three Emergency-Day tokens, which are automatically used by submissions that are between 0-24 and 24-48 hours late to avoid the points penalty associated with that day of lateness. You still must turn in work within 48 hours of the original deadline, even if you use tokens!
    • that means you can't use all three tokens on a single project - pace yourself!
  • each day late (or portion thereof), when not covered by a token, lowers the highest possible score by 25%. recorded_grade = min(raw_score, 100-25*num_days_late)
  • the last project might not be allowed to be turned in late, to facilitate end-of-semester grading.
  • tokens are automatically applied to projects based on submission timestamp.
  • unused late-tokens will be worth a small bounty at the semester's end (0.25% of the semester grade). This is a reward for working and planning ahead during the semester.

2.3.2 Broken Code == Bad Scores

After the first two projects, any code turned in that does not run (immediately crashes due to errors), specifically on Python 3.7 or greater, will receive at most 50%. At this point, if the grader is able to quickly fix your code, you might get some points back. If the grader cannot immediately spot and fix the issue, you'll be fortunate to get any points at all.

  • Turning in code that runs is a big deal!

2.3.3 Turning it in on BlackBoard

You can submit your work an unlimited number of times to BlackBoard, and by default only the last submission before the 48-hour limit deadline will be graded. You can also download your submitted attempts, and verify that you turned in a working copy.

  • Turning in the wrong files (including empty or partial-work copies) will likely result in a zero. Don't lose your drops this way!
  • There is a difference between choosing to "save" your submission, meaning you'll come back and finish turning in your work, and choosing to "submit" your work, meaning actually sending the files to the instructors at a specific timestamp as a submission. If you've saved but not submitted, you haven't turned in your work yet!
  • Catastrophic computer failure will not be cause for an extension. Use a backup service such as DropBox (or any cloud service), emailing yourself, storing to a USB drive, whatever it takes. Every semester multiple students have their computers die, have computers stolen, or otherwise 'lose' projects. Don't be the student who forgot to (frequently) back up your work - it'll cost tokens and a rushed re-implementation!

2.4 Group Homework

  • On weeks when no project is due there will be smaller exercises to complete. You may work in groups (or alone, it is your choice). You will not receive extra credit for working alone.
  • Your lowest group homework grade will be dropped and the others averaged together evenly.
  • Each student in a group must submit individually before the deadline for credit. No credit will be awarded for submissions by other students (even if they put your name on it).

2.5 Lab Assessments

  • All lab assessment grades will be averaged together evenly after the drops.
  • Lab quizzes and tasks require attendance at your designated lab time to get the credit.
  • Any missed lab assessment is simply missed, regardless of the reason why (travel, illness, work, traffic, receiving a major award, getting married, saving the universe, etc.). Two lowest lab grades will be dropped to cover the very rare cases of understandable missed labs.
  • If you choose to miss some early on, and later on have to miss for some understandable reason, that is too bad. Try to save the drops so you can actually throw out a bad grade, and not just hide a lazy zero. Pretending you don't have them is your best approach.

2.6 Zyante Readings

  • zyBooks readings are graded based on the completion percentage of activities before the designated deadline of each chapter.
  • See the schedule page for reading assignment due date.
  • Make sure you're logged in to get credit for reading completion.
  • Optional subsections are not considered for zyBooks grading.

2.7 Tests and Final Exam

  • Exams are closed book/notes unless specified otherwise by instructor.
  • All students must have a working webcam and be able to use the remote proctoring software (Respondus).
  • The final exam is cumulative. If you perform better on the final exam than your midterm exam, we will replace the midterm grade with the final grade.
  • If you know in advance that you are unable to make an exam for a valid and unavoidable reason (such as a scheduled surgery, naturalization ceremony, court date, etc.), you must notify the professor at least one week before the scheduled exam date to make arrangements for a make-up, and bring documentation with you when you take the make-up.
  • If you miss an exam due to a university-accepted excused absence (such as an illness or car accident the day and time of the exam), you must notify your professor within 24 hours of your absence to make arrangements for a makeup, and bring approved documentation with you when you take the make-up exam. Failure to follow either of these policies will result in a zero.
  • the final will be given some time in the final exam week. An announcement will be made when these details are finalized.
  • Per departmental policy, you must pass a significant exam threshold to receive a passing grade in this class, regardless of your performance on other assignments. Failing the final exam (<60.0%), will result in a failing grade (F) for the entire course unless you have achieved an average exam score >=65%. This average score is calculated as a weighted average of your exam scores (((10*LabQuizzes) + (13*Midterm) + (25*Final))/48). Note that midterm grades will not be "replaced" with the final grade for this calculation. In short, in 99/100 cases, you must pass the final exam to pass the course.

2.8 Contested Grades

  • If you feel points have been incorrectly deducted, contact the grader. For all homework, projects, and lab work, that is your GTA. For the midterm and final exam, that is your professor.
  • If you have not initiated contact within a week of a grade being posted to BlackBoard, you accept the grade by default. We cannot entertain a swarm of contested grades at the eleventh hour to try to maximize end-of-semester grades. Keep up with your grades throughout the semester.
  • We strive to grade each student's work fairly and uniformly, often through specific test cases, automated as part of the grading process. All GTAs coordinate together with a shared scoring breakdown and regularly communicate with each other before, during, and after the grading process to keep it fair and consistent.

3 Office Hours and Discussion Board

There is substantial support available to you in the form of office hours and and the online discussion board (Piazza). If you are having difficulty on a project or lab, we encourage you to reach out as early as possible. That said, to ensure fairness and facilitate learning, we have some basic rules for seaking help outlined below.

Please note that the is a discussion forum for you, the students, to discuss the course and the course material. There will be UTAs assigned to check on this forum regularly and try to moderate the discussion, but this is NOT a replacement for office hours, reviewing lecture videos, or labs.

3.1 Rules for Office Hours

  • For students seeking help with programming assignments during office hours, students must identify the line number, through debug print statements, where they believe an error to be before seeing the TA or instructor. This implies that you must have syntax errors or at least one test case that fails, to bring to office hours before the TAs or instructor can help you.
  • For more general programming assignment questions, students must bring their own pseudocode to office hours before the TA or professor can help you.
  • Under no circumstances will the professor or GTA reveal more than three lines of code at a time during office hours. Students must make significant, individual effort on all projects before coming to see a GTA/professor. Waiting until the last minute, in the expectations that the entire project will be explained in one office hours session, is not feasible.
  • Office hours are often crowded - do not rely on them for last minute help, as we cannot guarantee that we will be able to spend significant time with every student.
  • If you have any questions about what you are/aren't permitted to do on a project/lab and you and the TA cannot find a the answer written somewhere, you should ask your professor. "So-and-so said" will not be an accepted as a reason for grade re-evaluations (unless "so-and-so" is your professor).

3.2 Rules for the Discussion Board

  • Students are encouraged to use the Piazza discussion board to ask and answer questions about assignments, labs, course material, etc.
  • No sharing answers or code solutions to assignments on the discussion board. See Honor code section below for more details.
  • Students can post questions and code privately, although the instructor reserves the right to make any post public, so that other students can see the responses.
  • For students wishing to post their code privately to Piazza, the same rules apply as when coming to office hours; if you have code written, you must produce at least one failing test case where you have identified what line number is giving you problems.
  • UTAs will be assigned to moderate the student discussion, help review student answers, answer private questions, and address questions which have not received a student answer. Therefore, responses to questions can be expected within 24 hours, though often times much sooner.
  • Statements made on the discussion boards, even by TAs and especially by other students, should NOT be considered the definitive word on the subject unless it is verified by your professor (in the assignment description, in class, posted on Piazza, etc.). The UTAs can flag professors if/when clarifications are needed.
  • If you have any questions about what you are/aren't permitted to do on a project/exam and you/others cannot find a the answer written somewhere, you should ask your professor. "So-and-so said" will not be an accepted as a reason for grade re-evaluations (unless "so-and-so" is your professor).

4 The Honor Code

The honor code at George Mason is an important part of our academic culture. A degree from this institution should be a direct measure of your own progress and abilities, and as such at all times we must ensure that all work that should be your own is your own.

  • All students will abide by GMU's Honor Code.
  • All work must be your own. If you are caught cheating, you and every other involved student must be turned in to the honor court.
  • See the CS Honor Code Policies to understand better what constitutes cheating in the CS setting. It clarifies some scenarios that are unique to our sorts of assignments.
  • Understanding the Honor Code: here are Dr. Snyder's own thoughts about the purpose of the honor code in a computer science course.

We take the honor code quite seriously. Any attempts at copying or sharing code, algorithms, or other violations of the honor code simply will not be tolerated. This includes using code found on the internet.

  • The penalty for cheating will always be far worse than a zero grade, to ensure it's not worth taking the chance. Confirmed cases of cheating almost always translate into course failure.
  • There are definitely opportunities to study, work, and learn together throughout this course - Zyante questions, homeworks, and more. Mostly you will need to work independently for any sort of "test" (lab quizzes, lab tasks, midterm, final exam) and for projects.
  • discussing any individually assigned work with anyone other than a course instructor, UTA, or GTA is explicitly forbidden, regardless of medium (in person, online, through "chat" features, etc).

As seductively simple as it may seem to just copy and paste work from a friend, or even to just work on the project on your own machines next to each other, remember that it is just as easy to compare your work automatically and electronically, and discover the similarities in text and structure. We use automated software to flag suspicious cases, and then review them by hand to find the cases that must be submitted to the Office of Academic Integrity. Repeat to yourself: it's not worth trying to cheat. We will catch it, and sadly but surely, we will turn it in.

5 Learning Disabilities

  • Students with a learning disability or other condition (documented with GMU's Office of Disability Services) that may impact academic performance should speak with the professor ASAP to discuss appropriate accommodations. We are quite happy to assist as is appropriate, but it must be documented ahead of time. Bringing the accommodation paperwork with you to a scheduled assessment is far too late! Even if you don't know if you plan on utilizing the accommodations ahead of time, it's in your best interest to prepare ahead of time.