CS 107 (Fall '08)
[Schedule] [Programs] [Notes & Reference] [Examples][Syllabus] [Lab & TA] [Tests] [Grades]

Course meets: Mon, Wed, Fri, 2 - 2:50, LC C2

[General Information] [Course Grading] [Programs Grading] [Pair Programming]
[How to Succeed] [Academic Dishonesty]

General Information

Instructor: Reed.
Office: SEO 917
Phone: (312) 413-9478
email: reed @ uic.edu
On the Web: http://www.cs.uic.edu/~reed
Office Hours: See above web page
Prerequisites: Credit or concurrent registration in Math 180

Text:
book

Walter Savitch. Absolute Java, 3rd Edition, Addison-Wesley, 2008
                ISBN-10: 0321487923
                ISBN-13: 9780321487926

You will also need to purchase a license to use CodeLab ~($25), which is required to do the online exercises.

In the last 2.5 weeks of the course we will study a little bit of C++. Though not required, if you plan on programming in C/C++ in the future you may want to purchase a programming book in C++. There are good ones that you can find online by Savitch, and another option is Deitel & Deitel.

Make sure that you are on the class email list. I will be sending class email to your UIC email, so if you read your mail somewhere else be sure to forward your email. Please send email to me requesting to be added to the list if you do not receive an email from me by the beginning of the second week of class. I'm assuming students check email every day. All critical announcements, changes to assignments, etc. will be distributed via email.

You will be given the opportunity to take a make-up exam only in cases of medical or personal emergencies, which must be verified. If such an emergency occurs, call me or leave a note (or phone message) with the department secretary as soon as possible. If you will be out of town when an exam is scheduled, I must be told in advance and may require you to take the exam early. Otherwise, if you miss an exam you will receive 0 points.

You are responsible for all information (handouts, announcements, notes, etc.) covered during class. You should ask fellow classmates for missed information, not the instructor or the T.A.

No incompletes will be given for poor performance in the course. An incomplete can only be given if there are extenuating circumstances and the student has at least a 'C' average in the course. No extra work or extra credit will be given.

If you feel that you deserve more points than you have been given on a quiz, assignment, or test, you must see the instructor about this within one week of the time the work in question is first returned to the class. After this deadline, no claims will be considered, justifiable or not.

Be sure to check the course web page for further information, handouts, programming assignment descriptions, and hints.



Course Grading Criteria

Programs (5) 35%
Quizzes   5%
Labs   5%
CodeLab 10%
Midterm # 1 10%
Midterm # 2 15%
Final 20%
Total: 100%

Letter grades are assigned on a curve at the end of the semester. The way the curve in this class historically usually works, the most you will likely be able to get is a "C" in the course if you turn in only 3 programs.

Quizzes will be given during the first few minutes of lab, and will be closely based on the text's self-test exercises from the textbook assigned readings. No makeup quizzes will be given, but the lowest quiz grade will be dropped. Lab exercises will be assigned during lab and must be completed during that lab session. Labs are graded on a 3 point scale (0: didn't do it, 1: some effort, 2: average, 3: outstanding). The lowest lab grade will be dropped. CodeLab exercises are available on the web and must be completed before 11:59 pm on the posted deadlines.

See the tests description for more information on test format and examples of old tests.

Program Grading Criteria

Each program will be graded out of 100 points as follows. Note that some of the criteria do not apply to early programs (e.g. functional decomposition) since we will not have learned those topics yet.

