Welcome to CS 141, Programming Design II, Spring 2020
This is not the site for the current semester!The formatting is a bit messed up, since it was auto-converted into the new Google sites format.
Read this course syllabus page in detail. Pay careful attention to the various deadlines shown in the course Schedule link in the navigation bar at left. The General Reference link shown in the navigation bar at left includes C Libraries (and local copy), ASCII table, and precedence in C
Post-coronavirus updates are shown below in blue, changing exam and clicker credit.
There are three lecture sections for the course (See campus map)
M W F 9:00 - 9:50 LC C6 Reed (Call # 40571)
M W F 10:00 - 10:50 LC C6 Reed (Call # 34447)
M W F 12:00 - 12:50 ARC 242 Deitz (Call # 41547)
Labs are in SEL 2254 Tues starting at 8, 9, 10, 11, 12, 1, 2, 3, 4, or 5. We do have lab the first week of class! You must attend the lecture and lab for which you are registered in order to receive credit for work done during that session. Call numbers for the individual labs are: 8am: 34450, 9am:34451, 10am:36510, 11am:38102, 12pm:40102, 1pm:40649, 2pm:40650, 3pm:40651, 4pm:41990 , 5pm:41991
30% Programs (probably 6 of them, 5 points each)
10% Zybook Exercises (As teachers we have access to what you have done in Zybooks, so no turn in is necessary after completing problems.)
5% Lab Quizzes must be completed individually in person in lab
5% Lab Activities (Must be done in-person in lab with a partner)
5% In-class iClicker question responses.
10% Midterm Exam #1, both in-lab and in-class portions
10% (was 15%) Midterm Exam #2, both in-lab and in-class portions
10% (was 20%) Final Exam, both in-lab and in-class portions
=====
85 Total (Your final percentage will be out of 85, rather than 100, to compensate for the drop in credit for the last two exams that are given online.)
Letter grades are assigned on a curve at the end of the semester. A few students who are on the borderline between grades and who are "good citizens" on the Piazza discussion board will get bumped up to the next highest letter grade at the end of the semester.
See UIC course grade distributions from previous semesters.
(See the Data tab, then Student Data, then Grade Distribution, to take you into the application.)
The deadlines for programs and Zybook exercises are listed on the course schedule. See the link near the upper-left of this page for this schedule.
Quizzes will be given during during the first few minutes of lab, and will be closely based on the exercises from the assigned readings. No makeup quizzes will be given. Labs are graded on a 3 point scale (0: didn't do it, 1: some effort, 2: average, 3: extra credit). The lowest lab quiz grade and the lowest lab activity grade will be dropped. Zybook Participation as well as Challenge activities are available on the web and must be completed by midnight on the deadlines posted on the class schedule. Only on-time submissions will count towards your grade for lab activities, quizzes, and Zybook activities.
Some of you may not want to attend class, or may not want to attend lab. At the end of the semester your clicker score will be the maximum of: 1. Your iClicker percentage, 2. Your overall (in-lab + in-class) final exam score percentage, and 3. Your iClicker percentage before online instruction began on 3/30. The final exam average substitution will also be true for your lab quiz and lab activity scores. This means that if you skip class and skip lab, your final exam will count an additional 15% of your grade.
Programs must be submitted by midnight on the date listed on the CS 141 class schedule to be considered as on-time. There are two parts to submitting your program, both of which must be done before midnight on the day due:
Have your code completed in Zybooks, with all the Tests run within Zybooks. You must create a single program version that passes all the Zybook tests to get credit for them. We may re-run all your tests when grading.
Submit your source code into Gradescope for style points. To get programming style points, your program must earn at least 25 points out of the total possible 55 points for program execution within Zybooks. In other words, you only get style points for programs that substantially run correctly according to the program description.
Late programs
These will be accepted within a week after the original program deadline, and will have a 30 point (out of 100 points) deduction in addition to any other deductions.
You will need to email the TA in charge of grading your program if you want to turn your program in late and have them retrieve your score, as otherwise we will only be collecting on-time submissions. The list of which TA grades which program will be posted in the Resources tab in Piazza.
You additionally will need to write a 500-word essay comparing your solution to my posted solution, referring to specific differences and commenting on which is better and why. This essay must be submitted as part of the header at the top of your program. Failure to include this essay will result in an additional 20 point deduction.
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.
55% of the score for each program will come from the Zybooks tests. The other 45% will come from programming style points, as detailed below. 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%
45%
100
Passes Zybooks assessments and/or manual tests.
Programming style (awarded only if program earns at least 25 points out of 55 for program execution):
(Why the detailed coding standards? If these seem too explicit, take a look at the Indian Hill (AT&T) version or the Google version.)
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:
/* -----------------------------------------------------------
Program 1: Basic Calculator with + - / *
Class: CS 141, Fall 2019. Tues 5pm lab
System: Zybooks
Author: Dale Reed
-----------------------------------------------------------
*/
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 work with a partner 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, only one of you should submit the program solution, with both of your names on it.
Consider using a tool such as Google Docs or TeamViewer 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, Skype, or Zoom for video conferencing.
See the Class Notes link on the course web page menu (it is about the sixth item down on the left) for pdf copies of class notes and copies of code done in class. Videos of class sessions will be available online through the Blackboard "Echo 360" link in semesters where this course is taught in one of the UICast classrooms.
Refer as needed to the UIC academic calendar. 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, your class section, lab section, and your UIN. Be sure to select the late_registration tag for your post so we can find it in the future. If you have done this, then at the end of the semester if the missing points make a difference in your final grade, then we will revisit your missing lab and Zybook scores. You will not be eligible for any missed clicker points.
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 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.
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 a Google form or Blackboard in the Quiz section. 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 provided by your TA.
~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, which both of you should turn in. Plan on switching lab partners every couple of weeks.
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. (If we forget to announce this, please go ahead and switch on your own.) 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.
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. Doctor's notes must include their contact information. If such an emergency occurs, post a private message into the Piazza instructor's group as soon as possible. In the case of a medical emergency, if your doctor is unable to verify your visit without a signed HIPAA authorization form, you will need to complete a HIPAA authorization for release of health information form in order for me to verify that you were seen by the doctor on the date in question.
For highly sensitive matters, the student or someone who is supporting the student should contact the Office of the Dean of Students via the Student Care & Assistance Request or at 312 996-4857. The Dean’s staff will then contact me on your behalf.
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.
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.
To receive a grade in this class you need to use this google form to enter your information and acknowledge that you have read the Academic Honesty policy shown below, and that you agree to abide by it.
Academic dishonesty is anything that gives you an unfair academic advantage. Academic dishonesty will result in an Academic Integrity Incident Report go.uic.edu/academicIR going to the UIC Office of the Dean of Students. Details are given on the Academic Integrity page, which includes a link to the Student Disciplinary Policy.
Any student caught in Academic Dishonesty on any course work will get a grade of 0 on that work and will be dropped a letter grade at the end of the semester, for each offense. This penalty applies to all prohibited behavior listed below in the Don't categories, unless specifically allowed by the instructor:
Class:
Do
Talk to people around you during pair-share discussion, and during pair group discussion clicker questions
Don't
Use someone else's clicker in class to give them clicker points
Communicate with someone else in class during individual clicker questions
Lab
Do
Collaborate with your lab partner and in conversation with other groups around you during regular lab activities
Don't
Communicate with anyone besides a course instructor or TA during a lab quiz or test
Send or receive online quiz, lab assignment, or lab test password information
Send or receive a solution to a lab quiz or lab assignment before all the labs have passed for that week
Use a solution to a lab assignment that you find online that someone else wrote
Collaborate on a lab with one or more people outside of the lab context
Programs
Do
Discuss conceptual solutions to assignment coding problems, both in-person and online
Show people your code in-person, and describe it (but no electronic copies!)
Assist classmates in determining why his or her code doesn't work
Post a few lines of code online to illustrate some problem and get help in finding a solution
Post and discuss your program solutions after the deadline has passed
Don't
Send or post an electronic copy of a draft or finished version your program before the assignment deadline
Represent someone else's code as your own. (If you can find it online, so can we!)
Have someone else write your program, either in person or online
Write someone else's program
Work with a partner (pair programming) without having notified the TA's and me at least one week before the deadline
Work with a partner (pair programming) on a program besides the assignments for which this is specifically allowed
Exams
Do
Bring in paper copies of old exams as well as paper copies of books and anything else you want
Don't
Communicate with another person during an exam
Use electronic devices or electronic resources (e.g. phones, smart watches, tablets, computers, etc.)
Look at someone else's work during an exam or allow them to look at yours.
We use an automatic cheating-verification program that is capable of detecting partial logical similarities. Don't even take the risk. In spite of all these warnings, most semester ~6% of the students fail due to our system picking up program similarities. Security cameras monitor work done in labs, and logs for university log-on activity can be requested when necessary.
On an exam you may be asked to sign the following:
I, _____________________________, certify that I will not do and have not done anything during this exam to give me an unfair academic advantage.
Unless specifically allowed by the instructor, during the exam I will not and did not: 1. Use any electronic devices or resources; 2. Consult any book or course-related materials; 3. Communicate with or look at any other person's work.
I understand that violating this honor code will result in an Academic Integrity Incident Report to the UIC Office of the Dean of Students, which will become part of my academic record and may result in suspension, termination, or denial of a degree from UIC.
Signature: __________________________________________
Refer as needed to the UIC campus disability services policy which applies to students in this class. If you have special circumstances such as a letter of accommodation (LOA) from the UIC Disability office, then please indicate this to me directly via email along with a copy of your letter, and remind me before each exam of any accommodations needed.
See advice from previous students here. No need to login, and posts can be anonymous.
See the Starting Out link in the navigation bar above at left. 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. 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. For you to succeed my expectation is that you will do the following:
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 online book chapters. If you are having difficulty, go through them 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.