Missive

Introduction

From the course announcement:

CSCI0170/0180 is an introductory sequence that helps students begin to develop the skills, knowledge, and confidence to solve computational problems elegantly, correctly, efficiently, and with ease. The sequence is unique in teaching both the functional and imperative programming paradigms---the first through the languages Scheme and ML in CSCI0170; the second through Java in CSCI0180. The sequence requires no previous programming experience. Indeed, few high school students are exposed to functional programming; hence even students with previous programming experience often find this sequence an invaluable part of their education.

CSCI 170 and CSCI 180 are designed to be taken together, but you need not take both semesters to receive credit for the first semester (as is the case with some introductory language classes). You may not take CSCI 180 without first having taken CSCI 170.

Instructors

The course has a professor, two undergraduate Head Teaching Assistants (TAs), and five undergraduate TAs.

Professor Phone extension Office Email
Ugur Cetintemel 3-7644 CIT 375 ugur@cs.brown.edu

Prof. Cetintemel holds office hours on Tuesdays and Thursdays from 1:00pm to 2:00pm or by appointment.

Teaching Assistants Email
Aleks Bromfield, Head TA aleks@cs.brown.edu
Diana Huang, Head TA dhuang@cs.brown.edu
Alex Kruckman akruckma@cs.brown.edu
Al Urim aurim@cs.brown.edu
James Stout jstout@cs.brown.edu
Katie Bambino kbambino@cs.brown.edu
Lyn Fong lfong@cs.brown.edu
Robert Mustacchi rmustacc@cs.brown.edu
Spencer Brody stbrody@cs.brown.edu

You can send mail to the entire course staff by emailing cs018tas@cs.brown.edu, or to the Head TAs and the professor by emailing cs018headtas@cs.brown.edu.

Assignments and Grading Scheme

Your final grade is determined by your grades on individual assignments, as follows:

Type Percentage
Labs10%
Homework30%
Projects30%
Exams30%

Note that there are no set percentages which correspond to certain letter grades, and that grades are not assigned on a competitive basis. As will be awarded to all who earn them.

Quizzes

Quizzes are short problems given in lecture that take no longer than five minutes to complete; they are designed to help you understand the lecture and to help us test your understanding. You must attend lecture to receive credit for quizzes.

Labs

The intention of labs is to provide a brief and intense investigation of programming concepts introduced in class; they will teach you to program quickly and effectively. Collaboration is strongly encouraged, and your lab TAs will be very active in providing immediate assistance.

At the beginning of the semester, you will be assigned to a weekly lab section. If one week you cannot make your assigned lab, you can arrange to switch labs for that week. Please email the TAs 24 hours before the first lab that weekend. If none of the labs work for you in a particular week, e-mail cs018headtas@cs.brown.edu to make special arrangements.

Each week, we will hand out a lab assignment on Wednesday. You are expected to familiarize yourself with the assignment and with related lecture material so as to be prepared to complete the lab assignment during your lab section. If you do not do this, you will be unable to finish some of the labs.

You should check in with the lab TA at the beginning of each two-hour lab session. At the end of the two hours (or before, if you finish early), you must submit your work to your lab TA. Labs will be graded on a scale of 0, 4, and 5. You will receive a 0 if you do not attend lab at all, you leave early without finishing, you show up to a lab other than your assigned lab without notifying the TAs early enough, or you spend the entire lab goofing off. You will receive a 4 if you give a good effort but do not finish; you will receive a 5 for finishing. The labs are designed so that, given a little preparation beforehand on your part, you should be able to complete the lab within the two-hour period allotted. Because the lab is intended to have you work with TA help immediately available, you are not permitted to show up at lab with the lab work done - you must do lab in lab section, and if you show up and immediately ask to be checked off, you will recieve a 0 for the lab. You must check in with your lab TA before leaving in order to receive any credit for the lab.

Homework

Homework assignments are designed to help you internalize the course material; they consist of written problems and short programming tasks. There may also be some practice problems; these are for your benefit only and should not be turned in.

Homework will be assigned each week, and you will have about one week to complete it. All homework is due Tuesday night at 11:59 PM. Homework not turned in by the due date will be given no credit. We will drop your lowest homework grade at the end of the semester.

Programming Projects

Programming projects give you practice in putting together a larger, more complicated program than you undertake in labs and homeworks. Completing these projects will require you to manage your time responsibly. You are expected to start on each project when it is assigned and to work steadily. Working on a project is a learning experience; it is best not to compress it into a short time period.

While the projects are challenging, ultimately the program you hand in need not be very large (though in CSCI 180, the programs are considerably larger than they were last semester). If you get stuck, or if your program becomes awkwardly large or complicated, you are encouraged to seek help from a TA or from the professor.

There will be a design check for each project about a week after the project goes out. This is a chance for you to discuss your design with a TA. Note that you are required to work with a partner for your design check. Signup sheets for design check times will be posted outside the 2nd floor TA room (CIT 271) when the project goes out.

At the time of your design check, you should know whether you and your partner will complete the project together or separately. During your design check, you will also schedule a time for your final grading.

Projects are due by 11:59 PM on their due date (typically a Tuesday). You must hand in your project by that time, even if your final grading is scheduled for the next day.

