Standard Operating Procedures
for csci0150 (a.k.a. CS15)
This document is designed to answer any of the day-to-day policy questions which may arise regarding CS15. You should read it carefully now and keep it handy for future reference. Please refer to it before asking a TA a policy-related question.
- TA Hours
- Mailing list
- Collaboration
- Labs
- The Sunlab
- Working From Home (your dorm room)
- Handins
- Design Checks
- Extra Credit Extensions
- Grading Standards
- Grading Procedure
- Late Policy
- Early Handin Incentive
- Extensions, Incompletes, and Complaints
- Other Questions
TA Hours
TA office hours will be announced as soon as the TAs decide what courses they will be taking this semester and will begin on Tuesday September 11th. These hard-working, underpaid disciples of Java will be available during TA hours to give you lots of personal attention and to help you develop good design and programming skills. TA hours will be held in the TA room (CIT 271), also known as the fishbowl, every day of the week! A listing of TA hours will be available online, off the CS15 homepage.
The TAs are available to you as mentors, and are intimately familiar with the course material, especially the assignments. Please feel free to ask them questions about an assignment or lecture. If you do not understand a concept or a particular aspect of an assignment or lecture, would like to discuss design techniques, or just need some advice about the course, the TAs are at your disposal. The TAs are available during weekly scheduled TA hours and through weekly labs, as well as after class.
Although your TAs are here to help you in any (course-related) way they can, please keep in mind that they are undergraduate students as well. They all have classes and lives too. In order to ensure that TAing does not get out of control and hamper their lives, we ask that you obey the following (common-sense) rules: Everyone is expected to use the TAs wisely. They are there to help you, but please do not take undue advantage of the TA system. This means that you should not go to hours and expect a TA to look up material printed plainly in the lecture slides or to write a program for you. (Of course, if you have read and thought about the slides or assignment and still do not understand, then go to a TA as soon as you can.) To save both the TA's time and yours, think out your problems before going to see a TA. If you have a question about the course or its contents, see if it is answered in any of the handouts, and check the MOTD on the website (www.cs.brown.edu/courses/cs015) before seeing a TA.
If there is an error in one of your programs, you must first try to find it and fix it yourself. Be sure to utilize the resources available through the CS15 homepage, such as the Online TA and Java Reference Guide. If, despite your dedicated efforts, the program still doesn't work, bring a printout to a TA along with relevant documentation, pseudocode, design and object breakdown, and evidence of your debugging efforts (this would include your analysis of the problem, and any ideas for possible explanations). Presented with evidence that you have thought about the problem, any TA will happily help you. However, TAs will not be sympathetic if you do not try to work toward a solution beforehand.
In past years, TA hours have been very busy in the last few days before a program is due. That means long lines to see a TA. (Hint: Start Early!) The TAs reserve the right to end TA hours promptly at the time posted. Thus, if TA hours are scheduled from 7:00pm to 11:00pm, and there are already 10 students on line by 10:30pm, the TAs may ask students arriving after 10:30pm to come back the next day. So, if a due date is near, do not depend on asking a question in the last 10 minutes of that night's TA hours.
Although the TAs are fellow undergraduates, please remember that this does not make them fair game for help outside of TA hours. It is very tempting to ask a TA a "quick question" when you see one of them in the lab or elsewhere. We therefore insist that you do not call TAs at home or ask them course-related questions outside of class, TA hours or lab. In order to ensure that this does not happen, the entire TA staff has been instructed not to answer questions outside of hours (and especially not to answer questions in the lab). Please respect your TAs' rights to have their own private lives.
If you have concerns about the class, or are thinking about dropping it, you should talk to a Head TA first. They can help you find extra help, from a University appointed tutor, for example. Learning to program can be overwhelming at first, so sometimes that little extra help can make it all click. If you cannot make one of their TA hours, feel free to set up an appointment via email: cs015headtas@cs.brown.edu.
Mailing List
The mailing list exists mainly as a forum for you to request and receive clarifications on assignments, lectures, and class policies. For example, if you need help understanding a concept or you're not sure where you should hand in an assignment, you can post to the mailing list and a TA will answer your question. Instructions on how to use the mailing list will be posted to the MOTD. TAs will check the mailing list and answer any questions posted. They may also post about common errors they notice while holding hours. The mailing list is not a substitute for TA hours. Do not post because you cannot make it to hours, and by all means do not post snippets of your code or specific questions regarding your design/implementation of an assignment to the mailing list. If you have a specific question about your program or code, please go to TA hours.
A few mailing list policies:
- All posts should start with a topic in square brackets. e.g. a question about the Objects assignment in the mailing list would look something like: "[Objects] what is pacman?".
- Do not post code to the mailing list.
- Do not post answers to or specific information about homeworks/programs on the mailing list.
- Do not post anything that would be a violation of collaboration policy to the mailing list.
Collaboration
Please see our collaboration policy for all information on this subject.
Labs
All labs will be led by 2-3 TAs. The labs are designed to allow students to write small programming assignments with the support of both their peers and their TAs. Lab topics will correlate with the lectures and serve primarily to reinforce concepts taught during class, and are good preparation for upcoming assignments.
Please come to labs prepared to participate actively, having read all the material to date.
Labs will be held once a week. You will be asked to sign up for a permanent lab time during the first weekend labs. We will do our best to accommodate your preferences.
All labs are mandatory as they are a good way to solidify your knowledge of the material covered in class, get your questions answered outside of TA hours, and connect with your TAs. You will be given full credit (100%) for completing the labs and no credit (0%) for labs you do not complete. Therefore successful completion of labs will factor into your grade for the course. Labs can make the difference in your final grade, both positively and negatively, so make sure to attend them! Labs will be due the day before reading period begins, Friday December 6th, in case you do not finish the labs during lab time. As with everything else in CS15, we strongly advise that you do the labs on time.
You are responsible for all material covered in lecture and labs. If you are unable to attend a lab meeting, please contact the HTA leading your lab as soon as possible either through email or during their TA hours. They will tell you how to make up for the missed material or will direct you to another lab for that one meeting. If you neglect to inform us and skip a lab, you will only be able to receive 50% for that lab. To clarify, although the labs are due at the end of the semester, you are still expected to attend the labs weekly.
The Sunlab
The Sunlab (CIT 143) is where you will spend time writing and debugging your programs. There is a lot of very expensive computer equipment in this lab, and we must recognize and appreciate the privilege of being able to use such a state-of-the-art facility. So please help keep the sunlab spotless!
No Food or Drinks Allowed in the Lab.
You may place food or drinks on the table at the back of the lab as you enter.
The sunlab will be open from 9:00am to 2:00am Monday through Thursday, from 9:00am to 10:00pm on Friday and Saturday, and from noon to 2:00am on Sunday. The consultant may keep the lab open later on any given day, but don't count on it! Note that the sunlab schedule is subject to modification. Check the schedule on the door of the sunlab or the System MOTD that pops up in a window when you log on.
There is always a Department of Computer Science lab consultant (not associated with any specific course) on duty in the sunlab. He/she should be asked questions of a technical nature only. The consultants are responsible only for knowing about the hardware and the system software (Linux). Even if one of your TAs is consulting in the sunlab, course-related questions should only be directed to a CS15 TA during TA hours.
Please obey the rules posted in the sunlab. A waitlist policy will be in effect when the sunlab fills up and no free machines are available. When this happens, the consultant on duty will announce that a waitlist is in effect and will ask those waiting for a machine to place themselves on the waitlist (monitored electronically by the small terminal you see when you first come in). For more information on the sunlab, please see the consultant on duty; he/she is sitting at the computer at the door of the sunlab.
Working From Home (or your dorm room)
In an effort to relieve the crowds in the lab at crunch time and to help you realize some of the benefits of Java's portability, CS15 will allow you to work on your home computer. While this is not fully supported, it is offered to those who feel comfortable with the instructions provided off the “Documentation” section of the CS15 homepage. There are two ways to do this
- Logging in remotely: This means that you use your own computer to connect to one of the machines in the lab, without actually being there. This is initially carried out using SSH, affording you something very close to a regular Linux shell, with no graphical support at all. You have the option (necessary for running anything graphical), of running a program that allows the display that you'd normally see on the PCs in the lab to be directed to your home computer. All the shells you use and the displays you see as a result will be the same as in the lab. There are no worries about where your files are or any special handin problems. See the instructions off of the “Documentation” section of the CS15 homepage on how to do this. This is an established means of working remotely.
- Configure Java on your own PC: This can be tricky so we recommend you either work in the lab or log in remotely if you have to. That said, if you know what you’re doing and really want to work directly on your PC, our support code is available. You may have to do some research on your own, or you can ask a TA about it, but don’t expect them to bend over backwards setting up Java for you.
Handins
Most of your assignments in CS15 will be programs, but you will have a few written homeworks. Programs will comprise most of your grade and probably most of your time spent on CS15.
All written homeworks should be handed in to the CS15 handin bin on the second floor of the CIT. It is located in the hallway located outside of the TA Lab (CIT Room 271) in the bin marked “CS15”. All written homeworks must be handed in by 5:00pm on the due date. No late written homeworks will be accepted.
Programming assignments should be handed in electronically by the time and date specified on the assignment handout. Late submissions will sometimes be accepted (see below).
After you write your programs, you should test each one with your own input, as testing is an important part of learning how to program. Should testing reveal that your program is still less than perfect by handin time, you should comment in the header of your App any mistakes or problems which appear in the code. Do not leave bugs in your program uncommented in the hopes that the TA grading your program will not notice them. This will not work and will annoy your TA. Comments which thoroughly explain your understanding of why something does not work will greatly help the TA grading your program and will generally improve your grade for the program.
When you have completed your program, hand it in electronically by using the cs015 handin script (aptly named): cs015_handin <ProjectName> . For example, to handin the LiteBrite project, you'd type the following into a shell:
cs015_handin LiteBrite
and then hit Enter . Make sure your name, your account name, the date, and the program name are clearly visible in each class or interface file. Programming assignments must be handed in online by the date and time listed on the assignment handout. See the section on late policy for additional information.
You should not hand in a printout of any source code unless specifically instructed to do so for the assignment. If you wish to print your source code at any time (e.g., to take home and look over or to take to TA hours), open the file you would like to print in Kate and select Print from the Kate menu. You will be able to pick up your printout at the printer in the front of the lab by the entrance. You will receive a printout of your code, with written comments, when it is graded and returned. Please do not leave code printouts at the printer, as other students may come across it.
Design Questions
With each assignment handout we will attach a list of questions that are meant to get you thinking about the "right" way to design the program. For each assignment, you will need to write down answers to these questions and submit them to the CS15 handin bin in the hallway outside of the TA Lab (CIT Room 271) by the date and time specified on the assignment handout.
Although they might seem like a nuisance, thinking about design before starting to code will greatly reduce the time spent programming (and especially debugging).
Help Sessions
There will be a help session offered for each project. After the design questions have been turned in, the TAs will look through them looking for problematic areas. A help session will then be held (typically the night of the design questions being due) to address these issues as well as any other areas we feel you may need some extra help on. If you cannot make it to the help session, they will be available in recorded form off of the website. Help sessions are generally held at 8pm on the day Design Questions for the project are due.
Extra Credit Extensions
Those of you who may have extra time, previous programming experience or a strong interest in computer science are welcome to outfit your already-working programs with extra credit extensions. Extensions to the original assignment can make it more useful, flashy, or user-friendly. We would like to stress several points about extensions.
First, although they are extra credit, all of your programs should be designed with extensions in mind. Each program handout starting with Cartoon will include a list of extensions that should be considered when designing the rest of the program. Be careful to read this section, even if you are not planning on implementing the extensions.
Second, they are extra credit, and therefore to be done only after the original assignment is completed in full. You must include full documentation of your program's additional functionality in the program header. In other words, if everything is working right, extensions will give your grade a boost, but if you did not do part of the assignment, the extensions will be worth nothing. This is not arbitrary; most extensions, while requiring extra work, do not teach new concepts.
Third, you may not redefine the original assignment. This means that you have to turn in a program which works according to the given specifications. We will suggest some specific extensions for the assignments, but you are more than welcome to invent your own.
Fourth, and most importantly, never start on extensions until you have the standard program working, since they will not count until the original program assignment is fully functional. We cannot stress strongly enough that extensions do not, in any way, make up for a non-working program. The same goes for early handins; no form of extra credit can compensate for a non-functioning program!
Grading Standards
Grades in CS15 depend solely on the assignments that are required during the semester. The table below shows the relative weight of each assignment used in calculating the final grade. The weights may change slightly over the semester.
The relative weight of each assignment |
|
Objects |
2% |
Clock |
3% |
LiteBrite |
5% |
TAPlayhouse |
8% |
References |
2% |
Cartoon |
10% |
Swarm |
12% |
Tetris |
18% |
PizzaDex |
6% |
Final Project |
24% |
Labs |
10% |
Total |
100% |
A well-designed assignment that meets the specifications perfectly will receive the maximum number of points allotted for that assignment. Extra credit can count for a maximum of 10% of the assignment's value. Credit given for extensions to the program will be based on the utility of the extra work.
As we stated before, your final grade will be based upon individual assignment grades, your final project grade, and your class and lab participation. However, in addition to these grades, students will receive course credit only if they submit all assigned projects; furthermore, all submitted projects must be functional.
Your grade for a particular assignment is determined by how well it meets the standards set in the course and the assignment specifications, not simply by whether or not it works. Part of the art of programming involves a structured, disciplined approach to solving problems. Conventions for programming are stated explicitly in the CS15 Coding Conventions Guide and in lecture slides through examples. This means you must study sample programs and documentation standards carefully and absorb the conventions contained therein. Absorb does not mean copy; you should never blindly copy code from an example.
You are required to follow the CS15 Coding Conventions.
Grading Procedure
After assignments are handed in, they are distributed amongst the TAs for grading. After the TAs grade and comment on the work and their grades are rechecked by the Head TAs, they will notify the students whose homework they've just graded that it is ready to be picked up. All assignments, whether paper or electronic, are handed back as a hard copy in the handout bin outside the TA Lab (CIT 271), in the large, metal cabinet. This is where your grades for that assignment will be located.
This is your second chance to learn from that assignment. Re-read what you've done and pay attention to the TA's comments. Besides deciding how many points you get for your work, TAs give you helpful feedback and comments. Sometimes, a TA may even suggest that you come to hours to go over some topic. Please take advantage of these notes.
The TAs will critically evaluate all of your assignments. We consider the most important aspect of grading to be the constructive comments that the TAs will write on programs and/or give you during lab or TA hours; assigning the grade itself is no more than a necessary evil.
Late Policy
The late policy for written assignments is very simple: no handins will be accepted after 5:00 pm on the due date printed on the assignment. There are no "late days" for these assignments.
Our late policy for programming assignments is based on piles of feedback from past CS15 students:
- Programs handed in online after the due date and time are considered late. In addition, all programs, except for the final project, are given a late due date and time specified in the handout. Programs handed in after the due date but before the late date will be penalized 8% of the possible points for that assignment. The late date for an assignment is two days after the due date. (A late submission of a program that would have received 47 out of 50 points would instead receive 43 points. (47 - (8% of 50) = 43)).
- You are entitled to one late pass during the semester. The late pass allows you to turn in one program by the late date without penalty. Note that the final project must be turned in on time. This pass is of no use with anything turned in after a late due date. At the end of the semester, we will apply your late pass to the program for which it will be most beneficial to your grade. Remember, however, that you only have one late pass.
- Anything handed in online after the late date will receive a No-Credit.
- Assignments that are not given a late date and are handed in after the due date automatically receive a No-Credit.
- Final projects cannot be late.
- If you receive an NC on any assignment, you must hand in a working copy of it by the end of the semester in order to get credit for the course. Even if you’re course average with the NC is above the threshold for passing, you will not receive credit without submitting working versions of all assignments.
Early Handin Incentive
In past years, despite repeated warnings to students to start early and finish early, there have been constant waitlists in the lab and many bottlenecks during TA hours in the few days before a program is due. Students also did not seem to learn from the experiences of the first few programs; indeed, the waitlists and bottlenecks got worse as the semester went on.
Thus, in order to motivate you to start early and finish early, and thereby help alleviate these stresses, we developed an early handin incentive a few years ago, which seems to work well. Any students who hand in their programs two or more days before the on time due date will receive extra credit of 4% of the total value of that program (e.g., a score of 80 on a program worth 100 points would become a 84).
We will only count the last handin that you submit. If you handin early and then revise your program and handin on time or late, your early handin will be ignored.
Written homeworks do not have early or late dates; late handins will not be accepted.
Extensions, Incompletes, and Complaints
All due dates in this course will be rigidly enforced according to the mechanics described above. If you need an extension on an assignment for medical reasons or other circumstances beyond your control, you should see a Head TA as early as possible before the assignment is due. No extensions will be granted on the day a program is due, barring a dean's note. We will only grant extensions due to sickness, injury, or serious personal or family problems. We also require an official note from Health Services, your doctor, or a dean.
Incompletes in the course will only be given to a student if he/she has formal permission from a dean.
If one of your assignments has not been returned, you should see one of the TAs and the situation will be rectified.
If you are dissatisfied with your grade on any program, you should first see the TA who graded it (the TA's name is on the program grader sheet). If you still object, see one of the Head TAs. Your final resort is, of course, Andy himself. In a related vein, TAs will be happy to discuss the techniques you used to design and code a program at their lab or normal hours after the program has been returned. You are encouraged to go to TA hours to get extra feedback.
If at any time you have complaints about policy or feel you have been treated unfairly, by all means, speak to a Head TA about it. If the Head TAs are unable to resolve your problem, please feel free to see Andy about what's bothering you.
Other questions
If at any time you have feedback about the course or questions that have not been answered by this or by the Student Missive, we encourage you to talk to any of your TAs or Head TAs. CS15 is a challenging course, but the rewards for learning the material are great. The TAs are here to help you with this challenge.
