CS 61B: Data Structures and Advanced Programming
General Course Information

Fall 1997

Introduction

CS61B is the second course in the CS61 series. In this course we will study advanced programming techniques including data structures and basic algorithms for manipulating them, and we we get a taste of ``software engineering''--the development of large programs.

Read this document carefully. It contains most of the answers to questions that students ask during the first few weeks of class. The subjects include: how to contact the staff, prerequisites, textbooks, labs, grading, late penalties, policy on academic misconduct. For a list of discussion sections and labs and the TAs who run them, see the online section schedule. (Because of the high enrollment, some additional TAs and sections may be added, so this schedule will be in flux for the first week or two.) A tentative syllabus is also available, which includes due dates, exam dates, and reading assignments.

To print this document, use the postscript copy available online. If you have a general question about something that is NOT covered here, the best option is to post a message in the cs61b news group. This is read by the course staff and other students, all of whom may be able to answer your question. To contact all of the TAs and the Professor, send mail to cs61b@cory.eecs.berkeley.edu. If you wish to talk with one of us, the easiest way is to come during the office hours posted on our doors and listed online. Otherwise, please make an appointment by sending electronic mail. Note that there are about 50 of you to every one of us - please reserve e-mail for the questions you can't get answered in office hours, discussions sections, or through the lab assistants.

Instructor:
Prof. Kathy Yelick
Office: 777 Soda Hall
Phone: 642-8900
Email: yelick@po.eecs

Course Secretary:
Tami White
385 Soda Hall
642-0930

Teaching Assistants:
Mark Newman, cs61b-ta@po.eecs
Rich Vuduc, cs61b-tb@po.eecs
Shawn Yu, cs61b-tc@po.eecs
Carter Wendelken, cs61b-td@po.eecs
Chris Nokleberg, cs61b-te@po.eecs
Brian O'Clair, cs61b-tf@cpo.eecs

Lectures are MWF 3:00-4:00pm in 155 Dwinelle.

Prerequisites

The prerequisite for CS61B is CS61A. CS61A is an introductory course taught in Scheme, which covers topics like recursion, higher order functions, object-oriented programming style, simple data structures (lists and tables), as well as the basics of using the computers in our labs. This semester, the prerequisites are being automatically enforced by Telebears. It is unlikely that anyone without 61A or ``equivalent'' will be allowed into this course. If you feel you have experience that is equivalent to 61A, you must fill out an appeal form and leave it with Jo Davis in 379 Soda Hall. We will be using the Java programming language in this course; knowledge of Java (or related languages like C++) are NOT required for this course.

You may have heard that Java is a language for programming web applications and developing cool animated home pages. This is partly true, but neither of these will be covered in this course. We will simply use Java as a better language for writing large, modular programs than many of the alternatives.

If you are already familiar with C++ or Java and have taken a data structures course in any programming language (e.g., Pascal), you may not need to take this course. If you feel this course may be repeating prior experience, please see me.

If you are not familiar with the Unix operating system and basic tools, either because you did not take 61A or felt that you managed to get through without understanding much about Unix, it is important that you learn. Some student groups, including CSUA teach help sessions on Unix. The first one will be Wednesday, August 27 in 306 Soda. See the CSUA home page for others. IS&T also run a UNIX short course, but unfortunately, it conflicts with lecture this semester; it is on September 22, 24, and 26 from 2pm-4pm in 262 Evans.

Textbooks

The textbooks for Fall '97 61B are different from those used in previous years. The required texts are:

These should be available at the ASUC bookstore or across Bancroft at either Ned's or the Campus Textbook Exchange. The Arnold and Gosling book (abbreviated A&G in the remainder of this handout) gives a terse, but accurate introduction to programming in Java. The Standish book is on data structures and uses Java in the code examples.

The only recommended text is: ``The Java Language Specification'' by Gosling, Joy and Steel, a detailed reference to Java. You should not need this for 61B, but it is the right place to look if you want to know exactly what something in Java means.

There will be other handouts during the semester, of course, and you need to give your TA $5 to cover the copying charges for these. A check to U.C. Regents is preferred; we will also accept cash, but please include a note with your name. This money will be collected in discussion section next week.

