Engineering Computing

Welcome to PI

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
    • Pre-lab
    • In Lab
    • Post-lab
  • 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:

  1. 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.
  2. 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.

Questions, comments, gripes and other communication to pi-staff@lists.cognition.olin.edu
This course is a part of Lynn Andrea Stein's Rethinking CS101 project at the Computers and Cognition Laboratory and the Electrical and Computer Engineering area at Franklin W. Olin College of Engineering. Olin College Logo