CS 61BL Summer 2016
Data Structures & Programming Methodology
Instructors: Alan Yao & Sarah Kim
Wednesday, 3-5 PM, 2050 Valley Life Sciences Building
Office Hours: 651 Soda (Alcove), Monday 4-5pm, Wednesday 5-7pm, Thursday 11am-12pm
What's this course all about?
This course is the sequel to CS 61A. In 61A, you learned how to solve problems using programming; you were concerned primarily with the correctness of your program. In 61BL, you will learn not just how to solve problems, but how to solve them well. You will be concerned with the speed, efficiency, and maintainability of your solution. Furthermore, you will learn about engineering tools that will allow you to build larger programs.
What's the difference between CS 61B and 61BL?
The courses cover the same content. They count for exactly the same kinds of credit as well. The difference is in the structure of the course. 61BL is lab-based, meaning you will spend proportionally more time in lab and proportionally less time in lecture. We hope you will enjoy learning-by-doing in this course.
In addition, 61BL is a partner-based course, where much of the programming is done with fellow classmate. 61BL strives to create a collaborative rather than competitive environment.
What are the prereqs for this course?
CS 61A, E 7, or some equivalent (though be wary of if your intro programming course does not match the rigor of CS 61A).
You cannot take 61A and 61BL out of order, and you cannot take the classes concurrently either. The exception to this rule would be transfer students who already have significant programming experience in Java, since they have an unfortunate need to rush through lower division classes.
You do not need prior programming experience in Java for this course, but you do need prior programming experience in some language. You should have been exposed to object-oriented programming in that language.
What sort of time commitment should I expect?
A lot. This is a summer course, which means it is run at twice the speed of a normal course. In addition, 61B naturally has more involved programming than 61A, and 61BL has even more. We strongly recommend not taking any other courses alongside 61BL.
We cannot predict how many hours you will spend on the course; some students take more time than others. However, we can at least give you a brief breakdown of what you will have to do in this course:
Class Accounts
During your first lab section, you will receive an instructional account login form. This will give you access to the Soda lab computers.
Feel free to bring your own laptop to work in your own development environment.
Labs
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 their section). Regardless of which section you choose attend, you must attend that section consistently. Switching sections will not be permitted following the first week of class except for exceptional circumstances.
Every lab will require the submission of several files to receive credit. Some of the files will be graded for completeness while others will be graded for corectness, not just effort/completeness. We will let you know what files contribtue to your grade.
Labs are due the next day two hours before your lab's start time (even if there is no lab that day). For example, if your lab begins at 3 PM, Tuesday's lab will be due on Wednesday at 1 PM. This deadline is meant to be fair for those in labs that occur later in the day. Both students in a partnership must submit the files.
The last lab of the week will additionally require you to fill out a self-reflection form about the labs in the past week.
Quizzes
Each lab section will start with a short written quiz that tests the material from the previous lab. Quizzes are meant to encourage you to keep up with the course material and to help the TAs see where their students are having trouble.
You can only take the quiz in your own lab section. There will be no makeup quizzes. Because of how quiz points are capped, you can miss a couple quizzes without detriment to your overall quiz grade. Please check the grading section below on how quizzes affect the course grade.
Projects
There are three projects in this course. Projects are larger and more challenging assignments than you would typically find in a lab. The first project is done alone. The second and third projects are done either alone or with one partner. (We encourage you to have a partner for the second and third projects. You must have the same partner for both projects 2 and 3.)
We have set aside three lab days for working on the project (two workdays for project 2 and one workday for project 3). There is no workday for project 1. Take advantage of these workdays for you and your partner to finish the project and ask your TA for guidance/advice on the project.
Note that you should start working on the projects long before their respective workdays. The workdays are intended to reduce the load of learning new material in the day(s) leading up to the project deadline.
Exams
This course has two midterms and a final. Please notify the instructors within the first week of the course if you have any conflicts with any of the exam times.
Readings
You are expected to read each lab's contents. Additional optional reading assignments will be posted on the course calendar. You may choose to do these readings for more information/context on the material. The textbooks we are using this semester are:
Grading
There are 300 total course points, broken down like so:
Category Points Percentage of Total Grade
Labs 60 20%
Quizzes 30 10%
Project 1 15 5%
Project 2 30 10%
Project 3 30 10%
Midterm 1 30 10%
Midterm 2 45 15%
Final 60 20%
Your letter grade will depend on the number of course points you have at the end of the semester:
A+AA-B+BB-C+CC-DF
[285, 300][265, 285)[255, 265)[240, 255)[220, 240)[205, 220)[190, 205)[175, 190)[160, 175)[130, 160)[130, 0]
These ranges may be adjusted downwards at the end of the semester depending on overall student performance (but not the other way around - if you fall in the bucket for a grade you are guaranteed that grade or better).
There are a total of 25 quizzes, each worth 2 points. Thus, while the total point value for quizzes is 50, quiz grades are capped at 30 points. This means that you can miss up to 20 points on quizzes without penalty. In other words, getting more than 30 points on quizzes is equivalent to getting 30 points for your quiz score.
Late Policy
We will not accept late labs. However, if you submit to the autograder past the deadline, you will still get feedback on your work (even if you receive 0 points).
For example, say that you use two slip hours for project 1. Your partner for projects 2 and 3 used eleven slip hours for project 1. You both have an average of 17 hours leftover from project 1. If you and your partner use 30 slip hours for project 2, you will have a total of 11 slip hours for project 3. It's a good idea to conserve your slip hours!
Policy on Collaboration & Cheating
To help (but not entirely define) the bounds of acceptable behavior, we have three important rules for projects and labs:
  1. By You (or Your Partner) Alone: All code that you submit (other than skeleton code) should be written by you alone or your partner.
  2. Do Not Possess or Share Code: You should never be in possession of solution code that you did not write. Do not give anyone your code -- even if they are desperate. Do not post solutions to projects online (on GitHub or anywhere else)! You will be equally culpable if you distribute such code to other students or future students of 61B. If you're not sure what you're doing is OK, please ask.
  3. Cite Your Sources: When you receive assistance on a project from someone else (ideas only) or somewhere else (web resource like StackOverflow), you should cite that assistance somewhere in your source code.
For quizzes and exams, do not look at the work of other students or communicate with other students during exams. Do not consult any outside sources (textbooks, notes, the internet, etc.) except for the permitted note sheets you bring to the exam.
Regarding the procedures for dealing with cheating, please view the EECS department's policy.
One instance of cheating on a lab, quiz, project or exam will result in a full negative score on that assignment equivalent to the total value of that assignment. Cheaters will be reported to the department. If there is more than one instance of cheating, you will fail the course.
Cheaters will not be confronted until after the 7th week of the course. If a cheater confesses of their own volition before they are contacted, the cheater will receive a lighter punishment. They will simply get a 0 on the cheated assignment.