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/spring03.
- Course Staff
- Course Materials
- Course Components
- Course Meetings
- Final Project
- Expectations and Policies
- Missed Meetings
- Religious Holidays
- Late work
- Distribution of Handouts/Notices
- Where to Find Additional Information
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).
Ben (Vandiver) is making a special encore appearance, trying to
keep Lynn in line. It's an encore not only because you all had the
pleasure of seeing Ben's work last semester, but also because once
upon a long time ago, Ben taught a precursor to this course at that
very same less flexible, fluid, etc. place. So he knows the ropes as
well as anyone on campus except Lynn and maybe Gus (see below). Ben
can be found in OC359 (sometimes), at x2530, or email at benmv or AIM
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.
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
Reference: There is no required
reference for this course; the textbook plus a web reference such as
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.
The class meets Tuesday and Thursday from 9:45am until 11:15am in
AC318. See attached syllabus and the section
on missed meetings, below.
In addition to lecture, each student will be assigned to a
three-hour weekly laboratory session (Monday, between noon and 6pm).
Your lab assignment will be decided on the first day of class. See
the section on laboratories, below, for
Assignments and Grades
During the term, there will be approximately seven regular laboratories, 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
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 lab outside of class, 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
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
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,
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,
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
- 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.
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.
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.
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.
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
- answers to any questions that may have arisen during lab and
- 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
- information about the code running (e.g., transcripts or empirical
- 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.)
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
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.
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.
Laboratories are due on Wednesday at 5pm in room AC312 unless
otherwise specified. Other assignments will have due dates clearly
indicated. Late work will not be accepted.
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
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
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.