Important Policies

ICS-33: Intermediate Programming


Spring 2022

Students must adhere to the current campus directives related to COVID-19 and refusal to do so may result in the student being asked to leave a classroom or lab (which can hurt your grade if you must leave an exam).

Goals and Expectations

My goal in ICS-33 is to provide students with an environment in which to improve their understanding of Python, improve their programming and debugging skills, and develop the necessary vocabulary to discuss all aspects of Python programming succinctly. Students will read about these topics, practice them in programming assignments and quizzes, and be tested on them in written and programming exams. If students do the readings and homeworks, they should not have to study for exams.

The enviorment include readings, lectures, labs (where students can interact with TAs and tutors), office hours (for me and the TAs), assignments (designed to strengthen skills and expose weaknesses; later students can read the solutions I distribute), and a discussion board. Students will have to think about and decide how to best use these resources. My fundamental philosophy comes from a quote by Herbert Simon,

"Learning results from what the student does and thinks, and only from what the student does and thinks. The teacher can advance learning only by influencing the student to learn."

ICS-33 reviews and explores in more detail the material that you have already learned about Python, covers new Python material, and surveys useful topics in Computer Science. I expect students to do lots of work (reading, writing code, debugging concepts and code.... not busy work), towards the end of both learning the material, practicing it, and retaining it. Doing the lenghy readings promptly and starting assignments early will improve your learning and your grades.

I will attempt to run this course with reasonable and fair policies, which I have developed over many years of teaching. If you have any issues with any policy, please contact me. I will appreciate hearing your perspective and discussing the issues with you, even if I am unwilling to change the policy. Please contact me if you are uncomfortable about any aspect of the course.

Students not yet Registered

Students trying to register for ICS-33 should attend lecture and whatever lab they are trying to enroll in. Feel free to use one of the lab computers, if one is available: don't take the seat/computer of someone who is currently registered for that lab. Do all the assigned homework and submit your solutions on Checkmate or Gradescope (as directed), which both allow submissions from students not yet officially enrolled. Most quarters, all students ultimately can enroll in ICS-33; but, all students (enrolled and not yet enrolled) must complete and submit all the required homewok on time.

Also, email me (pattis@ics.uci.edu), so that I can put you on the class mailing list at EEE (where you can also read archived messages): everything else about the class in online publicly, not behind Canvas. When you send this email, use your UCI email account; include your

so that I can fill in the grades spreadsheet with this information.

Lecture/Lab Attendance

Lecture: I encourage students to attend class daily, arriving on time, and settling down right before class starts: I will show a clock a minute before class starts and wait until there is silence before starting class. But, classroom attendance is not mandatory, because all lecture material is on the course web (except in-class announcements, activities, and question answering). I expect students to neither carry on private conversations, nor use their computers to answer e-mail, surf the web, day trade stocks, or perform any other activities unrelated to this course. Do not use your personal media in any way that would disturb students sitting near you. In fact, because I continually receive complaints about this issue, my policy is "All students who use their computers/personal media must sit on the right side of the classroom (right as you are facing the front)." Students not using computers/personal media should not sit in this area.

ICS-33 lectures are taught at two times: Lecture A is 1:00pm-1:50pm and Lecture B is 2:00-2:50. Students are free to attend either (or both lectures) regardless of their registration. But students must attend the final exam for their registered lab.

Lab: I expect students who have not finished the current Programming Assignment to be present in lab, so they will be working at least 4 hours/week on the assignment, and so they can easily seek help from TAs and Tutors. It is especially important for students working in pairs to attend their lab together: students from different labs can pair, but only if they can (and do) spend 4 hours/week working together in one of the student's labs.

Submission of Work

All homework assignments are due at 11:30pm. We will grade only on-time submissions; late submissions (even those a minute late) will be accepted by Checkmate and Gradescope, but we will not grade them. Do not submit any work after the deadline; if you are working anywhere near the deadline, you have planned your time poorly on these 1-week and 2-week assignments (and possibly lost some extra credit points; see below). If this happens, plan to improve your work schedule for later assignments. When I assign a program or quiz, we should have already covered in class/notes all the material necessary to understand and complete it. Finally, if you need an exception (justified by some unforseen event that you can document), contact me by email as soon as possible; see the Syllabus for details.

Quizzes and Programming Assignments will receive 1 point of extra credit when submitted 24 hours early; Programming Assignments only will receive 2 points when submitted 48 hours (or more) early. For a 25/50 point assignment, 1/2 points is 4%, which is enough to move a grade, for example, from a B+ to an A-.

See the All Due Dates link (in the tan ICS-33 index on the left-hand side of the course homepage), which shows all due dates/times and where the work should be submitted. I expect you to be responsible and manage your own calendar, checking it daily.

Academic Integrity

I try to run this class so that it is fair for all the students taking it. Carefully read the Academic Integrity Contract. I am fine with students collaborating when learning the course material, but they should not collaborate in getting answers on any graded instruments. Solving quizzes and programming assignments is not a treasure hunt: you are specifically prohibited from googling for related code, or visiting the Chegg, GitHub, CourseHero, or StackOverflow websites, or any similar ones. I check these common websites for students posting questions and receiving answers.

If you commit academic misconduct, there are two penalties.

  1. The course penalty is decided by the instructor. UCI allows instructors to flunk students immediately for one infraction; my policy is a bit more forgiving. In ICS-33, the first penalty is receiving a 0 on the entire assignment; the second penalty is an F in the course (yes, this has happened).

  2. The university penalty is decided by The Office of Academic Integrity and Student Conduct (OAISC). I submit all cases to them and they rule whether students are not responsible or responsible. If they find you responsible, the penalties can vary from warning (for the rest of your studies at UCI), through suspension (for some number of quarters), all they way up to expulsion (permanently from UCI), depending on the severity of the incident, whether/how you take responsibility, and whether it is a repeat offense.

