CS 146 Green Sheet

Dr. Beeson

Web site

The web site for this course is http://www.cs.sjsu.edu/faculty/beeson/courses/cs146/cs146Fall2009.html . At this URL you will find written assignments, reading assignments, the schedule of lecture topics, a copy of this green sheet, and other information which may be posted from time to time. The Department and University make no commitment to keep this site up and running at all times. (Although it has been pretty reliable in the past two years.) If it goes down the night before an assignment is due, you were warned. You might want to download important files when you can, and keep a local copy on your own machine. There is also a link to a form for online submission of programming assignments.

Work to be accomplished

There will be out-of-class programming, extensive reading and study in the textbook, and sometimes non-programming homework related to the lectures. There will not be a term project. You can expect an assignment (programming or non-programming) approximately weekly.


Introduction to Algorithms, Second Edition , by Cormen, Leiserson, Rivest, and Stein (CLRS for short). This is a book with over 1100 pages that will serve as a reference for your entire professional career. The course will cover only some of the textbook contents. The ISBN numbers of the hardback edition, as given on the MIT Press website, are

ISBN-10: 0-262-03293-7
ISBN-13: 978-0-262-03293-3

There is also a paperback edition, which is an "international edition" sold only outside the US; if you can obtain it, it's fine. If you happen to already own the first edition, that will be OK (although the page numbers listed in reading assignments won't match) but if you're buying it now, get the second edition.


CS 46b with a grade of C- or better.

Also you must demonstrate that you are able to write simple programs in Java by correctly solving a set of review exercises before drop day. This is not a programming course--you are expected to already be able to program in Java, and if you cannot you would certainly fail this course. If you cannot solve these review exercises, I will save you the trouble of failing this course by not allowing you to enroll. More details and a link to the exercises can be found on the course web page. Before I had this requirement, a lot of students failed this course. Now, almost nobody who turns in homework and takes exams fails.

Office hours

MW 1:30 to 2:30 p.m.
MW 6:55 to 8:10 p.m. (I catch an 8:25 bus so this office hour must end punctually)

My office phone number is 924-5113. There is voice mail on that line, but I will check it only on Monday and Wednesday. Perhaps your question can be answered by email. You can email me, I’ll do my best to respond promptly but, for example, you might send an email on Friday noon and not get an answer until Monday night. If your question involves code that doesn’t work, it’s best to bring the code to my office where we can look at it together.

My email address is ProfBeeson at gmail.com. (I write it that way to prevent web crawlers from picking it up). Please put "146" in the subject line (along with whatever else you want to put there).

Consequences of cheating:

Cheating on exams or copying homework or will result in an F in the class. You will not be allowed to drop, and the incident will be reported to the University administration.   See also the university's academic integrity statement below.


You will write programs in Java. You will submit programs in a text file, so you can use any development environment on any machine to produce your assignments. They will be compiled with Java 1.5.

Homework Submission--due dates and time.

You will submit your homework assignments online through a web-based submission system accessible from the course web page. The due time is always six pm on the due date. The system may (and usually will) accept late homework until midnight without penalty, but if there are technical problems (such as overloaded servers), it is your risk if you don’t submit by six pm. Multiple submissions are allowed; the last submission is the one that counts.

Homework Submission--online grading

Once you submit your assignment, the system will evaluate its performance on a certain set of possible inputs. These inputs will include some of the examples published with the assignment, as well as additional ones, including possibly randomly generated legal inputs. The system will assign your grade within a few minutes, providing you with some meaningful feedback if your program is wrong. You can resubmit as many times as you like before the deadline. The latest grade is the one that counts. (Not the highest grade, so be careful with multiple submissions close to the deadline!)

There is also a way to submit late assignments online; a grade penalty will be imposed automatically by the system. Specifically, one letter grade if the assignment is less than 24 hours late, and two letter grades if it's more than 24 hours late. There will be a last day to submit each assignment, at least seven days after the due date, and assignments will not be accepted after that date.


