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
- name
- student number (typically 8 digits)
- major
- year in school
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.
- 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).
- 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.
- 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.
- 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).
- 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.
- In-Lab Exam #2 is comprehehnsive: it covers the data structure material from
In-Lab Exam #1, extended with material about Python classes.
Therefore, if a student does better on ILE-2 than on ILE-1, it will improve
their score for ILE-1.
The exact formula is complicated (because it takes normalization points for
each testing instrument into account), but basically a student doing better
on ILE-2 will have their ILE-1 score boosted to .25*ILE1 + .75*ILE-2.
If this is the case, the score in column Q willl be highlighted in yellow and
the score in column X will use the boosted score.
Note, that a higher score on ILE-1 will not boost the ILE-2 score, nor does
the score on ILE-3 affect anything else.
- The Final Exam is comprehehnsive: it covers the material from the Midterm
Exam, extended with material covered in the second half of the quarter.
Therefore, if a student does better on the Final than on the Midterm, they will
improve their score for the Midterm.
The exact formula is complicated (because it takes normalization points for
each testing instrument into account), but basically a student doing better
on the Final will have their Midterm score boosted to .25*Midterm + .75*Final.
If this is the case, the score in column T willl be highlighted in yellow and
show the boosted score (which will be used in column Y).
Note that a higher score on the Midterm will not boost the Final score.
- Minimum Requirements to Pass:
To pass ICS-33, taking normalization points into account, you must have both
- A passing percentage (at least 72.5% after normalization) - call this your
standard grade (see column AB), and
- A passing percentage (at least 72.5% after normalization) on either
your In-Lab Exams (average of 3) or your Written Exams (average
of 2).
Students who have a passing standard grade but do not meet this criteria will
have their standard grade highlighted in red in columns AD/AE and will
receive a grade of C-.
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.
- Before you post a question, check whether that question has already been
asked: examine the title lines of recent posts in that category and type
important keywords into the Search text box to the right of the
New Thread button, so Ed Discussions will show you any previously
asked questions containing these words: it searches titles and content
(you can also disclose filter and make a selection to aid your
search).
- I generally disallow anonymously questions. I want you to
write your question carefully and clearly, stating important context,
and "own your question" by attaching your name.
During the quarter students should improve their ability to ask questions,
by reading well thought-out questions (and answers) and carefully posting
their own questions.
Remember when you post, you have been grappling with your problem for a
while, so you understand it well; but readers of your question won't.
- Post in the correct category and carefully write descriptive text/keywords
in the Title: well-chosen titles are crucial for increasing the
useability of Ed Discussions.
You might build the titles around the keywords that you used when
searching (see first bullet above), assuming others would search for the
same keywords.
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."
-
I have also found that when a student spends time carefully thinking about and
composing their question, they will often soon find the answer themself
(because of the work/thought they put into asking the question).
|
If we really understand the problem, the answer will come out of it,
because the answer is not separate from the problem.
- J. Krishnamurti
|
If you answer your own question, don't just delete it or update it to say
"Never mind, I solved it."; update it with some useful information directing
other students toward solving the problem (not by stating the solution).
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.