Home AP Computer Science Computer Science Principles FOOP Functional and Object-Oriented Programming Programming for Mobile Devices
Current Schedule Favorites Class(room) Policy Blog Gunn Girls Tech Club Send Me Email

Computer Science Course Policy Stuff

Henry M. Gunn High School

Department of Mathematics

{and Computer Science}


  AP Computer Science, Programming Concepts, Introduction to Java, and Animation Using Virtual Worlds


2015--2016 Academic Year



(This policy is a modified version of the one written by Brian Harvey at UC-Berkeley.  Much of the language is exactly what you will see at UC-Berkeley, and some has been modified to be specific to Gunn High School.)

This is written for students, but it is hoped that parents who are curious will find useful information here as well.


Instructor: Josh Paley

Classroom: Room N215

Office: Math/English building

Phone: 650-354-8247

Email: jpaley@pausd.org

Office Hours

My schedule can be seen here. I often can be found after school in room N215, and I run a club on Mondays and Wednesdays until around 5:00pm. I expect to be around after school more often than that to try to eliminate the "I tried to talk to the teacher but he is never around" excuse.

Office hours are primarily for short questions and administrative problems.  I am happy to make appointments for longer periods of time if you feel that you need it.  Please don't be shy.  I'd much rather see you as soon as you don't understand something than right before an exam or a deadline.  It's not an imposition---I like teaching.  Please don't ask me about individual administrative problems in class.  I have to be in my office to have access to my files.

Notes: The policies in this document are subject to change, though that rarely happens. This is also a living document, so it may change, though that has never happened during a school year.

Most of the policies are discussed in reference to the computer science courses that I teach. The grading for math classes is not the same as for computer science classes, so please refer to the classroom handout for that. Some of the policies won't make sense outside of a computer science classroom, but still give the gist of my views in general.


Do You Belong In This Class?

Anyone an take Computer Science Principles. It is designed for students who want to learn some computer science but don't want a hard-core programming class.

Functional Progamming and Object-Oriented Programming are good places to be if you want to learn basic programming principles. The latter is a good place to be if you want to learn an industrial-strength programming language and some more concepts. You are not expected to have any programming experience for either class, but the both are prerequisites for the AP class unless you get my permission to omit one or both.  You will be expected to work with your classmates in a professional manner on homework assignments and projects.

The fact of the matter is that people in many professions outside of high tech still benefit from programming knowledge.  If you need to do any form of computational work, some understanding of how a computer works will likely be helpful.  If you have to do programming, even if it is something like a spreadsheet formula, some of the concepts in this class should be helpful.  

Any computer science class can be used to satisfy a vocational course requirement or mathematics requirement (but not both--you have to choose) at Gunn High School.  The intro classes are also a prerequisite for the AP Computer Science class.  The AP Computer Science class is basically a college-level course and really delves into a variety of programming paradigms and models. Students who earn As in the intro classes have typically been quite successful in the AP class.  

If you have a significant amount of prior programming experience, please come and see me.  It may be that you would be better suited for the AP Computer Science class or possibly some form of individual or group project.  I will need to get a clear idea of your abilities before I sign off on bypassing Programming Concepts and Intro to Java as prerequisites for the AP CS class.



Course Materials

The textbook for the Programming Concepts course is Simply Scheme (2nd Ed.) by Brian Harvey and Matt Wright.  The textbook for the AP Computer Science course is Big Java (end Ed.) by Cay Horstmann. (Yes, I know there is a later edition of Big Java, but we do not use it at this time.) You will need to check out a copy of the appropriate book, and it is to be returned at the end of the term.  If you are taking the AP class, you need to purchase your own copy of Big Java. Failure to return a book that is school property will result in a fine.

In addition to the textbook, there is my web site: http://paleyontology.com/.  It must be used as a resource and will contain a schedule of critical events, documents, assignment information, and programming problems, samples, and solutions.  My hope is that you will be able to devote your effort during class attending to the lecture or working on problem solving with your group mates, rather than taking copious notes while you miss something important.

