General Information
Welcome to Programming Interactively!
This handout might possibly be a bit too bureaucratic, since it is
drawn from one that was written for a less flexible and fluid and
otherwise friendly institution than this one. Still, it's probably a
good thing to have and to look at because it lays out the expectations
for this course pretty thoroughly. You are, of course, responsible
for its contents.
This handout -- as well as other course
information -- is available on the web via the course web page, http://www.cs101.org/courses/fall03.
Contents:
- Course Staff
- Course Materials
- Course Components
- Course Meetings
- Final Project
- Grades
- Laboratories
- Expectations and Policies
- Missed Meetings
- Religious Holidays
- Late work
- Distribution of Handouts/Notices
- Collaboration
- Where to Find Additional Information
Course Staff
What an incredibly bureaucratic title! You've probably already
figured out that the professor in this course is Lynn (Andrea Stein).
I usually hang out in AC312 (the Computers and Cognition Lab) or
occasionally in OC358 (Lynn's empty office). x2525 rings both places,
and of course you can email me at las. I'm
also happy for you to IM me (screen name available on request, I just
don't really feel like posting it on the web). I don't generally
schedule office hours per se, but you can always make an appointment
with me. I will especially try to be available right after lab on
Mondays. I am generally hard to find on Wednesdays.
Elaine Yang has just recently (like 10 minutes ago, or maybe 10
days....) joined the Olin community. Her job is to help teach the
course, to provide extra help to students (as Lynn will also do), and
-- most importantly -- to keep Lynn in line. This last is a
particularly difficult job and Elaine has just started it, so she may
need some help from you with that part. (She has lots of experience
teaching students things like what we're covering in this course,
though, so she should have that job down pat.) NB: Elaine knows
nothing of what Lynn has written in this paragraph, so don't blame her
for it.
Katie Rivard is an Olin sophomore who took PI last year. She liked
it enough to stick around all summer to redevelop some of our course
materials and is going to be helping out with the course this fall.
She'll mostly work in lab, but may be available at other times for
some limited amounts of additional (scheduled) help. However, please
understand that Katie is an Olin student, too, and may occasionally
need to do silly little things like her own work.
Behind the scenes, there are several other people who help to make
this course run. Holly Bennett is the official course support person;
Gus Heck works on the CCL research project that created this course
and will be doing a lot of code support, etc., as well as maintaining
the website; Dan Goessling and Linda March keep the CCL (computers and
organization, respectively) running. Details on how to find everyone
and what to blame us for are online here.
Course Materials
Text: The textbook for this course is a
draft of Interactive Programming in
Java (IPIJ). There are pros and cons to using a book
that's not yet published, and I'm sure you'll run into both. Feedback
on the text -- especially in the form of detailed comments or
constructive suggestions -- are entirely welcome. We even have a bugzilla site (available off the
root page of this server) if you really want to tell us what you
think.
Reference: There is no required
reference for this course; the textbook plus a web reference such as
Java's
API documentation should be sufficient. However, some people
prefer to have a paper reference in addition to the on-line
reference. We are currently evaluating copies of books for purchase
by the library. Please let us know what you think of any books you
try. More information will be available in class.
Course Components
Course Meetings
The class meets Tuesdays and Thursdays from 11:20am until 12:50pm in
AC318. See attached syllabus and the section
on missed meetings, below. Passing
times have been scheduled between classes; we will make every attempt
to end promptly at 12:50, but will need to begin at 11:20 to make this
possible.
In addition to lecture, there is a three hour weekly laboratory.
Because the class is not too large, we will try to run only one lab
section, from 2 to 5 on Mondays (also in AC318). If this becomes
problematic, we may shift to make use of the full 2-6 lab block
allocated. See
the section on laboratories, below, for
further information.
Time Commitments
In addition to these six scheduled hours per week, you should
expect to spend another six hours (on average) on this class. We will
ask you to keep some rough records of how you are spending time and
use this feedback to determine whether we are keeping approximately to
our designated 12 hours. If you find that PI is taking considerably
more than 12 hours/week, please speak with a member of the course
staff as we may be able to help you to work more effectively and
productively or otherwise to improve your course experience.
Similarly, if you find that PI is occupying considerably less than 12
hours each week, please speak with us as we'd like to find good ways
to use your time to help you to engage with this material at the level
that best suits your needs.
Laptop Usage
The nature of this course requires that students use their laptops in
class and lab. If you find that IM, email, web browsing, or other
non-course activities are occupying much of your time during class,
please make a point of speaking with the instructor about whether
sitting in the classroom is the most effective way for you to learn.
It is not our intention to turn into laptop police; however, it is our
intention to make full use of the 12 hours/week that PI is intended to
occupy and time that you spend IMing your roommate doesn't feel like
it's constructive for PI purposes.
Assignments and Grades
During the term, there will be about seven or eight regular laboratories, two or three written assignments, and
a final team project involving software development as well as oral
and written presentation. There will also be frequent peer assessment
and a strong expectation of class participation. Finally, we reserve
the right to hold up one or two examinations during the semester or final
exam period.
Laboratory assignments have three parts: pre-lab preparation,
in-lab programming work, and post-lab writeup. You should expect to
spend up to 3 hours on the assignmentoutside of scheduled class and
lab time, but generally no more than your 3 scheduled lab hours on
programming. Labs are designed to reinforce the programming concepts
that you will be learning but also to build design and debugging
skills and to familiarize you with software development as an ongoing
process.
Examinations, if given, will cover Java programming and conceptual
understanding in ways that may be difficult to assess during the
laboratory sessions.
The final project will occupy the laboratory meetings during the last
month of the course. All final projects will be group projects. The final
project will include design and programming components as well as a
substantial written document (such as a user's manual) and an oral
presentation. Each of these components will be included in the project
grade.
Your grade in this course will be a weighted mixture of the
evaluated elements of the course (laboratories, written assignments,
exam(s), and final project) together with the assessment of your
understanding of course materials made by the course staff, e.g. in
laboratory check-in and check-out interviews, participation in class
meetings, etc.
To earn an A in this course, you should regularly demonstrate
mastery of the material, have a strong understanding of and
performance in laboratory work including the production elegant and
well-documented software, be a valuable participant in course meetings
and collaborations, and complete all portions of the course work in a
timely fashion. For example, at the end of the course, you should be
able to lead a team in designing and building a complex networked
video game.
To earn a B in this course, you should demonstrate a solid grasp of
most of the course material, competently perform laboratory work
producing effective software and documentation, participate in course
meetings and collaborations, and complete all portions of the course
work in a timely fashion. For example, at the end of the course, you
should be able to independently design and build a simple networked
video game.
To earn a C in this course, you should demonstrate a sufficient
understanding of the course materials that you can go on to build on
that understanding in subsequent courses or employment, participate in
course meetings and collaborations, and complete all portions of the
course work in a timely fashion. For example, at the end of the
course, you should be a solid contributor to a team that designs and
builds a networked video game.
If none of the three descriptions above fits you at the end of this
course, there are two possibilities:
- Your understanding of the material and demonstrable performance of that
understanding is inadequate to build on in subsequent coursework. In this
case, you are ineligable for a passing final grade.
- Your understanding of the material and demonstrable performance is
adequate to receive a C or higher, but you did not participate in course
meetings and collaborations or you did not complete all portions of the
course work in a timely fashion. In this case, your final grade will be
adjusted to reflect this factor as follows:
- Missing one laboratory or one assignment may cause the loss of a
letter grade.
- Missing three laboratories or assignments, or failure to complete
the final project, may cause the loss of two letter grades.
Late work will not be accepted and may be treated as missing work.
There is a laboratory assignment almost every week, and we will work
with you to move on to the next assignment. Always turn in what you
have completed on time rather than delaying in the hope that you will
be able to do more.
Laboratories
Laboratory sessions are an essential part of the course.
Each week, a laboratory assignment will be distributed to students. This
assignment will generally have three parts: preparatory work, in-lab work,
and post-lab work.
Pre-lab
Students are expected to come to their assigned laboratory
session having completed the preparatory work. When you
arrive at the lab, we will check you in. (Typically, this will involve
asking you questions about your preparatory work and/or asking to see
your development plan for the laboratory.) In general, you are not
expected to have begun the programming of the laboratory assignment
before coming to lab; however, you are expected to have spent time
outlining the program that you intend to write and to have planned the
various steps that you will take during your three hour lab.
Students who do not prepare adequately for lab will be denied
admission to the laboratory. There is a nice seating area
nearby where you can go to work. However, time spent preparing during
lab will cut into your supervised lab time and we do not have extra
times available. Failure to check-in to your assigned lab will
be reflected in your grade for that laboratory.
In-lab
Each laboratory assignment is designed so that there is a range of work
that might solve the problem. You should begin by implementing a simple piece
or version of the solution. When this works to your satisfaction, you should
build on additional features or behavior. The laboratory assignment will
indicate a target portion to be completed in lab. Often, you will be asked to
design test cases as a part of the pre-lab exercises or to share code and
test cases with your classmates.
When you are done with your assignment, or when the lab session is
nearing its end, you should ask us to check you out of lab. Check-out
consists of a discussion between you and us about your work. During
this discussion, you will probably be asked to show your code in
operation; to discuss how your code works; to display part or all of
your code; to answer some questions about how your code might behave;
and to test some or all of these hypotheses. You may be left with some
questions or issues to think about, including some possible
modifications to your code.
As a rule, you are not expected to spend any time outside of the
laboratory session at a computer, programming. Of course, you may do so if
you would find it helpful at any point: to try out the programs and
environments that we provide; to test hypotheses; to develop intuition; or
just to have fun!
Your grade on the laboratory will be based on how well you complete the
target portion of the assignment. In general, it is better to do this part
well than to go beyond the target portion.
You may leave lab as soon as your work is done and you have been
checked out. Please try to ensure that you are ready to leave (i.e.,
checked out) when your lab session ends or -- at least -- at 6pm.
Post-lab
After the laboratory session ends, you should write up and turn your
completed assignment on the specified due date. Although the details of the
post-lab writeup will vary from lab to lab (and from student to student), you
can expect that it will generally include:
- any written or "finger" exercises from the laboratory assignment;
- a description of your lab development plan;
- a discussion of what you did during the laboratory;
- a written evaluation of your lab-work, including a comparison with your
development plan;
- answers to any questions that may have arisen during lab and
check-out;
- and of course any additional material indicated in the post-lab section
of the laboratory assignment.
We may also ask you to include
- a printout of the final version of any code that you wrote (including
documentation),
- information about the code running (e.g., transcripts or empirical
description(s)),
- a brief account of how much time you spent on which portions of the
assignment (including any parts that were particularly problematic),
- and a list of any collaboration. (See the course collaboration policy for details.)
Expectations and
Policies
Missed Meetings
You are responsible for all material covered in each lecture and
recitation unless otherwise indicated. This material may not be covered
elsewhere, so if you miss a meeting, you are responsible for getting notes
from a friend or otherwise making up the material. Handouts will not be
distributed on paper outside of class, but all course handouts will be made
available on the course web site.
Attendance at laboratory is mandatory. If for any reason you cannot
attend your scheduled laboratory session, it is your responsibility to
make alternate arrangements with us as far in advance as is reasonably
possible. In particular, if you have travel plans or another scheduled
conflict, we expect that you will discuss this with us as soon as the
conflict is scheduled. We understand that unforseen events do arise
(see below); however, your brother's wedding is (probably) not one of
them.
The only exceptions to this policy (i.e., last-minute or after-the-fact
rescheduling) will be in cases of significant and unanticipatable emergency.
In these cases, we request a note from the Medical Department or the Dean's
Office. In addition, we would appreciate it if you would make an effort to notify the course staff at the earliest possible
opportunity so that we can adjust accordingly.
Religious Holidays
There are a few times during the term when a religious holiday conflicts
with a course meeting. If this will cause difficulty for you, please
let us know at the beginning of the term so we can make plans.
Late Work
Laboratories are due on Wednesday at 5pm by email to the pi-staff
mailing list or through the blackboard turn-in system unless
otherwise specified. Other assignments will have due dates clearly
indicated. Late work will not be accepted.
Collaboration
This section details the general course collaboration policy. Certain
assignments require different kinds of, or restrictions on, collaboration.
When the collaboration policy differs from that described here, it will be
specified in the laboratory assignment.
We encourage you to work together on the pre-lab exercises.
They are designed for working in small groups, allowing you to help each
other learn and to balance your knowledge and strengths. Note that
collaboration extends to discussion and problem-solving, but not to writeups.
We expect that any written work you turn in will be your own,
though it may reflect joint preparation.
Laboratory work is a more complex topic. It is often useful to discuss
your program with peers or with course staff, and we strongly encourage this.
It is particularly useful to do so as a means of debugging your program.
Reading code written by others and having others critique your code are good
ways to improve your programming style. However, it is of no benefit to you
or to anyone else to have someone else actually do your laboratory work. We
expect that the default assumption (i.e., unless specified otherwise) is that
laboratory assignments are your own work, but may reflect input
from others just as an essay edited by friends might. You should be the one
who wrote the code you turn in.
Some labs, and the final project, will involve more explicit
collaboration. In those cases, we will explicitly specify ways in which labs
can be broken up, so that each person writes code but no one person writes
the whole program, or indicate explicitly that a particular lab or portion of
the lab may be programmed together, as a team. Even in this case, it is
important that each team member have an opportunity to independently compose
some code. Since the pre-lab will generally involve designing the code that
you are going to write, it is best to also allocate responsibility for pieces
of the code to members of the team at that time.
In each piece of work that you turn in, you must specify everyone
with whom you have collaborated and each person's role in the
collaboration (e.g., pre-lab, post-lab discussion and analysis, in-lab coding
(specify which pieces or how responsibility was distributed), debugging, or
advice). Failure to specify such collaboration will be interpreted as a
statement that you have not collaborated with others in your work.
While this is acceptable under course policy, it is probably ill-advised.
(Really. We want you to work together and to learn from each other!)
Examinations are diagnostic in nature and as a consequence should
represent independent work.
Of course, copying of the work of others is entirely
unacceptable.
We also encourage you to make use of the course-wide mailing list
and other communication mechanisms that we will set up.The course-wide
mailing list is archived; you can read the archives by following the
link from the course home page.
Where to Find
Additional Information
The primary source of information for this course is the world-wide
web. The home page for the course is located at http://www.cs101.org/courses/spring03.
Course materials will be made available there. Check this page
regularly for news and updates.
|