Dr. Peter H. Fröhlich / Course Policies

Please read this page very carefully and in its entirety. It summarizes the general policies that apply to all courses I teach.

Courses co-taught with other faculty members often adopt a variation of these policies, please check the relevant course website or syllabus for details. Specific courses may also extend or modify these policies as noted on the relevant course website or syllabus.

I reserve the right to change these policies at any time; however, I try to only change them between semesters. If there is a pressing need to fix a policy while a class is in session, we will discuss the change at length in lecture and it will be announced very visibly.

Note that different policies apply to summer session and regular semester courses! See Summer Session for details.


Academic Integrity

It is your responsibility to adhere to the Department Integrity Code and all other applicable university regulations. Please read those policies carefully, they apply in full.

If you’re worried about academic integrity, the simplest rule to follow is to do all your own work and to cite all your sources:

Unless otherwise noted, never post significant portions of any grade item publicly! If, for example, you have problems with a piece of code, do not post code directly from your solution; instead, post the smallest snippet of code you can come up with that exhibits the problem you want to ask about. And please do not maintain your code in a public repository!


Each course I teach has a certain grading scheme, a breakdown of the different grade items relevant for the course (exams, projects, presentations, etc.) and an associated percentage weight for each category. You can find this breakdown on the course website or syllabus and I am usually willing to negotiate it (within reason) in the first week of the semester (or the first two days in summer session).

Each individual grade item is measured as a percentage relative to the highest actually achieved score for that grade item. So if the Final Exam was out of 40 points, but the highest actually achieved score was 36, then whoever has 36 points gets 100% while everybody else gets a percentage relative to that.

If the highest actually achieved score is 0 for some reason, everybody gets 0% on that grade item. If I get the impression that you are “gaming” the relative grading system, I reserve the right to give everybody 0% on the grade item as well.

I determine the final grade you receive as follows: Percentage scores for grade items in each category are averaged, that average is multiplied by the weight of the category, and finally all weighted averages are added to yield your overall score. Your final grade is then determined by the following fixed scale (there is no “curve“ in the traditional sense):

99 – 93A7
92 – 90A-3
89 – 87B+3
86 – 83B4
82 – 80B-3
79 – 77C+3
76 – 73C4
72 – 70C-3
69 – 67D+3
66 – 60D7
59 – 0F60

This grading scale is in line with the way grade point averages are computed here at Johns Hopkins. (Note that the A+ grade is a “special distinction” and will only be awarded, regardless of numerical outcomes, if warranted.)

There is an adjustment process for final grades as well, although I do not have to use it very often: If there are clear outliers, for example two students doing way better than everyone else, I will remove those students from the statistics and give them A+ grades. This has the effect of moving everybody else up, although it is unclear in advance by how much. If after removing outliers there is still nobody with a solid A grade (that’s 95% as far as I am concerned), I will add a fudge bonus that moves everybody up by a fixed percentage until I have at least one solid A grade. Do not rely on this adjustment process for your planning, I almost never have to use it here at Johns Hopkins!

It is sad but true that there will always be some students who are “just one percentage point” away from the next higher grade. That is the game we play in school. I do not like giving grades in the first place, and I really do not like giving grades that sit right on the borderline. But it is what it is. Sorry.

Rounding in Grade Calculations

Something must have changed in the world of students since 2015, because suddenly everyone seems very interested in how the grading script does rounding. The short story is this:

The relative score for a grade item is the number of points achieved divided by the maximum number of points for the grade item in the course as a whole. The relative score is a floating point number between 0 and 1 (inclusive) and is rounded to two significant digits, then expressed as a (whole) percentage. So if you received 29 points and the maximum in the course was 37 points, your relative score would be 29 / 37 = 0.783783... which is then rounded to 0.79 or 79% by the grading script. The remainder of the computation to determine the final grade is done using the 79% and not the original, unrounded, relative score. Obviously I am too nice when it comes to grades.

If the weighted average of all grade items, which is what determines your final grade in the course, comes out to 80.3111...% however, that turns into 80%; on the other hand 80.8333...% turns into 81% for the final grade. (Of course in this example that wouldn’t make a difference, both percentages are a B- grade in the end.)

Assignments and Projects

