Informatics 42 • Department of Informatics • UC Irvine • Winter 2008
Informatics Core Course II
Instructors: David G. Kay, 5056 Donald Bren Hall (email@example.com).
Teaching assistant: Kristina Winbladh (firstname.lastname@example.org). Lab tutor: Nathan Esquenazi.
Quick links: Assignments Simulator Email archive Past quizzes Java docs Textbook site Practice problems Final review questions Other references
Course goals: As the middle course in the first-year sequence, this course continues to focus on software design, from a variety of approaches for modeling problems to the alternatives and tradeoffs of data structure design and implementation to analyzing the performance of those data structures and the associated algorithms. We could call these three themes design (How do we represent our problem so we can solve it with software?), implementation (How do we decide which of the many alternatives would be best for building this solution?), and communication (How can we characterize our solution, especially its efficiency in consuming machine resources under various conditions, in a way that other informaticians will understand?).
Prerequisite concepts: This course expects Informatics 41 as a prerequisite.
Meeting place and times: Lecture meets six hours each week in Bren Hall 1500: Tuesdays and Thursdays from 9:30 to 10:50 and also from 2:00 to 3:20. Discussion and lab section meets Monday, Wednesday, and Friday from 10:00 to 11:50 in ICS 189. Most of your lab work will be done in pairs, so you should plan to attend the scheduled lab times to work with your partner.
Office hours: You are welcome to drop by my office at any time. If I'm there and not immersed in something else, I'll be glad to chat about the course material or other topics. I will definitely be in or near our offices during these scheduled hours, during which course-related matters will have first priority: Tuesdays from 11:00 to 11:45 and Wednesdays from 9:30 to 9:55; I may adjust these times at the end of the first week. Of course emergencies may come up, but I will try to give advance notice of any change. I'll also be happy to make arrangements for other times during the week; "making an appointment" is no big deal (but if you make one, don't blow it off without getting in touch). The quickest and most effective way to reach us is by electronic mail, as described below.
Questions and announcements: You can usually get a response to your course-related questions within a few hours (a bit less frequently on the weekends) by sending electronic mail to the ID email@example.com. This goes to both of us, and whoever reads it first can respond. If you need to reach one of us individually, use our individual IDs listed above.
We may also send course announcements by Email to the official course mailing list, so you should check your Email regularly. Note that this mailing list goes to the Email address that the registrar has for you (your UCInet ID). If you prefer to read your Email on another account, forwarding instructions appear below.
This course's web page at http://www.ics.uci.edu/~kay/courses/i42; official course Email is archived at http://e3.uci.edu/08w/w3m3/37000. If there's interest in setting up a Note Board for semi-public communication among students, let us know.
Textbooks: Data Structures and Algorithms in Java, fourth edition, by Goodrich and Tamassia. This text has a web site at http://java.datastructures.net that contains a variety of useful information, but not the complete text of the book. Earlier editions are not suitable, because they do not cover (at least) Java 1.5. This text is also used in ICS 23, which some of you will take next quarter.
Head First Java, second edition, by Sierra and Bates (optional). This breezy and irreverent text focuses on Java coding at greater length than Goodrich and Tamassia, but it doesn't cover much about the core topics of data structures and algorithms.
Labs and lab hours: Of course you will need to do some of your work outside of the scheduled Monday/Wednesday/Friday lab hours. Students in Informatics 42 may use any of the school's instructional computing labs except for times when another course is scheduled in the lab exclusively. See http://www.ics.uci.edu/~lab for lab hours and other information. Note in particular that all ICS labs are closed on university holidays.
Please remember that programming tasks always take longer to complete than you think they will, no matter how much experience you have. You must account for this as you plan your time; we cannot accept busy schedules or time mismanagement as an excuse for late or incomplete assignments.
Programming language: For most of the work in this course, we will be using Java. The most current version is Java 6; the previous version (Java 5, also known as Java 1.5) is perfectly fine for our purposes. Earlier versions (Java 1.4.2 and earlier) lack some important features. If you wish to work from home, you can find instructions about obtaining and installing Java on Alex's page: http://www.ics.uci.edu/~thornton/ics22/LabManual/SettingUpJava.html.
Other useful addresses: We may distribute some course materials at the Engineering Copy Center (ECC), in Engineering Tower 203; the ECC is open 8-12 and 1-4:30, Monday through Friday.
Weekly homework assignments and roughly bi-weekly lab assignments, some on paper and some on line (25% of the course grade). All the assignments will be available at http://www.ics.uci.edu/~kay/courses/i42/hw/ .
Class participation: Based primarily on participating fully and consistently in lab, including turning in partner evaluations (10%).
Weekly quizzes: Given in lecture every Thursday morning at 9:30, starting on January 10 (30% together).
One final exam: On Thursday, March 20, from 8:00 to 10:00 a.m. (35%).
We determine final grades neither on a formal curve (with equal numbers of As and Fs, Bs and Ds, etc.) nor on a fixed, straight scale. Scores on the scale shown below will get the grades indicated, but in the past the actual cutoffs have often been significantly lower; this means that you should not assume your grade will be as low as the scale indicates. If you're concerned, check with your TA or the instructor. The basic scale is: grades in the A range (A–, A, and in exceptional cases, A+), 90% and above; grades in the B range, 80%–90%; grades in the C range, 70%–80%.
Your TA has primary responsibility for evaluating your work; go to her first for any questions about grading or scoring. If that does not resolve your question, then see the instructor. The TA and instructor will be happy to correct any errors that do occur, but we must ask that you bring us your grading questions within a week after the item is returned; the course moves quickly, and we simply can't deal with assignments long past.
We're required to say that in unusual circumstances, these criteria could change, but we do not expect that to happen.
What to do this week to get started in Informatics
— If you do not have a UCInet ID (an account on the EA system for reading electronic mail), get one. See http://activate.uci.edu/ .
— If you aren't already subscribed to the Informatics Student Association mailing list, INSA-News, subscribe now at https://mailman.ics.uci.edu/mailman/listinfo/insa-news. You'll receive notice of student events, company visits, research opportunities, and more.
— If you prefer to read your electronic mail on an account other than your UCInet account, redirect your mail at http://www.nacs.uci.edu/email/forward.html .
— On the Web, go to checkmate.ics.uci.edu, log in with your UCInet ID, choose the Winter 2008 quarter if it's not already selected, click "Course Listing," click "Go" next to Informatics 42, and then click "List me for this course." You'll submit some of your work electronically; this step is necessary to set that up.
— Get a lab printing key-card if you want to print things in the lab.
Good advice and helpful hints: Make every effort to attend the lectures; even more often than last quarter, we will cover material that isn't directly in the textbooks. It's not fair to ask the TA simply to repeat lecture material you missed, though of course she will answer questions about it.
Attend your lab section, too, since your partner depends on your presence. Don't hesitate to ask your TA to cover things that will help you.
Check your electronic mail regularly; this is an official channel for course announcements.
Keep up with the reading; you'll need it to do your assignments, and the quarter system goes so fast that a few missed pages can quickly become a few chapters if you're not careful. Our text contains some details that won't be vital for your work. You will want to read the assigned sections early and quickly (for the main ideas, not to memorize every detail); then you can ask your TA in section which parts merit closer attention.
The assignments, like all technical specifications, require careful and thorough reading and re-reading. Expect to refer back to the assignment often, and check it first when you have questions about what's required or how to proceed. Before you come to lab, be sure to read the assignment to get an idea of what's required.
Start each assignment early. Programming always takes longer to complete than you think it will, even if you have previous programming experience. By starting early, you'll have time to ask in discussion section about problems you encounter.
If you find yourself having trouble or getting behind, speak with your TA or the instructor. But never take the shortcut of copying someone else's work and turning it in; the consequences can be far worse than just a low score on a lab assignment. ICS takes academic honesty very seriously; for a more complete discussion, see the ICS departmental web page covering academic honesty issues (http://www.ics.uci.edu/ugrad/current/policies/index.php).
Always keep your own copy of each assignment, both electronically and on paper; if an assignment should get lost in the shuffle (or if a file server in the lab should crash, which has happened), we'll expect you to be able to supply a replacement easily. Finally, turn in whatever portion of the assignment you have completed on the due date. In some circumstances you may arrange with your TA to work further on an assignment after the due date, but you must turn in whatever you have when the official due date comes.
Approximate course outline:
|Week||Date||Topics (and chapters in the Goodrich/Tamassia text)|
|1.||8 January||Introduction to the course • Introduction to Java (GT 1, 2)|
|10 January||Classes and data in Java • Information, data, and functions|
|2.||15 January||Input and output in Java|
|17 January||Classic data structures: list, stack, queue, priority queue, map/table/dictionary, tree (GT 4.2, 4.3, 5.2, 6.1, 6.3, 7.1, 8.1)|
|3.||22 January||Algorithm analysis (GT 3)|
|24 January||Implementing data structures (GT 4.4, 4.5, 5.1, 5.5, 6.2, 6.4, 7.2, 8.2, 9.1)|
|4.||29 January||Implementation alternatives and performance tradeoffs|
|31 January||Exception handling|
|5.||5 February||Finite-state automata|
|7 February||Formal languages and natural languages|
|6.||12 February||Probability and decision-making|
|14 February||Object-oriented design, interfaces, inheritance|
|7.||19 February||Extended example|
|21 February||Testing strategies|
|8.||26 February||Recursion and analysis of recursive code|
|28 February||Graphical user interfaces|
|9.||4 March||Concurrency • Programming paradigms|
|6 March||Programming languages compared|
|10.||11 March||Looking back and looking forward|
|13 March||Epilogue and review|
|F.||20 March||Final exam,Thursday, 8:00 to 10:00 a.m.|