If you have a home computer, you may want to get a copy of Eclipse from www.eclipse.org for Java or the DrScheme for Scheme.  In the classroom, we have both.  That is all you need at home for the purpose of this class. 

There are lots of companies that make Java compilers. Eclipse is an awesome tool that provides facilities well beyond the scope of this class. It is a resource hog--256MB of RAM are the minimum recommended, and 512MB seems to be strongly preferred. I won't be picky if you use a different environment as long as you can turn working code in and demonstrate it in the classroom.


Class Structure

We have a variety of resources in the classroom, ranging from textbooks to computers to people.  You will be doing homework assignments in groups.  You will be doing tests alone.

With homework assignments, the expectation is that everyone will present results from time to time to the class.  The whole group will be graded based on the performance of the individual doing the presentation.  Therefore, it will be essential for everyone in the group to be comfortable with the solutions to the homework problems.

This is how life works in the real world.  People are hired into companies and work in teams.  When some people understand how to solve problems and others don’t, working groups typically fail over time.  When everyone is up to speed and comfortable, groups typically thrive.

Additionally, in the real world, when a group finds itself stuck, it doesn’t sit around and wait until the project passes a deadline and the company goes bankrupt.  Members of the group seek outside assistance.  You are expected to do so as well.  You may talk to other people as long as you do the following:

            1. Credit those people who helped when you turn in your assignments;

            2. Don’t outright copy someone else’s work—ideas are good, copying bad;

            3. Try to solve problems within your own group first.

Given these rules, what I am really asking is to use common sense.  Sometimes, it would be wrong to be overly paranoid about copying.  There may be situations where the most sensible way to discuss a problem is through the writing of code.  When that happens, transferring the information back to your group without feeling like you are copying may seem silly or impossible.  Just make sure that you do (1) and (3) and get everyone in your group prepared to explain the solution.

Like group performance, individual accountability is also important.  Therefore, we have tests.  During tests, you do not get to share information with other students.  Cheating on a test will result in an automatic grade of zero for the examination, a call from me to your parents, and an alert from me to school administration. Please note that if this has to be done, it is nothing personal.  It will be done in a professional manner.  While I am sure that your parents are nice and the school administration is nice, none of us wants to deal with that sort of thing.  My guess is that you won’t like it very much either. Please acquaint yourself with Gunn's academic integrity policy

Some (most?) of you have personal computers and may want to do the course work at home.  This is fine with me, although you'll have to be careful to make sure that what you hand in will work with Eclipse or DrScheme.  This means test your work with Eclipse or DrScheme before your group hands it in!



Policy Notes

In my dream world, I would be able to treat all of you like adults and let you decide whether or not to show up for class on a given day.  However, my dream world and the real world fail to intersect on this matter, and I need to take attendance.  It is mandatory.  I have to contact your parents if I do not hear from them first.  Failure to be in class also has a nasty consequence:

Absences from class will be recorded on your transcript.

I have absolutely no clue whether this influences offices of admissions at universities.

In my dream world, since I get to treat you like adults, I also don't want to worry about how the computers are used in the classroom.  If you want to play a game on the computer during class, really that should be up to you as long as you are not bothering anyone.  However, that is not how things work here for two reasons.  The first reason is simply that it is school policy.  The second reason has to do with practical experience.  When one person starts playing games or chatting or whatever during class, a teacher can reliably expect several other students in the vicinity to watch the game or the chat.  Many of them may choose to do the same, the problem propagates throughout the classroom, and suddenly we are unable to do the work we are here to do.

It's human nature to want to have fun.  Programming is fun.  So are games.  I play computer games.  But during class, we need to attend to the business at hand.  That doesn't mean class won't be fun.  (At least I hope that is the case!)  It does mean that if I catch you playing games in the classroom, I will end up calling your parents, putting the event in your file, etc.  None of us wants that to happen, so please adhere to the school policy.



Homework, Projects, and How To Find Them

