CS 61BL Data Structures & Programming Methodology, Summer 2014
Instructor: Edwin Liao
Wednesday, 3-5 PM, 2050 Valley Life Sciences Building
Welcome to CS61BL: Data Structures and Programming Methodology!
What's this course all about?
CS61A covered high-level approaches to problem solving, providing you with a variety of ways to view programming problems (in terms of functions, objects, or rules).
In CS 61BL, we move to a somewhat more detailed level of programming. As in 61A, the correctness of a program is important. In addition, however, much of 61BL will be devoted to analyzing potential tradeoffs in time and memory that arise from a variety of methods for structuring data.
(The third course in the sequence, CS61C, continues the journey from high-level programming to the details of the machine level, covering the basics of computer architecture and revealing aspects of the computer that programming environments hide from you.)
CS61B is also the first place in the curriculum where students write relatively large programs (~1000 lines of code) from scratch. Course projects, we hope, will improve your skills in several areas of programming methodology:
What's the difference between CS61B and CS61BL?
The traditional version of CS61B has loosely coordinated lecture, discussion, and lab sections. Ten years ago, we introduced a lab-centric version of the course (the "L" in 61BL stands for "lab") that trades lecture and discussion time for hands-on lab time. A common theme in computer science education research is that students learn to program by actually programming, not by listening to lectures about programming.
The two versions cover equivalent content. Students do about the same amount of total work in each version. In the lab-centric version, we integrate the various parts of the course better and supervise your work more closely. As a result, we are better able to provide help when you’re confused.
What sort of time commitment should I expect this summer?
Since there are only 8 weeks of Summer Session C (as opposed to 14 weeks of instruction plus RRR week and finals week during the Fall/Spring semesters), each day of Summer's CS61BL is equivalent to approximately two days of the Fall/Spring semester. During the normal school year, each course unit equates to 3 hours of work per week. This means you should expect to work about 24 hours per week for this course, including lab and lecture time.
The course staff (instructor and TAs) will check Piazza regularly and post important announcements there. You are responsible for keeping up with these announcements.
Other students will also be able to help you on Piazza. Please avoid posting solutions to homework assignments before they are due (refer to the department's academic dishonesty policy). If in doubt, make a private post to the instructors. The course staff will delete posts and comments that are not constructive (e.g. questions that have already been answered, anything inappropriate, etc.).
If your question is personal or not of interest to other students, post a private message on Piazza for the course staff. If you wish to talk with one of us individually, you can make an appointment with any of us by email. Otherwise, please reserve emails for questions you can't get answered during office hours, lab sections, or on Piazza.
Lab sections meet every Monday through Friday, except for Wednesdays and July 4th. You are expected to attend lab whenever your lab section meets. All lab work should be done in pairs.
If you would like to attend a lab section that you are not enrolled in, you must get permission from the lab TA of the section you would like to attend (the TA needs to confirm that there is room in his/her section). Regardless of which section you choose attend, you must attend that section consistently.
Lab material can be found here.
You are expected to complete all lab readings. Additional reading assignments will be posted here. The textbooks we are using this semester are:
There are a total of 300 course points:
Category Points Percentage of Total Grade
Project 1 15 5%
Project 2 30 10%
Project 3 30 10%
Midterm 1 45 15%
Midterm 2 45 15%
Final Exam 75 25%
Quizzes (capped at 70%) 30 10%
Homework Assignments (capped at 90%) 30 10%
Total: 300 100%
Your letter grade will depend on the number of course points you have at the end of the semester:
A+ A A- B+ B B- C+ C C- D F
[280, 300] [265, 280) [250, 265) [235, 250) [220, 235) [205, 220) [190, 205) [175, 190) [160, 175) [130, 160) < 130
That is, your grade depends only on how well you do, not on how well everyone else does.
Incomplete grades will be granted only for dire medical or personal emergencies that cause you to miss the final exam, and only if your work up to that point is satisfactory.
You can view your scores by using glookup on the school accounts. This will be explained in the first lab.
Class Accounts
During your first lab section, you will receive an instructional account login form and learn how to submit homework and project assignments online with the glookup system. Do not lose your account form.
There will be 20 homework assignments, which will consist of a mix of programming, online discussion participation, and project milestone checkoffs. Programming assignments are to be done in groups of 2-3. They must be submitted online via glookup (only one member of each partnership should submit) and are due before the following lab day after they are assigned (so a homework assigned on Tuesday is due on Thursday before your lab section begins). Project milestone checkoffs will happen during your lab section. Late homework will not be accepted.
Each homework assignment is worth 5 homework points. The homework portion of your course grade will be equal to min(30, 3/9 * homework points). In other words, your homework grade is capped at 90 homework points, then scaled to make up 10% of your course grade.
Unlike in CS61A, homework submissions are graded on correctness, not effort. In addition, your code should have sufficient comments and be reasonably formatted.
There will be a closed-notes quiz at the beginning of (almost) every lab. Quizzes are meant to encourage you to keep up with the course material and for TAs to know where students are having trouble.
You must be present in your lab section to take each quiz, which must be completed within the first 15 minutes of your lab section.
There will be at least 25 quizzes, each worth 4 quiz points. The quiz portion of your course grade will be equal to min(30, 3/7 * quiz points). In other words, your quiz grade is capped at 70 quiz points, then scaled to make up 10% of your course grade.
There will be two midterm exams and one final exam:
You may bring one handwritten double-sided crib sheet for midterm 1, two for midterm 2, and three for the final exam. All exams will take place in 2050 VLSB and 100 GPB. Check Piazza for which room you are assigned to.
Review Sessions
There will be three review sessions:
There will be three projects:
You will be assigned group partners from your lab section. After completing each project, you will be required to submit group evaluations along with your code. Each member of the team will submit his or her own group evaluation. However, as with homework assignments, only one group member will need to submit the code for each team.
You will have a total of 24 "slip hours" for all three projects that can be applied toward satisfying project submission deadlines.
Office Hours
Edwin: Thursday 3pm - 5pm and Friday 11am - 1pm, both in 271 Soda
(If these times do not work for you, feel free to email me to set up an appointment)

TAs: You can visit your TAs during your lab section.
Academic Honesty
Your attention is directed toward the department's Policy on Academic Dishonesty. In particular, copying and presenting another person's work (in part or in whole) as your own constitutes cheating. Any student found to be cheating risks failing the course and being referred to the Center of Student Conduct.
Sometimes it can be difficult to draw the line between cheating and appropriate collaboration. Here are some general rules: