ICS 33: Intermediate Programming with Python
Fall 2024
Course Reference
Instructor information
How best to contact me
I tend to be much easier to reach via email than any other way, so I would suggest using email to contact me under normal circumstances. As it turns out, I'm not in my office on campus all that often, but I am connected online quite a lot.
When you write me an email, it's not a bad idea to be sure you're including enough contextual information in your email that I'll be able to answer the question: your name, your student ID#, and which course you're enrolled in are all good data points to include. Without things like this, it raises the likelihood that I won't understand the context of the question you're asking (e.g., "When is Project 1 due?" is a question that has a different answer in different courses of mine), which means we'll need an additional round trip to get the matter settled.
Office hours
I'll be offering virtual office hours via Zoom on Mondays and Wednesdays from 6:00pm-7:00pm, beginning on Monday, September 30. You'll find a link in the Canvas course space.
If you require a conversation privately at other times, I'll do my best to accommodate your request, but we'll schedule those on an ad hoc basis; email me as a starting point and let me know what you'd like to discuss and what times you are available. With several hundred students in two courses this quarter, I may not be able to accommodate every request, so I may also direct you to other places you can get help more quickly (such as the labs with TAs and LAs, which I'll describe below), but I'll certainly try to accommodate requests that I'm best equipped to handle myself.
Course staff
In addition to me, this course is staffed by a number of folks in a few different roles. They are listed below.
Teaching assistants
There are four teaching assistants, who will share the duties of attending lab meetings, will serve as an additional source of assistance on your projects and via the Ed Discussion online discussion board, and will be the primary point of contact with regard to the grading of the projects and reinforcement exercises.
Readers
Additionally, we have two readers, who will be tasked with grading the reinforcement exercises.
Learning assistants
In addition to the TAs, the following in-lab learning assistants will also be staffing the labs at various times, specified further below.
Course organization
In-person format
This course will be administered in a predominantly in-person format. What this means, chiefly, is that full participation in this course will require your physical presence on campus at certain points throughout the quarter, and that we will not be offering a separate virtual experience to students who are not physically attending at those times.
Required equipment
In order to participate in this course successfully, you may at times find it helpful if you have access to a few things.
@uci.edu
email via that connection. These services are part of how we'll be communicating. If Internet accessibility is a problem, there are some resources at UCI TechPrep that might be of help.Lecture
A lecture meets on Tuesdays and Thursdays from 6:30-7:50pm in BS3 1200.
The lectures are not recorded, though they correspond pretty closely with the Notes and Examples, so, if you need to miss a lecture, there's no need to panic; a full record of what we did will be available in the Notes and Examples, and I do not ever make special announcements during lectures that are not also made elsewhere (e.g., on this web site, on Ed Discussion, etc.).
Given the size of these courses, attendance is neither recorded nor graded, but we certainly recommend it. Naturally, attendance is required on the days when exams are held, which are listed in the Schedule. See the exam attendance policy below for more details.
Where to go online
While the course is predominantly an in-person offering, there are aspects of the course that are administered online.
@uci.edu
email address, so you'll need to ensure that you're able to read and respond to emails sent there.Online decorum
It should go without saying — though recent experiences tell me otherwise — that we expect a reasonable level of decorum within all of these online spaces at all times. While I won't be able to describe all the ways that you might behave problematically, do be aware that we will not tolerate behavior that is offensive to others, or that disrespects others; just because you're online doesn't relieve you of your obligation to be collegial with one another and with course staff, and there will be repercussions when you do not meet that obligation.
Reinforcement exercises
Roughly corresponding to each week's lecture material will be a collection of reinforcement exercises, whose role is to help you assess your knowledge of each topic. Think of these as "Things you should expect to be able to do and/or explain if you understood recent topics well," so they are a sort of measuring stick that you can use to gauge your understanding. They do contribute to your grade (see below), but also contribute to ensuring yourself that you'll leave this course with what you came for.
These exercises will be released as they are available. Asking when these will be available will not make them available; they'll be posted when they are.
Labs (The ICS 33 Help Center)
There are six lab sections, meeting throughout the day on Mondays, Wednesdays, and Fridays. Collectively, we will refer to all of these hours as the ICS 33 Help Center, which meet at the following times:
While you are required to be enrolled in a lab section — and this enrollment does determine who will grade your projects — you are generally free to attend the ICS 33 Help Center whenever you need it, regardless of which lab section you are enrolled in, with one caveat: If there are many more students attending a lab than are actually enrolled in it, we may need to prioritize answering questions for students officially enrolled in that lab. (We hope we won't need to do that, but the simple reality is we can't support all of you simultaneously, so we can only promise you our best.)
While it is not a required part of the course, and nothing will be graded in the labs this quarter, attendance does offer some significant benefits:
Some of our lab sections are laptop-only sections, which means that there are no computers available for general use except one that you bring for yourself. However, these sections will be staffed with the same personal help available in the others, so if you tend to carry a laptop around with you anyway, you will probably find it at least as comfortable as the alternative.
Staffing in the ICS 33 Help Center will be as follows. Note that different TAs will sometimes be attending labs on different days; that's specified in detail below.
Lab Section | Location | TA | LAs |
Lab 1 MWF 8:00am-9:20am |
In-Person: ICS 183 | M: Jared Macshane W: Jared Macshane F: Jared Macshane |
Ryan Mya |
Lab 2 MWF 9:30am-10:50am |
In-Person: ICS 183 | M: Jared Macshane W: Shagoto Rahman F: Shagoto Rahman |
Jeremiah James Soe |
Lab 3 MWF 11:00am-12:20pm |
In-Person: ICS 183 | M: Shagoto Rahman W: Shagoto Rahman F: Shagoto Rahman |
Zhiqing Liu |
Lab 4 MWF 12:30pm-1:50pm |
In-Person: ICS 364A Laptop-Only |
M: Robin Song W: Robin Song F: Robin Song |
Tianzhe Sun |
Lab 5 MWF 2:00pm-3:20pm |
In-Person: ICS 364A Laptop-Only |
M: Robin Song W: Robin Song F: Chenhan Lyu |
Eliya Khajeie Gensen Xiao |
Lab 6 MWF 3:30pm-4:50pm |
In-Person: ICS 364A Laptop-Only |
M: Chenhan Lyu W: Chenhan Lyu F: Chenhan Lyu |
Laila Wafaie |
The labs will begin meeting on Monday, September 30.
Ed Discussion
Around the time the quarter officially begins, a discussion forum will be created on Ed Discussion. You'll find a link to Ed Discussion on this course's Canvas page, and officially enrolled students should automatically have access to it once the quarter begins.
Within that Ed Discussion forum, you'll be able to ask us (and each other) questions about course material, and can expect to see both course staff and students answering those questions along the way. It is our hope that this can be a useful resource to you, and the course staff will be glad to be of service there throughout the quarter.
However, it's important to note that Ed Discussion is only a positive and productive tool if students use a certain level of etiquette and care in using it, so we'll be requiring that — and your grade can be negatively affected if you do otherwise. So, what does that mean? It begins with a straightforward guiding principle: When you post on Ed Discussion, you're essentially speaking to everyone in the course, which means that the question needs to be appropriate for those circumstances. In practice, that means a few things.
Textbooks
This course requires no textbook, as I am providing a complete set of Notes and Examples covering every lecture this quarter.
Note that you might find a book that complements the lecture material and helps you fill in details that you missed while listening to me speak for eighty minutes, though I think the Notes and Examples section will generally be enough information for you to succeed. If you prefer a book (or online supplements of your own choosing) other than what I'm providing, that's generally fine, though do be aware that style and approach among practitioners of a programming language tend to differ, particularly with respect to a language with the long and varied history of Python. We'll be expecting you to follow similar conventions to those we're learning about in this course.
Accommodations for disabilities
Any students who feel that they may need an accommodation based on the impact of a disability should contact me privately to discuss these specific needs. Also, contact the Disability Services Center online or by phone at (949) 824-7494 as soon as possible to better ensure that such accommodations, such as alternative test-taking environments or note-taking services, can be arranged for you in a timely way.
Grading
Weights of graded artifacts
Your course grade will be determined from the weighted combination of your scores on each of five programming projects, eight sets of reinforcement exercises, and an in-person Final Exam. The weights of each of these are:
Exam attendance policy
Your attendance at the Final Exam on the scheduled date and time is a required part of your enrollment in this course. You will find that date and time listed in the Schedule.
Verify at the start of the quarter that you'll be able to attend the exam as scheduled and, if not, you'll need to find another course to enroll in. Once you remain enrolled in this course, you've made a commitment to attend the exam as scheduled, and we will not, under any circumstances, schedule a Final Exam at a different time to accommodate a scheduling conflict, regardless of whether you were aware of it ahead of time. It is your responsibility to keep your schedule clear, and to arrive at the exam on time and ready to put in your best effort; it is similarly your responsibility to take the necessary precautions to reduce the chances of illness. Your score on an unattended Final Exam is zero, with your grade calculated accordingly.
The only exception to this policy is a documented illness or incapacitation, where, to be clear, the documentation must come from a position of authority — a doctor, a police department, campus authorities, or the like — and clarify why it was not possible for you to attend the exam as scheduled. Things like claims of "I'm not feeling well," photographs of in-home medical testing kits, emails from family members or friends do not constitute documentation under this policy.
An excused exam absence (consistent with the policy above) will need to be made up in-person during a subsequent quarter, with your grade marked as I (Incomplete) until such time as it has been made up. We will not be offering an online exam option in this course under any circumstances.
Online participation and decorum
While it is not our intent to measure your participation — in the sense that we won't be tracking whether you're attending the lectures, watching pre-recorded videos (if any), attending the lab sessions, and so on — we are requiring that students meet the decorum requirements described above. We reserve the right to deduct as much as 10% from a student's grade when their behavior does not follow those decorum requirements, with repeated or severe violations warranting larger-sized deductions. My sincere hope is that no one will receive these deductions, but we do reserve the right to use them if need be.
(Note, too, that you'll be notified as soon as we've decided that you'll be receiving one of these deductions, so you don't need to worry that we'll suddenly be reducing your score at the end of the quarter unannounced.)
Determining final grades
Course grades will be determined neither on a normal curve nor a straight scale. It is guaranteed that overall scores over 90% will receive an A- or better, scores over 80% will receive a B- or better, and scores over 70% will receive a C or better. However, the actual cutoffs may be lowered at the end of the quarter. In short, it is not my intention to fail half of the students, nor am I planning on giving only 2% of the students A's, but I prefer not to constrain myself with either a straight scale or a formalized curve.
Unforeseen circumstances may lead to changes
This course has been designed specifically for in-person delivery, in a way that takes into account the potential for some uncertainty along the way. While we'll certainly do our best to leave these policies — as well as the general structure of this course — intact, it is possible that unforeseen circumstances may require us to make modifications along the way. If so, we'll make those modifications in a way that attempts to preserve the spirit of the course and its grading to the extent possible, and we'll notify everyone of any necessary changes as soon as we can, but will not be willing to engage in an individual or group negotiation about the changes made.
Asking questions about graded work
It's worth taking a moment to understand a few logistics about how we're handling grading in this course — and, in turn, how you might ask questions regarding how your work was graded. Large courses require some logistics in order to run smoothly, and we thank you in advance for paying careful attention to the ones described here.
You'll find that different work of yours will be graded by different people, as the grading job is too big for any one member of the course staff to handle it on their own. Sometimes, it'll be the TA who's in charge of your lab section. Other times, it'll be another TA or one of our readers. Once in a while, it may be the instructor, too.
There are three things you'll need to understand about this process: Knowing who graded your work, knowing how to contact them appropriately, and understanding the guidelines for re-evaluation of your work.
How do I know who graded my work?
Whenever there's a score less than full credit, there will be an accompanying comment in Canvas. For projects, the comment will usually look something like the one you see below — generated by our behind-the-scenes automation tools — which is a comment that appeared on someone's project submission during a previous quarter.
The name underneath that comment — in that case, it was one of the TAs in that course: Robin Song — will tell you who graded your work. The substantive portion of the feedback can be found in the attached file (often named report.txt) that will accompany your grade in Canvas.
For exercise sets, the comment will usually explain any deductions directly, such as this comment that appeared on someone's exercise set during a previous quarter.
Again, the name underneath that comment specifies who graded the work; in that case, it was a reader in that course: Ethan Ho.
How should I contact the person who graded my work?
As a first step, contact the person and only that person privately, which you can do in one of two ways: By sending them email, or by attending a lab in-person when they're attending. You'll find contact information (and, in the case of TAs, lab attendance schedule) elsewhere in this Course Reference.
As discussed above in the section regarding Ed Discussion, do not ask grading-related questions on Ed Discussion, as these are individual matters and it is not appropriate to spend everyone's time on them.
Also, do not post comments on Canvas in response to the scores you've received, as we receive no notification when those comments are made, so we have no way to know that they're waiting for a response.
Guidelines on the re-evaluation of your work
If you believe that you've been graded unfairly, your first move is to contact specifically the person who graded the work privately and discuss the issue with him or her directly. Do not include me in these communications; with hundreds of students enrolled in my courses, I do not have the bandwidth to arbitrate every grading issue. Ultimately, nearly all issues are resolved without my involvement.
Note that we will not reconsider the rubric used to grade your work afterward, but if it was applied unfairly or incorrectly to you, in particular, we can consider an adjustment. Note, too, that the word "unfair" is not defined as "Not the way I would have preferred it to be done, so that my score would have been higher," nor "Not the way I would have done it if I had noticed the requirement that led to a deduction," nor "Not the score I would have received if I'd been graded on effort instead of results." It is not unreasonable for us to expect that you've read and understood an assignment in its entirety before completing and submitting it, and it is not unreasonable for us to grade on the basis of things like completeness, correctness, and quality, as opposed to how much time you claim to have spent on it or how badly you say you needed a certain score on it. Similiarly, it is not unreasonable for us to be the ones to define what constitutes completeness, correctness, and quality.
Note, also, that we will not be willing to regrade your work by having you demonstrate it on your own laptop or device, or by sending videos or screenshots of it. We are only willing to grade what was submitted before the deadline, and we are only willing to grade your work in the way that we graded everyone else's, which means that we must retain control over what files we grade and the environment in which we grade them.
Instructor-level arbitration
If, after you've contacted the person who graded your work and had a conversation about it that reached a conclusion, you still believe that you haven't been treated fairly, you are then (and only then) welcome to raise the issue with me and I will arbitrate, though I should point out that it is relatively rare that I overrule a grader's judgment. I've communicated a fair amount with the graders ahead of time about how assignments should be graded, so they're generally acting on my instructions, which means that I don't find very often that I think work has been graded unfairly. Once an assignment has been graded for everyone, we will not be willing to renegotiate the rubric and then regrade everyone's work accordingly, much less solely regrading yours on such a basis.
Dropping the course or changing grade option
Through the end of Week 2 (Friday, October 11), you may drop the course by simply going to WebReg and dropping it. If you wish to drop the course after that date, you will need to use the Enrollment Exceptions system to request a drop; I do not have any influence over those, ultimately, as the Dean of the Bren School (and your major, if you are majoring in something outside of the Bren School) must approve them. It is not generally the case that an exception will be accepted simply because you're not doing well in a course, though extenuating circumstances are certainly considered.
Similarly, changing your grade option (to Pass/NotPass or back again) can be done via WebReg through the end of Week 2 (Friday, October 11), after which you must use the Enrollment Exceptions system to request the change. As with exceptional drops, you must receive approval from the appropriate Deans, that approval is not guaranteed, and I do not have any influence over them.
Enrolling in the course after it begins
Even in courses with no available capacity, students are sometimes able to enroll after the beginning of the quarter — sometimes even as late as the end of Week 2 — but the presumption is that students attempting to enroll in the course (e.g., by being on a waitlist, or simply considering it from the outside looking in) have been keeping up with the coursework. Essentially, the day you add the course, we expect that you'll be at the same point in the coursework as everyone else, and that any past due dates have already been met.
Finding out how to become enrolled
This particular offering of ICS 33 has no official waitlist.
If you have questions about enrolling in the course, adjustments to its capacity, or other such matters, your best bet is to speak with the ICS Student Affairs Office. As they are managing enrollments amidst a variety of competing constraints, there is essentially nothing I can do to help with enrollment-related matters.
Access to resources while waiting to enroll
Essentially all of the materials for this course can be found right here on the course web site, which is available on the open Internet. So, fortunately, you will not need to be enrolled in order to remain up to date; all you'll need to do is revisit these pages (and possibly reload them) as they're updated.
Provided that classrooms and lab meetings have empty seats, you can feel free to attend classes while you wait to enroll. If classes are filled to physical capacity, you'll need to leave to make room for someone who is officially enrolled.
Since there is no official waitlist, we have no automated mechanism to manage access to the resources such as Canvas that are restricted to enrollees, and we will not be able to spend time managing individual Canvas access for students not officially enrolled in the course. Essentially, this means that those resources will simply be unavailable until you become enrolled.
Submitting your work while waiting to enroll
Aside from the Final Exam, all of your work is to be submitted on Canvas. Students not enrolled in the course will not have access to Canvas. However, this does not remove the obligation to be finished with assigned work when it's due, and to be caught up at the time of your enrollment. If you've taken a seat from someone else who is caught up, it's only fair that you've also kept up. To allow for timely submissions from unenrolled students, the following policy will need to be followed.
Beyond the policy described above, late work will not be accepted from late enrollees in the course under any circumstances.
The above policy does not apply to normally enrolled students. Due to the substantial overhead involved in handling them, we do not accept submissions via email from enrolled students under any circumstances; if you're enrolled in the course, submit your work to Canvas.
Academic honesty
The policy
As a student enrolled in ICS 33, you are expected to know and follow the academic honesty policies of both the Bren School of ICS and the University as a whole. Please take a few minutes to read the policies, which can be found at this link.
All of your work on projects and reinforcement exercises is expected to be completed solely by you. Working in larger groups and/or sharing of code or solutions between students is not permitted. Note that "high-level discussion of course material for better understanding" is permitted and encouraged, but when it comes time to sit down and write code, that is expected to be done by you and you alone. Note, also, that this disallows the use of automatic systems, such as generative AI systems like ChatGPT, from producing any part of your solution, because that, too, would not be code written solely by you.
All submissions are compared to one another using an automated plagiarism detection system. This system is extraordinarily good at finding similarities between submissions, even when there are superficial differences. (Note that we also compare your submissions to those submitted during previous quarters whenever one of these assignments was given during a previous quarter, so it is an exceedingly bad idea to turn in, or even refer to, code written by a friend of yours who took the course already.)
Since all of your work is expected to be completed solely by you, you will be held responsible even if you plagiarize only a small portion of someone else's work.
Academic honesty is a two-way street. Providing your code to other students for them to turn in as their own is not permitted any more than turning in someone else's code. Resist the temptation to give code to your friends "for reference." Based on my experience, I can say that your "friends" may very well betray you and turn it in, anyway, and then you'll have a lot to answer for.
Naturally, the Final Exam is also expected to be an individual effort. Dishonest behavior during an exam will not be tolerated.
All violations of academic honesty policies will be reported to the UCI Office of Academic Integrity & Student Conduct (AISC) and will trigger an administrative procedure, which is described on their web site. Additionally (and at least as importantly), you can receive a course grade of F — as a number of students in my courses do, because of this issue, every quarter — without the option to drop the course to avoid the grade. A single documented case of academic dishonesty may also have other ramificiations, such as precluding you from switching into computing majors, registering for computing minors, joining the ICS Honors Program, and graduating from a computing major with honors. All of this is University and Bren School of ICS policy and is not subject to negotiation.
Knowing when you're being dishonest
I've been asked by students how they know when they're crossed the line between asking for help and being academically dishonest. To me, there is a fairly straightforward way to know the difference. Did you actually write the code in question? That's not a matter of whether you typed it in; that's a matter of whether it was you who wrote it (i.e., it is comprised of your own ideas about how to solve the problem, how to organize the solution, and so on).
The easiest way to determine whether you've crossed the line is whether your work was driven by someone else's existing solution. Here are some examples:
In my view, this really isn't that complicated. We require you to do your own work, because that's how the learning is done in this course. A large part of what you're learning to do is to design and write programs, a skill that can only be built by designing and writing programs. You have to make the decisions about what to do next, how to organize your program, and so on. If someone else is making most of those decisions for you, you're not building the skills necessary to be ready for the courses that follow on from this one. And, from the standpoint of academic honesty, if someone else is making most of those decisions for you, that's plagiarism.
The lesson
Okay, so the moral of the story is that it's wise to avoid cheating. I believe that it's relatively rare that students enter a course with the conscious intent to cheat their way through it; why come to UCI if you're not planning to get something out of the coursework? So why do people cheat every quarter in every course? The answers vary, but here's the easiest way I can boil down the numerous conversations I've had with students caught cheating in my courses over the years: I fell behind and couldn't figure out how to catch up. Things happen and ten-week quarters are unforgiving. You might get sick, you might have issues crop up in your family, you might have misunderstood one of the earlier topics in this course (or one or more important topics in previous coursework) on which later topics depended, you might have an off-campus job that's demanding too much of your time, you might be trying to decide whether you're on the overall life path you want to be on... Any of those things (and many others) can make it hard to keep up. You fall a little behind, you fall a little further behind, and pretty soon the situation seems hopeless. You're under pressure, temptation gets the better of you, and suddenly it seems better to submit someone else's work than to submit nothing. As upwards of 10% of my students (who have cheated like this) can attest, it's not.
If you feel like you're beginning to slip off course or things are getting beyond your control, the best thing to do is to talk to us sooner rather than later. We're here to help; we understand. But the reality of taking large-sized courses at a large-sized institution is that we're not going to know you're in need unless you tell us. If things are happening in your life, tell us; you don't have to be specific if you're not comfortable with it. Before the fact, there's often a way to work things out. After the fact, it's usually too late.
And, in general, some students won't pass this course with a C or better this quarter, and won't be ready to take follow-on courses yet. And that's not as disastrous as it sounds. Most students who get less than a C in ICS 33 take the course again; most of those who take the course again pass it the second time around, with their feet firmly underneath them and ready to move forward.
Reusing one's own work
If you took the course during a previous quarter, it's worth noting that reusing one's own work is not defined in this course as plagiarism. If you originally wrote it, it is not plagiarism to reuse it.
That said, taking a course a second time and submitting one's own work without doing things again from scratch is usually a recipe for failing the course the second time.
I'd ask myself whether reusing your own work, in general, is a good approach. If you failed the course previously, it means there are substantial parts missing from your understanding, and they could be strewn throughout the course, including buried in the details of assignments on which your scores were high the last time.
My suggestion is to pretend like you haven't taken the course before and do everything from first principles. Otherwise, you may find yourself reaching the same points in the course with the same misunderstandings you had before, which will ultimately lead to the same outcome.
Sharing your own solutions online
Some of our past students have wanted to post their own solutions to their projects online, with the goal of helping others or just showing off work that they were proud of. This is also problematic from an academic honesty perspective, because many or all of the projects you're working on will be reused in a future quarter; good problems are good problems, and I don't rebuild five new projects every quarter. Given that, posting your prior work online will absolutely lead to other students finding it and plagiarizing it — this is now one of the more common root causes of plagiarism cases that we find.
I can appreciate, of course, that you might want to build a portfolio of work to demonstrate your skills as you build them, and I'm not unsympathetic about that. However, the reality is that posting solutions to first-year coursework is very unlikely to be of use in job searches or other professional scenarios. I've asked a number of hiring managers over the years, including ones I've worked for in my industry career, and have universally received the same response about it: Hiring managers generally aren't interested in seeing prior homework. Projects in courses like this one are sanitized, in the sense that they're problems that have been designed to be solved using techniques just taught, with the requirements clearly spelled out, and with few enough rough edges that a large number of students can solve them without encountering roadblocks that can't be overcome. Real-world work isn't like this, as it turns out. Figuring out what needs to be built is as important as figuring out how to build it. Building a portfolio is best done with your own solutions to your own problems, containing things you've written to scratch your own technology itches or explore concepts that you wanted to learn more about on your own.
So, in general, despite the fact that you may be proud of the work you've done, you need to understand that there is a very strong likelihood that the only thing you'll be doing is enabling future students to plagiarize your work — and quite possibly becoming embroiled in the investigation yourself and being reported to AISC — while not accomplishing much of anything positive for youself.
Do not share your prior solutions online, during or after the quarter.