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

Course meets: MWF 2:00 - 2:50pm, LC C6
Labs are in SEL 2249, T. & W. starting at 8 & 9

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

General Information

Instructor: Pitcher
Office: SEO 918
email: npitch1 @ uic.edu
Office Hours: MWF 11-12
Prerequisites: Credit or concurrent registration in Math 180
Text:
book

Walter Savitch and Frank Carrano. Java: An introduction to Problem Solving & Programming, 5th Edition. Pearson/Prentice Hall, 2008. See book web site.
                ISBN-10:         0-13-601821-1
                ISBN-13: 978-0-13-601821-1
You will also need to purchase a license to use CodeLab ~($25), which is required to do the online exercises.

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 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 2009
 * Lab: Billie Joe Armstrong, Wed. 6:00 AM
 * System: BlueJ 1.3, jsdk 1.5, Windows XP
 *
 * @author  Nikki Pitcher
 * @version August 25, 2009
 * ----------------------------------------------
 */
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: Nikki Pitcher
   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 may program with a partner on any two of programs 2, 3, or 4, but must work on programs 1 and 5 on your own. For pair programming you must choose a partner ahead of time, communicating this by email to the TAs and to me at least one week before the program is due. When programming with a partner you must 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."

When doing pair programming, you will only turn in one program solution, with both of your names on in. If you do more than 2 programs with a partner, then you will receive a grade of 0 on those partner-programs after the first 2.

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. If you work on a program with a partner (pair programming), but have not notified both the TA's and me by email at least one week ahead of time, then this will be considered academic dishonesty and you will fail the course.

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, and certainly don't send anyone an electronic copy, even of a draft of your program. 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 don't write it for them based on your own code. Do not lead your classmates into temptation: guard your print-outs. We use an automatic cheating-verification program called MOSS that is capable of detecting partial logical similarities. Don't even take the risk. In a recent class 10% of the students failed due to MOSS picking up program similarities. In recent semesters students have failed the course for hiring programmers online as well. If MOSS detects your program as similar to another, and you then tell me "Oh, we worked on it together," but you did not 1. turn in a single copy with both your names on it, AND 2. you did not notify me at least one week ahead of time, then likewise you will fail the course.

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]