We will keep electronic copies of all handouts and lecture notes on the course machines available from the class home page: http://www-inst.eecs.berkeley.edu/ cs61b. In some cases there may be three types files: raw ASCII text (filenames ending in .txt) should be printed using the enscript -2r command; postscript files (filenames ending in .ps) must be printed using the lpr command; html (filenames ending in .html) should be printed using the print command from netscape.

Finally, we will post various announcements, hints, and so forth electronically. Your accounts will be set up to show the current set of class messages when you login. In addition, you should start reading the 61B newsgroup regularly, as we will be posting homework clarifications and other material of general interest there. There are many ways to read the news group, but the easiest it to find a pointer to it on the class home page. You should send questions or information of general class-related interest to the news group using the post command.

Enrollment-Laboratory and Discussion Sections

In addition to the lectures, the course consists of a discussion section one hour per week and a scheduled lab two hours per week. The discussion sections meet between Monday and Wednesday lectures, whereas scheduled labs meet between Wednesday and Friday lectures. All labs meet in 277 Soda. You should have the same TA and student colleagues in the lab and discussion section. Your Lab TA will be your ``primary'' TA--he or she will check off your lab assignments, will return your graded homeworks and projects, and can help with grading corrections. You should feel free to attend any of the staff office hours or ask any of us for help.

Students sometimes ask whether section and lab attendance is required or optional. Some of the TAs may use ``mini-quizzes'' in discussion section to give them feedback on how much the class understands and to help focus the discussion, but nothing done in section will directly affect your grade. On the other hand, discussion sections are your best opportunity to ask questions and learn interactively, and there may be examples worked out in section that will be helpful on the graded assignments. Scheduled labs, which are two-hour slots in the second half of the week, are required. Each week there will be a assignment for the lab, and points to be checked off by your TA.

Account forms will be given out in lab this week, so it is important that you attend. If you miss your first lab, account forms will be available from Tami White in 385 Soda. It is important that you login to your account and choose a password the first week; we use the information about who has logged in to determine who is really in the class.

If you are something other than a regular Berkeley undergraduate, then you probably need a signature on a form admitting you to the course. Enrollment is unusally high this Fall, so I cannot promise to admit those of you who are not regular Berkeley students. In particular, I will not sign any concurrent enrollment or UC Extension forms until after the second week of classes. Meanwhile, you should get your computer account and begin doing the course work on the assumption that you will be admitted.

In addition to the scheduled labs, there will be some periods in which the lab assistants will be available to answer questions in 271 Soda. A list of these times will be posted outside the lab. The Soda labs are open from 7:30am-6:00pm Monday through Friday. Outside of these hours the doors to the building and lab are locked. You will need to obtain a card key for after hours access; these will not be available immediately, because we need an accurate list of who is in the class first. An announcement will be made in lecture when they are ready.

Watching Taped Lectures

For those of you who miss lectures, a taped version will be shown MWF from 5-6pm in 9 Evans. In addition, a tape for each lecture will be available for approximately one week in 205 McLaughlin.

Course Work and Grading

There are a total of 200 points you can earn toward your final grade in the course. There will be two midterm exams, each worth 25 points, and a final exam worth 50 points. The tests concentrate on the material that has been covered up to and including the week before the test. The test coverage is cumulative, so material from the beginning of the course may be tested in either midterm or on the final. All exams will be graded by the TAs and Professor.

In addition to exams, there are three types of assignments: homeworks, labs, and projects. Homeworks (roughly one per week) will involve written assignments and programming to be done individually. These will typically be due before lecture on Wednesdays and will be graded by one of the class readers. Homeworks are worth a total of 20 points out of the 200.

Labs are short programming assignments that must be done during the scheduled lab period in the latter part of the week. Labs will be done in teams of two assigned by your Lab TA. Grading of labs will be done by having certain steps checked off by your TA or a lab assistant. Labs are worth 10 points of your final grade, but we will ignore your two lowest lab grades during the semester.