There are class web pages: http://paleyontology.com/concepts/, http://paleyontology.com/java/, and http://paleyontology.com/auvw/, and http://paleyontology.com/AP_CS/.   From these, you can get the assignments for each class.  This includes readings, dates of exams, etc.  It is your responsibility to know when assignments are due and when exams will be given.  The cool thing about the Web is that you don't have to worry about losing this information.

If you want to work at home, you may also want memory stick so that you can make copies of all relevant files.  (Somewhere down the road, I hope to get all this set up on a central server for the classroom, but that has not happened yet.)



Computer Community Spirit

If you have lived in a dorm or other concentrated student housing, or if you have siblings, you have already learned that any facility shared by a large group of people is fertile ground for practical jokes.  You've also learned that selfishness in the use of common facilities can lead to a lot of bad feeling.  Computers are no different. 

In a dorm, people generally have a good sense of perspective about what's funny and what isn't.  Filling up your friend's room across the hall with balloons is funny.  Filling it up with water balloons is on the edge.  Filling it up with epoxy isn't funny at all.  But for some reason, some people seem to lose that sense of perspective when it comes to computers.  Perhaps it's because the damaged property is intangible; perhaps it's because with a computer you don't have to be physically near the victim.  Whatever the reason, try to overcome it.  It may be funny if your friend sees an unexpected message when s/he logs in, but it's not funny if s/he can't complete the course work because of deleted files.  Remember that the school has rules on this sort of thing, and one unpleasant part of my job is to enforce them.

The operating system we use provides enough security so that nothing you do will mess up another user by accident if you're minding your own business.  It is certainly possible to mess up the system deliberately.  Many of you are familiar with the personal computer environment, in which some people consider it a mark of sophistication to write "virus" programs that interfere with other people's computers.  You are now entering a different culture, with different values.  Our work depends on collaboration both within our department and with colleagues elsewhere.  The cooperative learning model is deliberately set up to encourage collaboration among peers, and that means easy access to information.

This policy requires some degree of trust among the participants.  If you've ever taken anything out of a safe deposit box at a bank, you know that it's possible to design a high-security shared facility, but that the cost is making it a big pain in the neck to use the secured data.  Some computer systems are designed to have bank-level security, and everyone will think you're very clever if you figure out how to mess up such a system.  Nobody will think you're clever if you violate school policy.

The form you sign to get a computer account through Gunn High School means that you accept a serious level of responsibility.  That responsibility will be enforced. In the 2009/2010 school year, a student flouted this policy and was suspended multiple times for his actions. This is not the sort of thing you want in your folder in the Guidance office when you apply to colleges.




I like computer games. What I don't like is what too much time with computer games can do to otherwise wonderful people. In the 2003-2004 school year, the problem was particularly pronounced. At least 5 of my students who were struggling confessed to spending more than three hours per night on the computer playing games, participating in chat rooms, or using a messenger program. More disturbing than this was that many of these students were not taking computer science courses. Every student who spent that much time on the computer failed to perform at a level that I would have expected from my experience as a teacher.

Suffice it to say I am not going to let this happen on my watch. If you want to play five hours of computer games at night, there is nothing I can do to stop it. However, if you try doing it in my classroom, you won't be in my class for long.

If you are a student, you should know that you are obligated not to play games. This is part of a contract that you sign on computer usage at Gunn. That said, if you are taking a computer science course, I am adding yet another contract for you to sign. This is a pact between teacher, student, and parent/guardian. Make no mistake--I will not tolerate games on my watch.



Homework and Programming Assignments

Each week there will be problems assigned for you to work on, most of which will involve writing and debugging computer programs.  You'll work on some of these problems individually, and some in groups.  These assignments come in three categories:

1. Homeworks are short, relatively simple exercises designed to introduce a new topic.  Most weeks you'll do these during the scheduled lab meetings the first half of the week, in groups of about four students.

2. Projects are larger assignments intended both to teach you the skill of developing a large program and to assess your understanding of the course material.

You may find that you need some time outside of normal class hours to do homework and projects.  The lab will be open most days until 5pm to assist you.