In most of my courses, assignments and projects account for a large portion of your final grade. You can find detailed information about specific assignments and projects on the relevant course website, but some general rules apply:

  1. We will not accept late submissions for full credit. Not ever! You have to submit before the deadline to be sure that your submission actually arrives in time, so if you submit in the last minute you might not make it and that’s your responsibility.
  2. We may grade (parts of) an assignment or project automatically, especially in the case of programming assignments. Following the specifications for an assignment exactly as given is very important for this to work. Even the “correct” output loses you points if you do not also follow the “correct” format for it.
  3. Obvious disregard for your work will always get you 0 points. For programming assignments you show “obvious disregard” by handing in code that either doesn’t compile or that fails so miserably that we can be sure you never actually tested it. For written assignments you show “obvious disregard” by making horrendous amounts of spelling errors or handing in text files that are formatted so badly that no sane reader would want to waste their time on them.

Note that some of my assignments will require that you learn something by yourself, for example how to use a certain library that wasn’t covered in detail in lecture. This is quite intentional because you have to learn how to learn something, especially in the case of programming projects. For this and many other reasons I strongly encourage you to start every assignment as soon as it is posted.

Also note that you can submit a project as many times as you wish, we will grade only the last submission received before the deadline (but see Late Days and Grace Period, except for Summer Session courses). So if you are working on a project with multiple problems, you can submit once after you get done with each one. That way you can be sure that we have at least a partial submission just in case you never get done with all the problems. Just make sure that each submission contains all finished problems as we will not “fish” different parts out of different submissions.


Depending on the course in question I may take attendance, and attendance may influence your final grade in a course. If the grading scheme for a course lists “Participation” as one of the categories, attendance is part of that percentage of your final grade. If a course is graded solely based on attendance (this is typical for some lab courses), attendance will obviously determine your entire course grade instead. (Also see Assessment.)

Regardless of whether attendance is graded or not, if you miss a lecture (for whatever reason) you’re on your own to obtain details of what was covered. I will not “repeat a lecture” in office hours; I will, however, gladly answer any specific questions you may have.

Broken Laptops and Other Disasters

This is not only about “broken laptops” but also about “crashed disks” and “dogs that eat homework” and “files deleted by accident” and all the rest. You are responsible for keeping your work safe and in a state that is ready for submission regardless of the glitches that life throws your way. Luckily there are many ways for doing that these days, for example:

  1. Get yourself a free Dropbox account (or a free account from one of their many competitors.) Keep all your course work in a private cloud folder that syncs automatically. (And read this for details on how to get even deleted files back).
  2. Learn how to use a revision control system such as git and sign up for free private repositories with a service like Bitbucket. Heck, for students github offers free private repositories as well.
  3. Make regular backup copies of your folders for class on a USB stick before you switch off your laptop, just on the off-chance that it will not boot back up again the next time you try.
  4. If you don’t trust cloud providers with your precious data, and if dealing with USB sticks is too tedious, learn how to set up your own private server and use tools such as git and Unison and the like. (That’s what I do.) Your account in the CS Department may also be suitable for this.

Now, if your laptop really goes up in flames or if any of the other “bad things” mentioned above happen, you can use another computer to access your files and finish your work. (Please don’t try to get an extension with a sob story about your rusting disk drive, it simply won’t work.)

Contacting Us / Asking Questions

If you have questions or concerns, you are probably interested in getting a reply quickly. The more people you can ask, the more likely it is that someone will answer you quickly. With that in mind, please proceed as follows:

  1. Consider posting on Piazza. But please don’t post before you search previous discussions, that would be embarrassing. Once you post your question, everybody will see it and you can often get an answer within minutes. Certainly the best option if your question can be asked in public.
  2. Consider emailing the staff list for the course in question. The addresses for staff lists follow a pattern: csXXX-staff@bloat.org with XXX replaced by the last three digits of the course code. So if you’re trying to contact the staff for 601.220, you’d send email to cs220-staff@bloat.org as it were. Since everybody on the staff will get a chance to answer your email, you should still end up with a relatively quick turn-around.
  3. Consider emailing a staff member directly. That’s almost certainly a really bad idea because now you’re looking at a turn-around time between an hour to an entire weekend. Please only do this if you are sure that nobody else but this person can help you. That’s exceedingly unlikely.

