CAS CS 112 A1 - Spring 2017 - Introduction to Computer Science II

Syllabus

Course Description

Official Description: Covers advanced programming techniques and data structures. Topics include recursion, algorithm analysis, linked lists, stacks, queues, trees, graphs, tables, searching, and sorting.

Elaboration: The main emphasis of the class will be the study of a number of important data structures, such as stacks, queues, linked lists, hash tables, trees and graphs; algorithmic techniques, such as recursion; and program analysis. In the process, we will learn the Java programming language, though the course will focus more on language-invariant concepts than on the details of Java. The rationale for this is simple: programming languages change frequently, while concepts such as recursion remain. My parents (who studied CS in the 1970s) by now have used over a dozen languages each--that's a new language every three years. Since you go to college only once, the best two things you can learn are the language-invariant concepts and the skill of picking up the language du jour.

Prerequisites

The class assumes working knowledge of CS 111 and a reasonable level of comfort with programming. If you are unsure you have those skills, talk to us as soon as possible.

Staff

Instructor: Professor Leo Reyzin, reyzin@bu.edu, (617-35)3-3283, MCS (111 Cummington St) 135E. Office hours TBA.

Teaching Fellows (TFs): Abhyudaya Alva aalva@bu.edu, Gautam Bhat gautam@bu.edu, Rebecca Graber rsgraber@bu.edu Office hours: TBA

Course Assistants (CAs): Amalia Safer (A2), Ben Gaudiosi (A3), Kylie Moses (A4), Adriana D'Souza (A5), Adnrew Quan (A6), Chloe Fortuna (B2), Chamath Dharmasiri (B3), Wjdan Alharthi (B4), Justin Ingwersen (B5), Tyrone Hou (B6). Office hours TBA.

CS 112 B1 Instructor: Abbas Attarwala. B1 is another lecture secion of CS 112. Abbas and I coordinate loosely, and he is not responsible for our section, but I thought you at least should know his name, since he may also answer some of your questions on Piazza.

We encourage you to come to our office hours. If you need to talk to us but can't make the office hours, please use Piazza.

There is no required text to buy

But there will be readings and resources given out as needed.

Meetings and Other Communication

Lectures are Tuesdays and Thursdays 12:30-1:45 in KCB (565 Commonwealth Ave) 101. Lecture attendance is required. You are responsible for all material covered in lecture.

You should have also selected a lab when you registered (if not, add it to your schedule!); make sure you have an "A" lab, not a "B" lab. Labs, which meet on Thursdays and Fridays in EMA (730 Commonwealth Ave) 304 are headed by a TF, are a required part of the course. You will get the most out of lab if you come having read the homework assignment.

The class has a home page: http://www.cs.bu.edu/~reyzin/teaching/s17cs112b/. We will also be using Piazza for course discussions and homework questions; you will get more info as soon as it is set up. You are responsible for announcements we post on Piazza.

Assignments and Tests

There will be about 7 homeworks (usually biweekly, but sometimes weekly) (35%), two midterms (30% total, Feb 23 and Apr 6, in class), and a final (30%, tentatively Tue May 9, 12:30-2:30). The remaining 5% is lab work. I reserve the right to deviate from this formula in unusual cases.

Late Homeworks Policy and Dropped Homework Grade

By now you have probably learned that programming always takes more time than you plan for. You have to manage your own time well. We will make sure that the material you need to solve a homework assignment appears in lecture or lab well ahead of the due date. Please budget time for unexpected minor emergencies, such as computer crashes, colds, and noisy roommates. Late homework will not be accepted.

We understand, however, that sometimes circumstances are beyond your control. For just such an occaion, we will drop the lowest homework grade provided we see than you actually made an effort on that homework. In other words, a 0 will not be dropped. Do not use the dropped grade option without a good reason--if you use it up early and then get a cold later in the semester, it's too late. Exceptions to this policy will be granted only in serious circumstances (such as hospital stays or family emergencies) that I hope none of you will have.

Collaboration Policy

Collaboration policy for this class is as follows. The last point is particularly important: if you don't make an honest effort on the homework but always get ideas from others, your exam score will reflect it.

Violations of Collaboration Policy

Violations of collaboration policy fall into two categories: ones that are acknowledged at the time they occur (for example, in clearly marked comments in your code) and ones that are unacknowledged. Acknowledged violations (e.g., using someone else's code for a method you didn't know how to write yourself, and stating clearly in your code that this is not your own work) will result in an appropriate reduction in the grade, but will not be considered cheating.

Unacknowledged violations of the collaboration policy--for example, not stating the names of your collaborators, or any other attempt to represent the work of another as your own--will result in an automatic failing grade and will be reported to the Academic Conduct Committee (ACC). The ACC often suspends or expels students deemed guilty of plagiarism or other forms of cheating. I have served on the ACC and have seen it happen. I will assume that you understand the BU Academic Conduct Codei (read it if you haven't).

If you are uncertain as to whether a particular kind of interaction with someone else constitutes illegal collaboration or academic dishonesty, please ask me before taking any action that might violate the rules; if you can't reach me in time, then at the very least include a clear explanation of what happened in your homework write-up to avoid being treated as a cheater. Citing your sources is usually the easiest way out of trouble.

Important Dates

Midterm 1: Thursday, Feb 23 in class
Last day to drop without a W grade: Thursday February 23 (please talk to me in advance if you are thinking of dropping -- don't drop in a panic).
Last day to drop with a W grade: Friday March 31
Midterm 2: Thursday, Apr 6 in class
Final Exam (tentative): Tuesday May 9 12:30-2:30