The purpose of the homework is for you to learn the course, not to prove that you already know it.  Therefore, the weekly homeworks are not graded entirely on the correctness of your solutions, but on effort.  You will get actual credit for an entirely wrong answer that shows reasonable effort!  But you should test your work.  If your solution is incorrect, I will insist upon some evidence that you know it's incorrect and what your thinking processes were.

The programming projects are graded on correctness, as well as on your understanding of your solution.  You must work together to ensure that all group members understand the complete results.  As mentioned before, I will be asking for explanations of how things work, and everyone must be prepared to give answers.  Cheating on projects will result in a zero score, a call home, and a note in your file.

To reiterate, copying someone else's work does not count as "reasonable effort"!  This includes copying from your friend who took the course last semester as well as copying from other current students.  You will get negative credit for copied solutions, and repeated offenses will lead to more severe penalties.  If you don't know how to do something, it's better to leave it out than to copy someone else's work.

You should complete the reading assignment for each week before class starts on Monday.  It will be very hard to function well on the homework assignments or in discussion if you are unfamiliar with the topics at hand.

Each week's homework assignment will be turned in by beginning of class on Monday.  The method for handing in assignments may vary depending on the task.  It may be online or in printed format.  Everything you turn in for grading must show the names of the group members.  In the event that a paper copy is to be turned in, each group member must sign the assignment. 



Testing and Grading

If it were up to me, we wouldn't give grades at all.  We would simply give you feedback on what you do well, where you may wish to improve, and so on.  The state of California has different rules, and it is probably wiser about such things.  In any case, I am required to give grades. 

The system I use for grading computer science classes should encourage you to do the course work and reward reasonable effort with reasonable grades. It should minimize intra-class competitiveness and grade pressure, so that you can focus instead on the intellectual content of the course; and it should minimize the time I spend arguing with students about their grades.  It is possible for everyone to get an A; I had a very hard-working AP section come very close to this. Anyway, to meet these goals, your course grade is computed using a point system with a total of 200 points. The table below shows roughly how things are calculated.

Graded Work Type Number Points Per Grade Weight
Homework and Projects 15 NA 50
Midterms 3 20 30
Final 1 40 20


My goal will be to write 30-minute tests, but you'll have a full period to work on them.  The relatively large number of tests should reduce your anxiety about ruining your grade by misunderstanding any one question.  In general, tests concentrate on the material that has been covered up to and including the week before the test.  In this course, the later topics depend on the early ones, so you mustn't forget things after each test is over!

Each letter grade corresponds to a range of point scores: 195 points and up is an A+, 190--194 is A, and other grades are shown below. Note that this is NOT a 90-80-70-60 scale.

Score Range Grade
195--200   A+
190--194   A
185--189   A-
180--184   B+
175--179   B
170--174   B-
167--169   C+
163--166   C
160--162   C-
157--159   D+
153--156   D
150--152   D-
0--149   F

The reason for the weird looking grade ranges is this: if you cannot do better than half of the points on the tests, you probably do not deserve to pass the class. It is very rare for this to happen and I cannot recall it being an issue for any student who has truly put forth solid effort on the homework.

If you make the effort to do the assigned work, you will do well on the weekly homework, since those points are awarded for effort and general understanding rather than for specific correct results.  The projects do require correct solutions for full credit, but since the work is done in groups, if your group cooperates you're very likely to do well.  (Group members who don't contribute to the group's effort may lose points.)  Finally, the tests are meant to be straightforward for anyone who understands the material; they do not require a lot of great creative leaps.