Speaking of asking questions: While we all agree that there are no “stupid questions” as it were, there certainly are questions that make it obvious that the person asking didn’t do any work themselves. And why should anyone help somebody like that? If you want to ask better questions and improve your chances of getting useful answers, you should probably read these articles now. After all, you’ll keep asking questions for the rest of your life, so you should learn how to do it well…

Disability Services

If you have any kind of disability that requires accommodation in the course, you should obtain an accommodation letter from Student Disability Services. Please send me a copy of that letter as early in the semester as possible.

Since I cannot usually keep the details in my head for an entire semester, please remind me of your letter and the necessary accommodations, especially before exams (I may need some lead-time to arrange for alternate testing procedures).

Enrolling Late

If you enroll late you will not be able to “make up” any grade items that you missed because their deadlines have already passed. Even if you cannot enroll on time, for example because you’re on the waiting list for a course, I recommend that you attend from the first day and submit anything that might be due just like if you were actually enrolled. (In other words, we will not ignore your on-time work simply because you had to formally enroll late.)

Speaking of waiting lists: Please don’t ask me to be “manually enrolled” before the first week of the semester is over. There are usually quite a few students who drop during that week, so it’s frequently possible to avoid a lot of extra work (on all sides) by just “waiting it out” as it were.

Exams and Quizzes

All of the written exams I give are 40 minutes long and there are almost always four pages of questions: one page of true/false, one page of multiple choice, one page of short answer, and one page of mystery (which can contain just about anything).

All of the written quizzes I give are 20 minutes long and there are usually two pages of questions; many of these will be true/false and multiple choice, but some may be more open-ended.

Exams and quizzes are cumulative, closed-book, closed-notes, open-mind and cover material from homeworks, projects, lectures, readings, and pretty much anything else we did in the course.

I do not give written exams in all courses, but I do so in many; unless I am teaching a course for the first time, I am happy to provide exams from earlier semesters for practice. I frequently like my questions enough to reuse at least some of them; doing all the practice exams you can get your hands on is therefore excellent preparation for the actual exam.

I never give out an “official” answer key, but you are welcome to discuss possible answers all you want, on Piazza for example.

Grace Period

This particular rule does not apply to summer session courses. See Summer Session for details.

For grade items that come with a specific deadline (most commonly projects in my courses) there is a grace period of one hour: If you submit within one hour after the posted deadline, we will still accept your submission but your total score for the grade item in question will be reduced by 10%.

Grace periods interact with late days in ways that may not be completely obvious at first, so here’s an example. Say an assignment is due at 10:00 pm, and let’s say that your submission would have netted you 90 points. There are the following possibilities:

  1. If you submit before 10:00 pm, up to and including 10:00 pm itself, you would receive 90 points.
  2. If you submit after 10:00 pm but before the grace period is over, so anytime between 10:01 pm and 11:00 pm, you would receive 81 points instead (a penalty of 9 points).
  3. If you submit after 11:00 pm and you still have a late day left, then you use up one late day and your new deadline is 24 hours after the original deadline; so in this example the new deadline is 10:00 pm the next day; that new deadline comes with a new grace period as before.
  4. If you submit after 11:00 pm and you don’t have a late day left, then you will receive 0 points (just as if you had never submitted the assignment).

Note that each 24 hour period that you are late with your submission will eat up a late day, regardless of whether or not you have enough total late days. So if you have 2 late days left, but you submit at a time when you would have needed 3 late days, both your 2 late days are gone and your submission receives 0 points. Be very careful about when exactly you submit something!

Grade Complaints

This particular rule works differently in summer session courses. See Summer Session for details.

If you have a problem with the grade you received for an assignment or exam, you are free to complain about it—and indeed you should. However, we can’t very well deal with complaints about Project 1 in the last week of the course. Therefore you must complain within one week of the time you received your grade for us to process the complaint; for summer session courses you must complain within two days of receiving your grade.

It might be obvious, but “one week” means “seven days” means “seven 24-hour periods” and nothing else. If you submit your complaint later than that, we will not deal with it. Obviously it’s enough to send your initial complaint (with details about what exactly is wrong) before that deadline, it’s not required that the entire process of resolving your complaint takes place before the deadline (although that’s usually a good idea).


