Home & Syllabus
Spring 2018, not this current semester!
Welcome to CS 141, Programming Design II,
(UIC Call # 40571 (1pm) and 34447 (4pm); Labs Tues: 8am: 34448, 9am:34449, 10am:34450, 11am:34451, 12noon:36510, 1pm:38102, 2pm:40102, 3pm:40649, 4pm:40650, 5pm:40651)
The course syllabus is shown below. The Notes & Reference link shown in the navigation bar at left includes C Libraries, ASCII table, precedence in C, SSH, and Examples of Code
Syllabus
There are two lecture sections for the course. You must attend the section for which you are registered. (See campus map)
M W F 1:00 - 1:50 in LC D1
M W 4:00 - 5:15 in LC D2
Labs are in SEL 2254 on Tues starting at 8, 9, 10, 11, 12, 1, 2, 3, 4, or 5. We do not have lab the first week of class!
General Information
See advice from previous students here. No need to login, and posts can be anonymous. (See the advice from older previous students here.)
See UIC course grade distributions from previous semesters.
Course Grading Criteria
30% Programs (probably 6 of them, 5 points each)
10% Zyante Exercises (We have access to portions completed, so no turn in is necessary after completing problems.)
5% Lab Quizzes (Most likely on Blackboard, requiring a password to open)
5% Lab Activities (Must be done in-person in lab)
5% In-class iClicker quizzes and responses.
10% Midterm Exam #1, both in-lab and in-class portions
15% Midterm Exam #2, both in-lab and in-class portions
20% Final Exam, both in-lab and in-class portions
=====
100% Total
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. If your grade is right on the borderline of the next highest grade, I will consider whether or not you were a "good citizen" on the discussion boards.
Quizzes will be given during during the first few minutes of lab, and will be closely based on the 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 in person during that lab session. Labs are graded on a 3 point scale (0: didn't do it, 1: some effort, 2: average, 3: extra credit). The lowest lab grade will be dropped. Zyante exercises are available on the web and must be completed before class on the posted deadlines. Late submissions will not count towards your grade.
In-class and in-lab quizzes may be given right at the beginning of class, so be prompt!
Program Grading Criteria
Programs are due before 11:59 pm (one minute before midnight) on the day due unless otherwise stated. CS account information to use in logging in on the CS lab machines can be found at go.uic.edu/csaccounts. Please get this information before your first lab. Turning in a program consists of turning it in using Blackboard.
Late programs will be accepted within a week after the original program deadline, and will have a 30 point (out of 100 points) deduction. In addition you will need to turn in a 500-word essay comparing your solution to my posted solution, referring to specific differences and commenting on which is better and why. Failure to include this paper will result in an additional 10 point deduction. Call this paper netidPrognEssay.doc where n is the program number. E.g. for the late submission paper for reed for program 1, the file would be called: reedProg1Essay.doc
Your late submission can use parts of my solution, however you will be graded on the extent to which you did your own implementation. In other words, turning in exactly my program would be a 0/70, turning in 50% of my program would be a 35/70, and turning in all your own code could give you a maximum of 70/70. Zip up your essay and your program together, then submit that single zip file.
Do not turn in both on time and late versions of your programs. If you do, only the late one will be graded (changed 3/12/18) you will be given the lowest score between the two of them. Late programs are not eligible for any extra credit points. After submitting your program in Blackboard, be sure to download it to validate that your submission was correct.
C++ programs must run correctly in the designated environment to receive full points.
If on a PC, your code must run in DevC++. If on a Mac, your code must run in Xcode. If on Linux your code must run on the CS Lab machines.
Partial credit will be given only on programs that do compile and run substantially according to program requirements (i.e. not just "Hello World" or simple input and output). This is important: You will not be graded on the effort you put into a program, but rather on the final result.
The programs you submit, with your name on them, will be posted in an online directory for everyone in class to see. You will be assigned other students' programs to evaluate, using the rubric shown below. Your must be reasonably close to the average of the other evaluations or to the more expert TA evaluation in order to get all the evaluation points.
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.
50%
45%
5%
100
Runs correctly: conforms to assignment description for input and output, follows instructions given. Make sure to test your program thoroughly.
Programming style, further broken down as follows:
(Why the detailed coding standards? If these seem too explicit, take a look at the Indian Hill (AT&T) version or the Google version.)
Evaluation and feedback of other student's programs
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, though the rubric may change from one program to another:
/* -----------------------------------------------------------
Basic Calculator with + - / *
Class: CS 141, Fall 2017. Tues 5pm lab
System: Windows 7, Qt Creator
Author: Dale Reed
Grading Rubric:
50 Execution points (will likely be different for every program)
5 Displays header info when run
5 Displays instructions
5 Output is formatted as shown in sample output
5 Handles both upper and lower case input
15 Makes moves correctly
10 Handles the specified error conditions
5 Gives appropriate end of program messages
45 Programming Style
10 Meaningful identifier names
10 Comments: Has header. Comments on each block of code
10 Functional Decomposition
10 Appropriate data and control structures
5 Code Layout: Appropriate indentation and blank lines
Extra Credit (usually up to +10)
Did not follow naming convention (usually -5)
Late penalty (usually -30)
-----------------------------------------------------------
*/
The last 5 points for each assignment will come for your peer feedback to others' programs. In addition to the above header information, 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
Lab: Tues 5pm
Program: #1, Average the Numbers
Do not modify your program after it has been turned in. In case of a submission 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 (but don't have to) program with a partner on one or both of programs 3 and 4, but must work on programs 1, 2, 5 and 6 on your own. For pair programming you must choose a partner ahead of time, registering yourself and your partner using the partner registration form 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.
Consider using a tool such as TeamViewer or Cloud 9 to allow you both to view and edit code as you are developing together. TeamViewer is free for individual use (as of the time of this writing) and allows you to collaborate remotely. You could use Google hangouts or Skype for video conferencing, and TeamViewer for writing code together. On Cloud 9 you should be able to collaboratively edit if you share the code with each other.
Course Notes
See the Notes link on the course web page menu for pdf copies of class notes. Videos of class sessions will be available online through Blackboard in semesters where this course is taught in one of the UICast classrooms.
Joining Class Late, Missing Class
For students who register for the class after the first day but still within the first two weeks of class, you must send the instructors a private post on Piazza, indicating the day you registered for the class. Be sure to select the late_registration folder for your post so we can find it in the future. If you have done this, then after the first two weeks of class you will be given the class average for any missed labs, lab quizzes, and Zyante sections due prior to you joining the class. You will not be eligible for any missed clicker points.
If you miss class because of a religious holiday, jury duty, UIC sports team event or verified sickness (we may contact your doctor) then please send the instructors a private post on Piazza and be sure to select the missing_class folder for your post.
Labs
Instructional labs are generally held once a week, for 50 minutes. For midterms and for the final exam the instructional lab time is used for the hands-on component of the test. On non-test days the basic structure of each lab is:
~5 minute quiz using Blackboard in the Quiz section (or using a Google form). Quiz links are only available at the beginning of lab, so if you arrive late you likely will miss it. You must be present to take a quiz, as the quiz password will be written on the board.
~5 minute overview of the tasks of the lab activity for the day.
~ 40 minutes to work on the lab tasks. You must work with a partner to get credit for the lab. The two of you will complete and finish a single project.
In lab every 10 minutes or so we will make an announcement for you to switch driver / navigator roles, which means you alternate being the person typing on the keyboard. During the last 10 minutes of the lab the TA(s) will come around to verify your work and check off what you have done.
TAs will give you guidance when you ask a question, but will not necessarily give away the answer. Remember to "ask three before me". If you don't understand something, first confer with your partner. If you still can't get it confer with two other students in a nearby group. If you still can't get it then get help from a TA.
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.
Come to every class, unless you already understand the material very well and have no questions, and can afford to lose the 5% possible points for in-class clicker use.
Go through the on-line book chapters. If you are having difficulty go through it twice. This gives you the preparation to succeed on the lab quizzes. Read the chapters before we discuss them so that you can ask informed questions.
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.
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.
See the teacher and/or TA when you don't understand something and have spent a reasonable time working on it yourself first.
Logistical Details
All critical announcements, changes to assignments, etc. will be announced through Piazza. I'm assuming you will check your email regularly.
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, post into the appropriate category in Piazza as soon as possible.
You are responsible for all information (handouts, announcements, notes, etc.) covered during class. You should look at any online copies of notes and ask fellow classmates for missed information, not the instructor or the T.A.
No grades of "Incomplete" will be given for poor performance in the course. An incomplete can only be given if there are extenuating circumstances and you have 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.
Academic Dishonesty
Any student caught cheating on an exam or program will get a grade of 0 on that assignment and will be dropped a letter grade at the end of the semester. In addition they will be reported to the university and handled according to the Student Disciplinary Policy. The same penalty applies if you use someone else's clicker when they are not physically in the classroom. 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 as well.
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 or have a copy available online. 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 her or his 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 been caught for hiring programmers online and for copying online code. If you can find it online, so can we. 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 you will be subject to the academic dishonesty penalty.
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.
Other
Please also refer as needed to the UIC academic calendar, campus disability services policy, all of which apply to students in this class. I make an effort to avoid having tests on religious holidays, but if I neglect to take one into account, please let me know. If you will be missing class because of a religious holiday then please enter your information on the following form to help me keep track of this: https://goo.gl/forms/KV6Ar0AL3Mjt6E2Y2