The remaining 70 points of your final grade will come from the programming projects. There will be three of these during the semester worth 20 points for the first one and 25 points for each of the other two. All projects will be done with in teams. Your project partner should be someone in your lab and discussion section.

Your final letter grade will be determined by the following formula: 185 or above is an A+, 175-184 is an A, and down by ten points each to the lowest passing grade (D-). In other words, there is no curve; your grade will depend only on how you do and not on how well everyone else does. If everyone does exceptionally badly on one exam, I may decide the exam was at fault rather than the students, in which case the grades may be raised from these guidelines. I will not adjust grades in the other direction; if everyone gets an A, that's great.

We will return graded course work in labs. Everything you turn in for grading must show your name, your computer account, and your lab section number. You will receive no credit for assignments that are turned in without this information. Most, if not all, assignments will be turned in electronically. If you believe we have misgraded a midterm exam question or project, return it to your Lab TA with a note explaining the problem. The entire exam or project will be regraded, so be sure to check the solutions to confirm that your final grade will go up after regrading. Your grades will be recorded online and can be viewed using the glookup program. All requests for regrades and recording corrections must be made before the final exam. By University policy, final exams may not be regraded.

Grades of Incomplete 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.

Lateness

We will give no credit for written homework or labs turned in after the deadline, so that we can make online solutions available promptly and so that you can discuss those solutions in your discussion sections. Please do not ask for extensions for labs or homework - each of these assignments is worth very few points.

On programming projects, we do allow assignments to be turned in late, but there is a penalty. If an assignment is N hours late, we'll penalize it ceiling(N/3) percent. While this gives you some leeway for putting the final touches on a project, do not stretch the deadlines too far. A project that is one day late will loose 8% and after a few days even a perfect solution may not earn a passing grade.

Policy on Collaboration and Cheating

Cheating directly affects the reputation of the Department and University and lowers the morale of other students. As is consistent with departmental policy, incidents of cheating on homeworks or labs will result in a grade of zero on that assignment, while cheating on projects or exams will result in a failing grade in the course. All incidents of cheating will be reported to the Office of Student Conduct where records of academic misconduct are kept throughout your undergraduate career.

We encourage you to help each other learn the material by discussing the work before you do the assignments. I believe that most students can distinguish between helping other students and cheating. For example, explaining the meaning of question or offering advice on what an error message from the compiler means are both examples interaction that we encourage. On the other hand, there is no reason that you should ever have another student's solution in your possession, either electronically or in hardcopy form. If you are not sure whether a particular interaction is appropriate, talk to your TA or to me before you turn in the assignment. If you receive a significant idea from someone in the class, clearly acknowledge them in your solution. Not only is this a good scholarly conduct, it also protects you from accusation of theft of your colleagues' ideas.

Presenting another person's work as your own constitutes cheating, whether that person is a friend, an unknown student in this class or a previous semester's class, or an anonymous programmer on the web who happened to have solved the problem you've been asked to solve. Everything you turn in must be your own doing, and it is your responsibility to make it clear to the graders that it really is your own work. The following activities are specifically forbidden on all graded course work:

Some of the assignments in this course will be done in teams. This will be clearly marked on the assignment, along with rules for choosing a partner. Any assignment that is not designated as a team assignment should be done individually. On team assignments, the above rules for individuals apply to teams: you may not increase the size of your team, exchange partners without our permission, work with another team, or share solutions across teams. Each individual in a team is responsible for the entire project, which means that you will be held responsible if your partner uses another group's solution to produce part of your team's solution.

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, or because they perceive that they have fallen behind when they have not. Some students get into this situation because they are afraid of an unpleasant conversation with a professor if they admit to not understanding something. I would much rather deal with your misunderstanding early than deal with its consequences later. Even if you are convinced that you are the only person in the class that doesn't understand the material, and that it is entirely your fault for having fallen behind, please overcome your feeling of guilt and ask for help as soon as you need it. Also remember that the other students in the class are working under similar constraints--they are taking multiple classes and are sometimes holding down outside employment.

Tentative Schedule

The printed version of this handout contained a tentative schedule of lectures and assignemnts. An updated online version is a better reference.