|
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
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.
Games
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.
Lateness
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.