This grading formula implies that there is no curve; your grade will depend only on how well you (and, to a small extent, your partners) do, and not on how well everyone else does.  (If everyone does exceptionally badly on some exam, I may decide the exam was at fault rather than the students, in which case I'll adjust the grade cutoffs as I deem appropriate.  But I won't adjust in the other direction; if everyone gets an A, that's great.)

If you believe that I have misgraded an exam, return it to me with a note at the end of class, explaining your complaint.  I will carefully regrade the entire test, so be sure that your score will really improve through this regrading!  (I have had students throw away points out of sheer vanity; please use common sense!)

Incomplete grades will be granted only for dire medical or personal emergencies that cause you to miss the final, and only if your work up to that point has been satisfactory.  (Actually, I need to check with official school policy on this.  I am unclear whether this can be done.  But I hope so.)



Cooperative Learning Policy

Much of the work in this course is done in groups.  With the obvious exception of exams, you are encouraged to discuss all of the course activities with your friends as you are working on them.

Each group must turn in the weekly homework assignments separately.  (If it appears that some people are "freeloading" by failing to contribute, then this policy may change.).  However, before your group develops its own solution to each problem, feel free to discuss it with other students, in groups as large or small as you like.  (Note: When you turn in your solutions, you must give credit to any other student(s) who contributed to your work. Working on the homework in groups is both a good way to learn and a lot more fun!  Although the homework is graded on effort rather than on correctness, if you take the opportunity to discuss the homework with other students then you'll probably solve every problem correctly.

Working cooperatively in groups is a change from the traditional approach in schools, in which students work either in isolation or in competition.  But cooperative learning has become increasingly popular as educational research has demonstrated its effectiveness.  One advantage of cooperative learning is that it allows us to give intense assignments, from which you'll learn a great deal, while limiting the workload for each individual student.  Another advantage, of course, is that it helps you to understand new ideas when you discuss them with other people.  Even if you are the ``smartest'' person in your group, you'll find that you learn a lot by discussing the course with other students.  In fact, some research has shown that the person teaching ideas learns more during the process than the person learning them! 

What does it mean to do an assignment as a group?  The best groups tend to solve each problem together, making sure that every member contributes to the discussion and that every member understands the group's ultimate solution.  Your experience in this course will depend on the cooperation of your group more than anything else!

Second best is if you split up the problems so that each individual solves a few of them.  This can be okay, as long as you then get together, after doing the individual work, to discuss the results and ensure that each member of the group understands every part of the project.

It's best if your group also discusses the problems together before you split up to work on individual exercises, to make sure that everyone in the group understands the broad ideas of the assignment.

A bad group is one in which one group leader does all the work and the other members become spectators.  Computer programming is a skill; you learn it by doing it.  If you have a "freeloader" in your group, you're not doing him or her a favor!  It's important that everyone be an active participant.  Try to resolve any problems about working style within the group, but if that fails, ask me for help!

If you split up the work, then be sure that your group meets to collect the results before the last minute!  If one group member fails to do the work, the entire group is responsible for ensuring that it gets finished.

If some medical or personal emergency takes you away from the course for an extended period, please don't just disappear silently!  You should inform the other members of your group as well as me so that nobody is depending on you to do something you can't finish.

Since the textbook exercises are largely the same from one semester to the next in this course, you may be tempted to turn in solutions collected by a friend who's already taken the course.  Don't do it, for three reasons:  First, it's dishonest.  Second, I may well recognize those solutions and you'll get caught.  Third, doing the homework is the main way you learn in this course.

Unlike the homework and projects, the tests in this course must be your own, individual work.  I hope that you will work cooperatively with your friends before the test to help each other prepare by learning the ideas and skills in the course.  But during the test you're on your own.  And if you are caught cheating, then be prepared for all the ugliness that accompanies being caught.

In my experience, nobody begins the semester with the intention of cheating.  Students who cheat do so because they fall behind gradually, and then panic at the last minute.  Some students get into this situation because they are afraid of an unpleasant conversation with an instructor if they admit to not understanding something.  I would much rather deal with your misunderstanding early than deal with its consequences later.




No credit will be given for late homeworks or projects.  Please do not beg and plead for exceptions. I have tried allowing late assignments, and the problem is twofold. First I get bogged down teaching the present and the past at the same time which is bad because it is hard to move forward as a class when that happens. Second, students who hand in assignments late almost uniformly do horribly on tests and projects. Many get into the habit of assuming that late assignments are OK. No more.

Note that doing the homework late is an obvious thing for me. In a CS class, your files are on the classroom server and timestamped. In a math class, I mark off homework on a daily basis. Trying to cheat on homework by asserting that it is timely when it is not is a bad idea.

So, if some personal crisis disrupts your schedule one week, don't waste your time and ours by trying to fake it; just be sure you do the next week's work on time.



Frequently Asked Questions

Q: Can I eat or drink in the computer classroom?

A: Water in a closed container (i.e., with a sealable cap) is OK. Nothing else is.


Q: Are both Programming Concepts and Intro to Java mandatory prerequisites for the AP Computer Science class?

A: You can opt to do the problems at http://gunn.pausd.org/~jpaley/AP_CS/entrance.html. I only care about the Conway's Game of Life problem for admission to the AP course.


Q: My name is not on the teacher's list of students.  What do I do?

A: You must go back to the Guidance Office and work out the details with them.  Sometimes you are supposed to be in the class and don't show up on the list, so this needs to be corrected.  Sometimes you are put in the wrong class and the error is not corrected until grades come out.  It is a very good idea to reconcile any scheduling issues on Day 1 of the school year.


Q: What's your advice on surviving this course?

A: Two things:  Don't leave the homework until the last minute, and ask for help as soon as you don't understand something. Success in this class depends on work ethic.

Q: What is the best way to fail this class?

A: Don't ask questions. Seriously, asking questions is one of the single most important skills that you can own. Don't stop asking questions.


Q: Isn't it unfair that my grade depends in part on the performance of the other students in my group?

A: Do you complain about courses that are graded on a curve?  It's very common to find a course in which your grade is hurt by someone else doing well in the course.  If you can accept that, you should be much happier about an arrangement in which your grade is helped if you can help someone else learn.  There's something unhealthy about a society in which competition is considered okay but cooperation is considered weird.


Q: Can we form a group with students in other sections?

A: Not for grades.  But you can certainly communicate with people who take the class in other sections.  The only exception to that is that you cannot describe your exam right after you take it with the next class. As regards projects, the real problem is one of logistics for me. While you probably don't have any problems working with people in other sections, it can be very difficult for me to talk to the group as a whole. It's much easier to have a policy that prohibits this.


Q: One of the other people in my working group never does any work.  What should we do about it?

A: First of all, try to find out why.  Sometimes people give up because they're having trouble understanding something.  If that's the problem, see if you can teach your partner and get him or her back on track.  Also, try to find out what his or her strengths are---how he or she can best contribute to the group's efforts.  But sometimes people get distracted from coursework for non-academic reasons.  If you can't resolve the problem within the group, talk with me.  We'll figure out a solution.


Q: I'm having trouble understanding the assignments.  I've never had a problem like this in school before.  Does this mean I'm not as good a programmer as I thought, or should I just wait a week or two and see if things clear up?

A: Neither.  Many Gunn students may have found middle school pretty easy, and for many of you, this course will be one of the first real intellectual challenges you've met.  You may have come to believe that everything should be easy for you.  On the contrary; if you find your courses easy, you're taking the wrong courses!  The whole reason that Gunn rocks is it stretches your mind.  Again, there is nothing shameful about asking for help.  Every semester a few intelligent students end up in trouble in this course because they're too proud to come to office hours with questions.  If you wait two weeks before you ask your question, by then you'll feel hopelessly behind, because the topics for those two weeks depend on the idea that you don't understand now.


Q: I am done with the homework. Other people are still doing homework. What should I do now?

A: One of the tricky things about programming is that people come into a programming class with very different levels of experience. If you are one of the more experienced people, don't fret or allow yourself to be distracted. Here is a fine place to find problems to solve. Solve them!


Q: My mother is the CEO of a Fortune 500 company and my father owns a Major League Baseball team.  Can I play games in L14A?

A: No. Well, okay, I'll level with you. You give me $5 million (and maybe some luxury box seats), and I'll find a way to help you out.