The homework assignments in this class are copyrighted by Dr. Beeson, including the names of the assignments, and the names of all the required classes and methods, all the examples that are posted with the assignment, and the problem descriptions and programming hints that are posted. Your solutions are your own, but if you want to post them publicly, you must change the names of the classes and methods, and you cannot post the problem descriptions. This should enable you to show your work to a prospective employer, and possibly allow me to re-use the assignments without future students being able to Google your solutions. Of course, postiing the solutions publicly before the last late submission date would be unethical, just as posting your solutions on the wall outside class would be, even if you change the names. You could also create a password-protected page and email prospective employers the password--that might be easier than changing the names. Thank you for your cooperation in this matter--it's a lot of work to develop new assignments and the testing code for them, and since the subject matter of the course is fixed, in some cases it's not even desirable to develop new assignments.

Grading system

45% for the homework, one-quarter for the two midterm exams (thus one-eighth each), one-quarter for the final exam. The remaining five percent is for short quizzes that will often be administered in the first five minutes of class. These quizzes are designed to provide a grade reward for three desirable student behaviours: show up on time, know what the lecture topic will be, and read the textbook in advance of the lecture. If you must miss a lecture, you can avoid losing quiz credit by sending an email saying, for example, "I must miss the lecture on depth-first search because my sister is getting married in Las Vegas, and I've arranged for so-and-so to give me a copy of her notes." The excuse should be a good one and the plan for getting someone's notes is essential. In case of illness you don't need another excuse and you can figure out later how to get the notes, but you do need to send an email. (I don't use PowerPoint, not because I'm lazy, but because I believe that taking your own notes helps you learn the material.)

There is a minimum-performance clause as well--you must turn submit a serious and timely effort on all the homework assignments. This requirement will be enforced as follows: Failing to submit a serious effort on one assignment means your course grade cannot exceed B-. Failing to submit a serious effort on two assignments means your course grade cannot exceed C-. Failing to submit a serious effort on three or more assignments means you flunk the course. Normally an assignment that earns an F will not be considered a serious effort, since you have at least a week after the due date to consult with the professor, fix your errors, and earn a C. However, it occasionally happens that a student makes a serious effort and still can't complete an assignment.

Grading FAQs

Q: I was sick and didn't turn in the programming assignment, can I submit it late without penalty? A: Yes, If you made arrangements (by email or phone) before the due date, there will be no penalty, but that grade will have to be adjusted by hand later, so you will still see a late penalty automatically imposed. If you are so ill that you can't make the submission even one week late, special arrangements will have to be made. Q: I wasn't sick but I had midterms in my other classes so my programming assignment wasn't done on time. Can I turn it in late? A: Yes, you must turn it in. Turning it in late will cost you one letter grade per day of delay, down to a C, but you must turn in all programming assignments to pass the course. But note there is an ultimate deadline (seven to ten days after the due date) after which submissions are no longer accepted.   Q: I don't understand the grading system. A: let's take an example. You have an A on the homework assignments, a B- and a C+ on the two midterms, and a C on the final. You always did well on the 5-minute quizzes. So that’s ( 0.45 ) * 4.0 + 0.05 * 4.0 + (1/8) * 2.7 + (1/8)*(2.3) + (1/4) * 2.0 = 3.125 = B.

Numbers convert to letters this way: 3.3 is the lowest B+; 3.5 is the lowest A-, 3.71 is the lowest A, anything over 4.0 is an A+.

That conversion method is standard in all U.S. universities, except that when the University uses it to compute your GPA, A+ converts to 4.0, not 4.3.

Final Exam

16:00 section: Friday, Dec. 11, 14:45 -17:00
17:30 section: Monday, Dec. 14, 17:15-19:30

Course Objectives:

The objectives of this course are to:

Student Learning Outcomes:

Upon successful completion of this course, students should be able to:

For further greensheet information please see http://www.cs.sjsu.edu/greensheetinfo/index.html