Projects will be graded interactively because we feel that immediate feedback will help you better learn from your work. You may fix errors in your project during this meeting to regain up to half of the credit that you would have lost.

Late Policy

Projects are the only assignments accepted late without extensions.

Any project handin handed in over 24 hours late will recieve no credit. Any project-related handin which is turned in less than 24 hours late will be docked 20% of the value of that handin. So, for example, if a particular handin is worth 50% of a project, and you hand it in 12 hours late, you will lose 20% of that 50%.

At the end of the semester, we will give one free late day on the project handin where it will help your grade the most. So whichever late handin you lost the most points on (which was handed in less than 24 hours late), you will get back the lost 20% on.

Exams

As the only completely non-collaborative type of assignment in the course, exams account for a significant portion of your grade. Lest that sound too scary, you should know that they are take-home and open-notes---essentially a longer and harder homework assignment that you do by yourself.

The two exams are weighted as follows. The midterm exam counts 40% and the final exam counts 60%. You must achieve at least 50% on the weighted exam average to pass the course, although that alone is not sufficient to earn a passing grade.

Handin Policy

All code you hand in must compile and run, as-is. This means that you must include all of the classes that your code requires, including classes like utility.LinkedList (unless you are using java.util.LinkedList). You may hand in your entire cs018project to be sure that you have handed in everything necessary.

Collaboration Policy

In order to make sure that every student is evaluated fairly and according to the amount she or he learns, we have instituted a few rules governing collaboration. Note that these rules are specific to CSCI 180; rules vary widely from course to course.

  • Labs: Collaboration is strongly encouraged in labs. You are required to pair-progrm at all labs. Learn from each other and from the TAs.

  • Homework and Programming Projects: You may work out solutions to problems with other students; you may also help each other design code. However, you must understand everything you write down and hand in. To that end, we insist that you write up your solutions on your own, and that you not take away any notes or code (in any form---paper, e-mail, instant messages...) from any joint work. Your ability to reconstruct what you have developed with your classmates is the proof that you understand it.

You may also help debug another student's code, but only by helping to identify the cause of a problem; you may not contribute code to fix the problem.

  • Quizzes: Quizzes will be given in class, and no collaboration is allowed.

  • Exams: No collaboration is allowed on the two take-home exams. You will be required to sign your exam before you hand it in to acknowledge that you did not work with anyone else on your exam or obtain help from anyone other than the TAs or the professors. Indeed, to be certain that there is no doubt at all about exam collaboration, you may not discuss the exam in any way with anyone except the TAs and professor. That means you can't even chat with friends over dinner about how hard it is.

Important Note: Because Brown does not operate on a honor system, we are forced to police these policies. The TA staff is trained to look for collaboration policy abuses and makes use of software designed to recognize collaboration in programming assignments. Violating the collaboration policy is a violation of the Academic Code, and can result in all of the punishments detailed by the university. Just don't do it.

Where To Get Help If You Need It

TA Hours

TA hours will be held in the TA rooms on the second floor of the CIT. These rooms are room 271 (the birdcage) and room 227 (the moonlab). TAs will gladly clarify homework questions, explain concepts covered in programs and homeworks, and help you with general questions about the class.

TAs are here to help you, but remember that TAs are students too. Please don't ask them questions outside of official TA hours or labs. TAs have their own classwork to do. If you ever feel that you can't possibly make the scheduled TA hours, please talk to the Head TAs. If you need to speak with someone during business hours, try contacting Professor Cetintemel.

The Mailing List and Email

Announcements, assignment clarifications, information about upcoming CS talks, interesting links, and more will be posted to the course mailing list, cs018@list.cs.brown.edu. If you want to know something about the course, the list archives (or your inbox) are a good place to check; chances are someone else wanted to know, too.

It is very important that you be on the mailing list - we will send out a test message during the first week or so of class. If you do not recieve it (to your CS email account), you need to talk to a TA as soon as possible. If you are not on the mailing list, and do not notify us, you are missing important clarifications and corrections. If you miss a clarification halfway through the semester because you aren't on the list, it's your fault - you were responsible for making sure you got on the list!

If you have a question for the TAs, you can email cs018tas@cs.brown.edu. If the answer is appropriate (i.e. it does not give away the answer to a problem), the TAs will post it to the mailing list; otherwise, they will probably tell you to come into TA hours.

If you're unsure how to check your CS email, or would like to forward it to another email account, as a Sunlab consultant - they sit at machine 9a, closest to the Sunlab door.

The Web

Homeworks, labs, lecture notes, documentation, important notices, and nifty links will all be available from the course web page in a plethora of formats. Please check the web page as often as you can (within reason, of course---go out and enjoy the sunshine every now and again), as important notices and the like will be posted there.

What To Do If You're Bored

There will occasionally be extra problems on homeworks, projects, and exams.

Class and Notes

This class has no required or recommended books. Your main text will be the lecture notes available on the course web page; you can also find online documentation about Java on the website. You are strongly encouraged to read the lecture notes from each class before the next one; you will often be quizzed at the beginning of class on your understanding of the previous material. We ask this of you because our course material builds on itself rather intensely, and we feel that mastering each lecture's material as it happens will be easier in the long run than falling behind and having to catch up.

You are responsible for the material covered in class even if you do not attend or if the material is not mentioned in the online class notes.