55% Runs correctly: conforms to assignment description for input and output, follows instructions given. Make sure to test your program thoroughly.
45% Programming style, further broken down as follows:
10% Meaningful Identifier Names. Identifier names should indicate their purpose. Names should be words separated using capitalization, such as gradesSum. Short loops of ~ 5 lines can use loop counter variables such as i or j.
10% Comments. Every function must have a short description stating the purpose of the function, what it receives, and what it returns. Comments should be easily identifiable. I should be able to understand your program by reading only the comments. Also include a header at the top of your program (see example below) that must include lab day and TA name.
10% Functional Decomposition. A segment of code that appears more than once should be extracted to form a separate method (in Java) or function (in C). Methods/Functions should be no longer than around 50 lines. This may not apply to early programs that don't use methods/functions.
10% Appropriate data and control structures: Global variables should be avoided and used only when necessary. Method/Function parameters should be used instead. Appropriate looping and decision structures used.This may not apply to early programs that don't use methods/functions.
5% Code Layout. Different nested levels should have different indentation, where statements at the same level should have the same indentation. Indent at least 3 spaces. Use either spaces or tabs consistently, otherwise printouts will be messed up.
100 Total Points

Each program should include a descriptive header at the top of the first page which must have at least as much information as the following:

/** --------------------------------------------- 
 * This program implements a calculator that does 
 * addition, subtraction, multiplication, and division.
 *
 * Class: CS 107, Fall 2008
 * Lab: Billie Joe Armstrong, Wed. 6:00 AM
 * System: BlueJ 1.3, jsdk 1.5, Windows XP
 *
 * @author  Dale Reed
 * @version August 25, 2008
 * ----------------------------------------------
 */
Additionally your program must print out your name, assignment number and name, TA name and lab information. For instance, if your first program assignment was called "Average the Numbers," then when you run your program the first thing that should appear on the screen is something like:
   Author: Dale Reed
   Program: #1, Average the Numbers
   TA: Englebert Humberdink, T 4-5 

Do not modify your program after it has been turned in. In case of a turnin problem, the last modification date of your original program can still be verified. If you want to change it, make a copy first.

Experience has shown that students who develop their programs on PC's and then port them over sometimes encounter mysterious problems. Plan ahead, since no late programs are accepted.

Pair Programming

You will be asked to practice pair programming for one of the programming assignments. For this you must choose a partner ahead of time, communicating this by email to me at least 5 days before the program is due.

You must then take turns being the "designated driver" and the "non-driver." To do this you must also both read the article by Williams and Kessler entitled "All I Need to Know about Pair Programming I Learned in Kindergarten."

If doing pair programming, you will only turn in one program solution, with both of your names on in.

How to Succeed in this Class

My job in class is to organize the material coherently, give helpful lectures, provide a framework that combines enough challenge and support for success, and grade reasonably. For you to succeed my expectation is that you will do the following. Note that a reasonable academic expectation is that you spend 2 hours outside of class for every hour spent in class. For a few of your programming assignments you may go over this time estimate.

  1. Come to every class, unless you already understand the material very well and have no questions
  2. Read the book. If you are having difficulty, I expect you to read each chapter twice. This gives you the preparation to succeed on the lab quizzes.
  3. Do all the Code Lab assignments. This teaches you syntax, freeing you up when programming to think about problem-solving and design issues.
  4. Attend labs, taking quizzes and doing the exercises. If you already have many programming skills, then pair up with someone who needs the help. You will discover new insights when you have to explain things.
  5. Write the programs, working on them ahead of time and not at the last minute. This allows you to get help from the teacher and from TAs if you need it.
  6. See the teacher and/or TA when you don't understand something and have spent a reasonable time working on it yourself first.

Academic Dishonesty

Any student caught cheating on an exam or program will automatically fail the course and may be referred to the department chair and/or dean.

When writing programs, you may consult with me or the TA at any stage of your program development. It helps if you bring a current print-out. You may seek help about the system or the editor from anyone at any time.

To avoid cheating via collaboration, do not show any other classmates your code. If a classmate consults you for help after attempting to run his or her program, you may assist in determining why his or her code doesn't work, but refrain from suggesting specific new code. Do not lead your classmates into temptation: guard your print-outs. We intend to use an automatic cheating-verification program called MOSS that is capable of detecting partial logical similarities. Don't even take the risk.

You may not get help of any kind from anyone else for the midterm and final exams. These exams must be exclusively your own work.

[CS Dept] [UIC] [Prof. Reed]