If you have to miss class due to illness, please inform me as soon as possible to discuss the details. You do not need a doctor’s note if you miss a class or two, but of course it is possible that you will miss attendance points. You also do not need a doctor’s note if you decide to compensate for a brief illness with a late day.

If you require further accommodations due to a long-term illness however, you must request a doctor’s note and hand it to me once you return to school; details of the illness are not important, but a clear statement that you could not attend school for a certain amount of time is required.

Note that Student Health and Wellness does not provide written doctor’s notes, but you can have them contact the Dean of Student Life who in turn will contact your instructors, including me. (Also see Late Days.)

Incomplete Submissions

We can only grade what we receive through the submission system; in particular, we do not accept email submissions. If you forget to include a required file in your submission, or if you include the wrong version of a file, the only way to “fix” that oversight is by making another submission (with whatever penalty that implies).

The increasingly common “…but I had it done on time, I just forgot to put it into the archive, you can check the last-modified time on my files, here is a screenshot of my desktop folder…” scenario is not a proper submission and we will not look at whatever you email us in this regard.

If there was a genuine problem with the submission system, one that we can reconstruct from the log files, we will obviously make an exception. However, there has not been a genuine problem with the submission system in years. Indeed, the two most likely problems if you have trouble with a submission are (a) that your file is too large or (b) that you didn’t follow the naming conventions properly; read those error messages!

Late Days

This particular rule does not apply to summer session courses. See Summer Session for details.

You are responsible for tracking how many late days you have used up already and how many you have remaining!

All students start the semester with a budget of five late days. A late day can be used to extend the deadline of a grade item by exactly 24 hours. Late days cannot be used to delay an exam or a presentation. Late days cannot be used to make up attendance. Late days have to be used in their entirety. You can only use a late day if you have one left in your budget; a team can only use a late day if all team members still have a late day left.

All you need to do in order to use a late day is submit a grade item after both the deadline and the grace period are expired. There is no need to “request” a late day in advance, it’s solely based on when you submit. Of course you must still have a late day available, otherwise the late submission will result in a score of 0. Note that since late days are used up automatically based on your submission, it’s very important that you weigh your options carefully. You cannot “get back” a late day after the fact because you (or one of your team mates) made a mistake.

Late days are a valuable commodity and you should use them sparingly. They are primarily intended to help you deal with unexpected circumstances, so you should not make them part of your normal planning process. (Also see Illness and Religious Holidays.)

Note: You cannot use late days to delay an assignment until after the semester is over (meaning after the final exam for your course has been given). You can, however, delay an assignment that’s due on the last day of classes into reading period; you do this at your own risk, we are not responsible when you do worse on other exams as a result of spending your reading period working on an overdue assignment.

Peer Reviews

Many of the courses I teach require some amount of team work. In some courses, however, the team work aspect is so important that it gets its own grade item. Since neither the teaching assistants nor I can directly observe how you and your partners work together, I usally ask you to “review each other” at some point. How often this is done depends on the particular course so check the course website and Piazza regularly for announcements and deadlines.

The goal of the peer review process is to evaluate the contributions you and your partners made to a particular project (or phase of a project as the case may be). Each of you is going to evaluate everyone else, including yourself! You assign a score from 0% to 100% to everyone, including yourself. We then average all the scores a student receives, and that average is the student’s final score for that peer review.

Before sending in the scores, please take a moment to reflect on your team’s work for the assignment or project you’re evaluating. You shouldn’t do anything “rash” since you don’t want your partners to do that to you either, right? Try to measure the genuine contributions of your partners to (a) the actual assignment or project and (b) your own education. Don’t assign a score based on how much you “like” somebody. Don’t assign a score based on the “lines of code” somebody wrote. In short, don’t assign a score based on any one particular thing. Think about all the things somebody did or didn’t do. The person who found the most errors in your code, although you got angry at them for doing so, might deserve a higher score than the person who kept telling you that everything is okay. The person who insisted on discussing your ideas for hours to make sure they result in a good design, or the person who helped you along by providing important sources, they all might have made a genuine contribution and thus deserve a good score from you.

