Course Syllabus
Instructor information
- Sergio Gago-Masague
- Office: DBH 3208
- Email: sgagomas@uci.edu
How best to contact me
I tend to be much easier to reach via online than in my office, so I would encourage you using piazza for course related queries, or email if you want to discuss a personal issue or make an appointment during my office hours.
Office hours
I will be available Wed/Thu 4 - 5 pm in my office (DBH 3208). Course staff will be available in labs and online on Piazza.
On-line support
We will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates and the course staff. Rather than emailing questions to the course staff, I encourage you to post your questions on Piazza, so other students can benefit from it.
Sign up in our course page at: https://piazza.com/university_of_california_irvine/winter2019/ics46
Access Code: ics46cse46
Course staff
In addition to the instructor, this course offers a crew, who will share the duties of attending the lab meetings and will be the primary point of contact with regard to assignments grading.
- TA - Jeffrey Chen (jeffrc2@uci.edu)
- TA - Qing Han (qhan3@uci.edu)
- Reader - Siddhant Sonkar (ssonkar@uci.edu)
- Reader - Arda Unal (unala@uci.edu)
- Reader - Nile Hanov (nhanov@uci.edu)
- Reader - Amy Luo (xingerl@uci.edu)
- Reader - Ofek Gila (ogila@uci.edu)
Times and places
Lecture
A lecture meets on Tuesdays and Thursdays from 11:00 am - 12:20 pm in PSLH 100. Attendance is graded as extra credit, and we certainly recommend it. (Naturally, attendance is required on the days when exams are held, which are listed in the Schedule.
Lab meetings
While there are no scheduled lab sections in this course, we will be offering informal lab meetings on a selection of days and times throughout the week.
During these times, the course staff will be available to help you as you work through your projects. C++ requires an attention to detail that is uncharacteristically high, even for programming, so it will be handy to have a place you can go to get help; keep this on your calendar. You're free to come and go as you'd like within that time; there are no "sections" or other formal arrangements, and you do not need an appointment to attend.
Attendance to labs offer some significant benefits:
- You will have a chance to consult a TA, reader or one or more lab tutors regarding your work; this kind of instant feedback and help can be invaluable as you work through your projects.
- You will be surrounded by a large group of other people facing the same problems that you're facing. This kind of shared journey will build a social network that will last you, in some cases, for the rest of your life. Don't squander that opportunity!
| Lecture/Lab(s) | Classroom | Staff | Days | Start | Stop | |
| Lecture/Project Presentation | PSLH 100 | Instructor/TA | Sergio Gago-Masague / TA | TuTh | 11:00 AM | 12:20 PM |
| Common Lab 1 | ICS2 100 | Tutor | Freda Huang | MF | 8:00 AM | 9:20 AM |
| Common Lab 2 | ICS2 100 | Tutor | Christopher Sloan | MWF | 9:00 AM | 9:50 AM |
| Common Lab 3 | ICS2 100 | Tutor | Tongjie Wang | MWF | 10:00 AM | 10:50 AM |
| Common Lab 4 | ICS2 100 | Tutor | Phi-Khanh Nicholas Tran | MWF | 11:00 AM | 11:50 AM |
| Common Lab 5 | ICS2 100 | Tutor | Isabelle Wang | MWF | 1:00 PM | 1:50 PM |
| Common Lab 6 | ICS2 100 | Tutor | Macklin Zhong | MWF | 1:30 PM | 2:20 PM |
| Common Lab 7 | ICS2 100 | Tutor | Bryant Gunaman | MWF | 2:00 PM | 2:50 PM |
| Common Lab 8 | ICS2 100 | Reader | Arda Unal | MW | 4:00 PM | 5:00 PM |
| Common Lab 9 | ICS2 100 | Tutor | Kathleen Zhou | MWF | 4:00 PM | 4:50 PM |
| Common Lab 10 | ICS2 100 | Tutor | Jason Huang | TuTh | 9:00 AM | 10:20 AM |
| Common Lab 11 | ICS2 100 | Tutor | Michael Lusher | TuTh | 10:30 AM | 11:50 AM |
| Common Lab 12 | ICS2 100 | Tutor | Huy Minh Tran | TuTh | 12:00 PM | 1:20 PM |
| Common Lab 13 | ICS2 100 | Tutor | Brandon Lee | TuTh | 12:30 PM | 1:50 PM |
| Common Lab 14 | ICS2 100 | Tutor | Johnny Ceja | TuTh | 3:30 PM | 4:50 AM |
| Common Lab 15 | ICS2 100 | TA | Jeffrey Chen | Tu | 1:00 PM | 3:00 PM |
| Common Lab 16 | ICS2 100 | Reader | Siddhant Sonkar | W | 10:00 AM | 12:00 PM |
| Common Lab 17 | ICS2 100 | TA | Qing Han | W | 2:00 PM | 4:00 PM |
| Common Lab 18 | ICS2 100 | Reader | Amy Luo | W | 4:00 PM | 6:00 PM |
| Common Lab 19 | ICS2 100 | Reader | Ofek Gila | Th | 1:00 PM | 3:00 PM |
| Common Lab 20 | ICS2 100 | Reader | Nile Hanov | F | 4:00 PM | 6:00 PM |
Textbooks
This course doesn't use or require a textbook. Alternatively, a detailed and complete set of Notes and Examples will be available on the course website, which will serve as a sort of textbook for this course. You can access the posted files by checking the course Schedule. I will be revising and cleaning the notes up as we go along, and while I'll try to stay ahead of the course's pace, you can reasonably assume that there will occasionally be times that I fall a little behind.
Additionally, you'll continue to build on the C++ skills that you acquired in prerequisite coursework (such as ICS 45C). I'll assume that you're up to speed, but if you need some material to refer back to, Alex Thornton's set of Notes and Examples from ICS 45C, which covers many topics in detail, will likely be of use to you. Feel free to use any other C++ reference that you trust.
Obtaining additional assistance
Asking questions of course staff
You can most easily get course questions answered by posting them on Piazza. You can usually get an answer to course-related questions within a day or two. Coming to the lecture, the lab meetings or office hours is also a good way to get your questions answered. As projects approach their due date, particularly on days when projects are due, we begin to receive quite a bit of activity on Piazza all at once, so we may not be able to respond to all messages before the project is due. We aren't ignoring you on purpose, but unfortunately, it's not always possible for the relatively small course staff to answer questions from a large number of students at once. A great way to mitigate this problem is to get started early and ask questions sooner in the process.
Accommodations for disabilities
Any students who feel that they may need an accommodation based on the impact of a disability should 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, one Midterm, and one Final Exam. The weights of each of these are:
- One warm-up project (Project #0), 2%
- Four projects, 36% (weighted equally at 9% each)
- Three quizzes, 28%(weighted equally at 14% each and dropping the lowest score)
- Final Exam, 34%
- Attendance, +1% (extra credit)
- Course evaluation, +1% (extra credit)
Further Information regarding the projects grading can be found in the Project Guide.
Determining final grades
Course grades will be determined based on the following scale:
| Name: |
Range:
|
||
|---|---|---|---|
Dropping the course or changing grade option
Through the end of Week 2, 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 the final say 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, 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, and that approval is not guaranteed.
Academic Honesty
The policy
As ICS 46 or CSE 46 students, 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 project work is expected to be completed solely by you. Working in larger groups and/or sharing of code 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. 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 Midterm and Final Exam are also expected to be individual efforts. 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 website. Additionally (and at least as importantly), you can receive a course grade of F — as a number of students in ICS 46 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 ramifications, 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've 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:
- If you ask someone to help you resolve a compile-time or run-time error in your program, so you would understand what the error meant, that's fine.
- If you ask someone for help on a project and they responded by giving you a copy of their work, you already have one foot on the line the moment you receive it. If I were you, I would delete it, or not ask for it in the first place.
- If you ask someone else to help you understand a concept like recursion or the use of pointers, and the other student suggests a way you might think differently about the problem you're solving, that's fine.
- If you ask someone else to help you understand how to solve part of the project, and the other student brings up a copy of his or her solution and walks you through it — even if you don't look at it yourself — you've crossed the line.
- If you obtain a copy of someone else's solution to a project and you refer to it and use it to drive the work you're doing — in whole or in part — you've most definitely crossed the line. Copying someone else's code, typing in someone else's code, taking someone else's code and cosmetically changing it to make it appear superficially different are all (obvious) examples of academically dishonest behavior, yet upwards of 10% of my students are caught doing this — and sanctioned for it — every quarter. Please don't be one of them.
- If you provide someone with a copy of your work and they submit it as their own, you are also involved in academically dishonest behavior, and you should be aware that you can also be sanctioned for this, just as the other student can. Your best bet is not to share your work with other students, yet a not-insignificant percentage of my students are caught doing this every quarter, as well.
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 46 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.
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 yourself.
Do not share your prior solutions online.
Course Summary:
| Date | Details | Due |
|---|---|---|