The OAISC keeps all cases on file, which are releasable to various entities external to UCI. I discourage students from cheating to get a few more points, or even to pass the class. If you are caught cheating the effects can be long-lasting and are not localized to UCI. I will not write letters of recommendation for any students whose cases I send to the OAISC.

I expect you to solve the problems that I assign (possibly learning more Python in the process), not just understand solutions that you didn't write/debug yourself. If you need help, read the the notes, examine Python's online documentation (see links on the course website), post questions on Ed Discussion, or ask the staff; also, use the Local Site Search textbox/button on the tan index on the course website. There are many ways to receive proper help on an assignment. Starting assignments promptly is the best first step towards completing them on time (recall completing them early earns you extra points).

Finally, if you cheat "in the heat of meeting a deadline" but feel remorse and contact me (before I detect your cheating and contact you), you will receive a grade of 0 on the assignment, but I will not report you to OAISC. This happens more frequently than students might expect.

Grading ICS-33

Grades are computed from the following testing instruments: Quizzes (~20%), Programming Assignments (~25%), Written Exams(30%), and In-Lab (programming) Exams (25%). All together, the course (these instruments) is worth 1,000 points. A grades spreadsheet showing all graded assignments is available online: see the Grades (zipped .xlsm file) on the tan index on the course website.
  1. Your indvidual grades: regrading:

    You must talk to your Lab TA first about any grading issues. With so many students, I need a buffer, which is your TA. If the TA does not satisfactorily resolve your problem, then you can contact me; I'll immediately check whether you first spoke to the TA: if you did not, the grading issue will not be addressed by either of us. Follow the correct procedure.

  2. Normalization Points:

    I do not curve the course at the end of the quarter; instead, I use a grading policy that "normalizes" each testing instrument. If the class average of any testing instrument is less than 75%, the grades spreadsheet will automatically compute (shown in row 8, highlighted in yellow) how many normalization points are needed to bring the class average up to 75%; it automatically adds these points to the sum of each students scores, to compute that student's averge (shown in column AB). Typically only the written exams (whose averages are often near 65%) are normalized: the class average for most testing instruments is over 75%.

    In the spreadsheet, I record your actual (unnormalized) scores. Column AA shows the sum of each student's actual (unnormalized) scores; cell AA8 shows the total number of normalization points (highlighted in yellow, across all graded testing instruments), cell AA2 shows the total number of points (across all graded testing instruments), and column AB shows the student's average, including all normalization points. So, the student in row 9 shows in cell AB9 an average computed by (AA9+AA8)/AA2. The first time this average is meaningful is after the Midterm Exam (at which time the average reflects some of every kind of testing instrument).

  3. Boosted Exam Scores:

    The following rules allow students with a poor performance on their first testing instrument (In-Lab and Written Exams) to boost their grade by scoring higher later on the same kind of testing instrument. So, no bad grade on these instruments is an anchor preventing the student from earning a good grade.

  4. Minimum Requirements to Pass:

    To pass ICS-33, taking normalization points into account, you must have both

    Students dislike this second criteria, but it ensures that students must perform at least at a C level (for some category of exams: either in-lab or written) under controlled conditions. I could drop this criteria and instead weight the in-lab and written exams more (compared to the take-home assignments): I have experimented on my spreadsheets with this option and I have found that the same students (who do not meet the second criteria) will still not pass the course with the changed weighting, but (and this is a big but) most of the other students will receive lower grades. So, with the strategy I use, the overall grades of passing students are higher.

    Students do not need to score an A on every instrument to receive a grade of A; students do not need to pass every instrument to receive a passing grade. So, if you cannot solve every part of an assignment, don't panic: turn in whatever you have worked on, and lose a few points. If you cheat and are caught, the result is losing all points on the entire assignment (not just the problem(s) you cheated on) and being reported to OAISC. The benefit is not worth the risk.

Ed Discussion for Questions and Answers

Ed Discssion can be a vital resource in ICS-33 or a wasteland: it depends how students use it. Students should use Ed Discussions primarily to seek clarification on course policies and assigned problems and/or the Python language -not to discuss the solutions of problems nor to post/debug code. Here are some specific rules to increase the effectiveness of Ed Discussions.

I will try to answer all questions on Ed Discussions, by connecting to it a few times during the day; but, don't expect an immediate answer from me or an answer late at night (homework assignments are due at 11:30pm). Sometimes my "answer" will be indirect, or advise you on how to find the answer yourself. Some students dislike such answers; but one ultimate goal of this course is for you to be able to find answers independently. "Give a man a fish and you will feed him for a day; teach a man to fish and you will feed him for a lifetime."

Pair Programming

Most programming assignments (not quizzes nor exams) allow students to work in pairs. It is as important to know how to talk about programming as it is to do programming. Try to find a partner who has your general level of understanding of Python, so you can both help each other. Pairs should sit and work together on all parts of a programming assignment. You may not splilt an assignment between you and your partner, nor should one partner do all the work; doing so inhibits learning, which is the purpose of assignments. Students not engaged in programming will likely do poorly on exams and not pass ICS-33. Also, if your partner submits code they cheated on, you will both be charged with academic misconduct.

The bottom line is that what is important is doing the programming: carefully analyzing the problem, writing/synthesizing the code, and debugging it, even talking to your partner about coding issues. What is not important is just understanding the resulting program. Cheating to get a program and then proclaiming that you understand it is pointless. If you work in pairs, ensure that you follow all these rules and submit the code with the required information at the top of all your files. The link Pair Programming discusses more information on this topic.