Try to be as objective and as honest as you possibly can. When settling on everybody’s scores, please realize that a score of 59% or lower is equivalent to an F (failing) grade. So you should not use anything lower than 60% unless you have a really good reason. (Someone who literally did nothing at all might deserve a score lower than 60%, but hopefully nobody like that is on your team.)

You submit your peer review by sending an email to the staff list for the course in question, see Contacting Us above for details. The subject of your email should state clearly which assignment or phase of a project your peer review is for; it should also clearly state the official name of your team. For example, in 601.255 a typical subject line might be “Peer Review ALPHA for Trinomial Studios”. The body of your email should list, for each person on your team including yourself, their name, the score between 0% and 100% you award, and a brief justification for that score. The lower the score you award, the more detailed the justification should be. (Please stay objective and professional in your justification, don’t call anyone names.)

Please make sure that you don’t send your review to the wrong email address by mistake! Please make sure that you don’t forget to provide a score and a justification for yourself as well! If you do not submit a score for a team mate it defaults to 100%; if you do not submit a score for yourself it defaults to 0%.


I often use Piazza in my courses, mostly as a replacement for email, mailing lists, and other bulletin board systems. I look at Piazza as an asynchronous extension of the class room, a place where we all (students, instructors, assistants) can interact to deepen our understanding of the course material and to discuss how things are going in general.

Note that Piazza is a very important channel of communication. If you miss an important announcement because you are not properly signed up or you do not check the site on a regular basis, that is your problem. (Yes, this applies to clarifications for homework assignments as well.)

I allow semi-anonymous posts on Piazza but that does not mean that you can abdicate all responsibility for what you say. Please be professional and use anonymous posts responsibly instead of calling people names and being generally obnoxious. If things get out of hand, I may disable anonymous posts for the remainder of the semester.

If the grading scheme for a course lists “Participation” as one of the categories, Piazza activity is generally taken into account there. On the one hand you should not worry about the exact process by which that is done, you should just start using the system; on the other hand I always get pressed for a rule so I made one up: One relevant post on Piazza for each week of class means that you are doing okay in terms of participation. You should keep in mind that Piazza activity is usually correlated with a good grade in the course regardless of the formal “Participation” grade. (Also see Assessment.)

Religious Holidays

If you have to miss class due to a religious holiday, please inform me as early in the semester as possible to discuss the details. It is of course possible that you may miss attendance by not coming to class. Religious holidays are known to you well ahead of time, so you should plan the use of your late days accordingly to ensure that you will not have to rush anything. I will do whatever I can to avoid scheduling exams or presentations on a religious holiday, but you may have to remind me of your constraints as soon as dates and times for such grade items are published. (Also see Late Days.)

Submission Process

We use http://www.gradescope.com/ for homework submissions. You can find the necessary signup code on the Piazza site for the course in question. Please sign up for Gradescope with your real name as it appears in SIS!

The relevant assignment handout describes what files you are expected to submit and how we will build and run your code. Please make sure to include your name and email address in every file you turn in (well, in every file for which it makes sense to do so anyway)!


If an autograder exists for an assignment, it will attempt to give you useful feedback on your submission. It will not, however, give you a “meaningful score” for your submission, the actual grading process is still done by human beings.

Summer Session

Summer session courses run on a very compressed schedule, so many of the time-related course policies need to be different from courses taught during a regular semester. The big changes are as follows:

PolicyRegular SemesterSummer Session
Late Days5none
Grace Period1 hournone
Grade Complaint1 week2 days
Grading Scheme1 week2 days

Summer session assignments are usually due at 10:00 pm EDT, but check the assignment in question. For every (partial) hour the assignment is late, you will lose 10% of your score. For example, if you submit your final version at 11:35 pm, you lose 20% of your score.

Universal Insecurity Clause

I try to be as explicit as possible about all my expectations, but sometimes I fall short in that effort. So whenever you are unclear about the requirements for a given grade item or about any of the policies for a course, it is your responsibility to contact the course staff and ask for clarification.

(It’s somewhat perplexing to note that some students interpret this clause as the instructor shirking his responsibility. If you’re one of those students, you may want to try to grow up: After all, it’s because of you and your esteemed predecessors that this clause exists. I would much prefer a world in which it wasn’t necessary to have it.)