Informatics 45: Patterns of Software Construction
Spring 2010
Course Reference

Instructor information

Office hours: I will be available on Tuesdays and Thursdays from 7:15-8:45pm in ICS 259 — not my office, as it's in a building that will be locked during that time — during which all course-related issues will have the highest priority. If you catch me in my office at other times during the week and I'm not working on something urgently, I'll be glad to chat with you about whatever's on your mind.

Contacting me: I tend to be much easier to reach via email than by phone, so I would suggest using email to contact me under normal circumstances. When you write me an email, please take a few moments to make sure that the following information is placed somewhere in your message: your name, your student ID#, and which course you're enrolled in (I'm teaching more than one this quarter).

Lecture times and places

The lecture meets on Tuesdays and Thursdays from 5:00-6:20pm in ICS 180.

Your TA and lab sections

Your TA this quarter is Ben Compani (

In order to be enrolled in Informatics 45, you must be enrolled in both the lecture and the lab section. Lab sections meet three times per week for two hours. Your attendance at lab sections is not an explicit requirement of the course (in the sense that we will not be recording attendance), but it is expected that successful students in this course will attend almost every time. The lab sections offer real benefits:

The lab section will begin meeting on Wednesday, March 31, and will continue to meet on Mondays, Wednesdays, and Fridays from 4:00-5:50pm in ICS 189.


This course has no assigned textbook, though I may be assigning online reading from time to time. This is not to say that there will not be a fair amount of reading in this course; real-world software development requires quite a bit of reading and digesting of technical documentation, though there's never a single book that tells you everything you need to know, and much of the information you need is best found on the web nowadays.

We'll be doing our work this quarter using Java, so you may find a Java reference book to be useful. You'll probably find your textbook from prerequisite coursework to be sufficient as a reference. If not, there are many suitable ones out there; different styles appeal to different people, so I suggest going to a local bookstore and finding one that you feel comfortable with. One book that you might like is the second edition of a book titled Head First Java, which can be purchased at many bookstores; more information about this book is available at this link.

Obtaining additional assistance

Asking questions of course staff

You can most easily get course questions answered by coming to the lecture, the lab section, or office hours and asking them. I am happy to help you in person when I'm available. You can also ask questions by sending email to me or the TA (or both); we check our email frequently throughout the day, so you can usually get an answer to course-related questions within a few hours (and often much more quickly). If the questions require a complex or lengthy response, we may ask you to see one of us in person. As projects approach their due date, particularly on days when projects are due, we begin to receive quite a bit of email 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.

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 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 provided to you in a timely way.


Weights of graded artifacts

Your course grade will be determined from the weighted combination of your scores on four programming projects and one Final Exam. The weights of the individual components of your grade are:

You will notice from this breakdown that the programming projects make up a substantial portion of your overall grade. This is no accident. While we will discuss general patterns and approaches to constructing quality software, there is no substitute for experience; you can only really learn to build quality software by doing it. We'll be asking you to write a lot of code this quarter, but you will be rewarded for it by having your grade weighted heavily in favor of that work.

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.

Some of the programming projects will permit the use of a technique called pair programming, which is discussed in more detail in the Lab Manual, though it will always be optional. Each of you who pair up will also be asked to fill out an evaluation of your partner after each paired project is due; this will give you an opportunity to let us know, confidentially, whether your experience with your partner was a positive one. I reserve the right to reduce your overall course grade by as much as 10% if the evaluations you receive from your partners are consistently problematic.

If you're curious about how you're doing in the course, I'm happy to discuss your estimated grade at any time. It's generally best to have this conversation in person, so that we can explore issues other than just the raw numbers; I'm happy to have this conversation at any time that I'm available, and I'm also glad to do it via email if we can't find a mutually available time.

Dropping the course or changing grade option

You may drop the course or change your grade option through end of Week 6 (Friday, May 7).

During the first two weeks of the course, adds and drops are handled electronically via the Electronic Add/Drop feature of WebReg. Beyond that time — or any time you want to change grade option — you'll need to obtain an add/drop/change card, which can be found in many places on campus (e.g., Aldrich Hall and the ICS Student Affairs Office, to name a couple), then get my signature on it. (I will sign all of these cards, so please do not approach your TA with these cards. Your TA is not authorized to sign them!) I will not be on campus on Fridays this quarter, so the latest day to get a signature on one of these cards will be Thursday, May 6; I cannot offer exceptions to this under any circumstances.

Academic honesty

The policy

As Informatics 45 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 lab work is expected to be completed solely by you (and your partner, on paired assignments). Worker in larger groups and/or sharing of code between students that are not partners 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 (and your partner, on paired assignments), 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 anymore 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.

Naturally, the Final Exam is expected to be an individual effort. Dishonest behavior during an exam will not be tolerated.

Violators of academic honesty policies are subject to the penalties described in the Bren School of ICS policy. They are also subject to an immediate course grade of F, and you will not be allowed to drop the course to avoid the grade. Also be aware that a single documented case of academic dishonesty may preclude you from switching into computing majors, registering for computing minors, joining the ICS Honors Program, and graduating from a computing major with honors.

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 an off-campus job that's demanding too much of your time, you might be trying to decide whether you're on the 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...

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.