ICS 31: Introduction to Programming

Instructor: David G. Kay, 5056 Donald Bren Hall (DBH) (kay@uci.edu)

Quick links: Assignments Partner App Quizzes Piazza (Q&A) Textbook home page Resources

Course goals: This course is the first of a three-quarter sequence introducing computer science through computer programming. This course will broaden your technical horizons, focus on systematic problem solving, and possibly change the way you look at the world. We welcome you and we hope you enjoy it.

Prerequisite concepts: This course does not expect any previous experience in computer science or computer programming. If you do have some experience, you will find some topics familiar but many others will certainly be new to you.

We do expect each student to be able to navigate the Windows systems in our labs, to navigate the World-Wide Web, to download and read documents in Adobe Acrobat (pdf) format, and to read and send electronic mail. Some of our assignments will require these skills. If you need to pick these skills up or sharpen them, do it in the first week of the quarter; speak with us if you need a hand.

Meeting place and times: Tuesdays and Thursdays, lecture section A meets 8:00 a.m. to 9:20 a.m. in Physical Science Lecture Hall 100 and lecture section B meets 11:00 a.m. to 12:20 p.m. in Humanities Instructional Building (HIB) 100. Each student must enroll in one lecture section and attend the section he or she is enrolled in.

Lab sections, TAs, and tutors: Each student must enroll in one of these lab sections:

Lab Time Room TA (Email @uci.edu) Tutor(s) (subject to change)
1 MWF 8–9:20am ICS 183 Syed Shahbaaz Safir (fsyedsha) Yicong Huang, Sui Feng Xu
2 MWF 9:30–10:50am ICS 183 Syed Shahbaaz Safir (fsyedsha) Avelino Miranda, Kareem Aboughazala
3 MWF 11–12:20 ICS 183 Nathaniel Baer (baern) Samreen Imran, Jingkaihui Wei
4 MWF 12:30–1:50 ICS 183 Nathaniel Baer (baern) Wilson Mai, David Wong
5 MWF 2–3:20 ICS 183 Yadhu Prakash (yprakash) Kenny Huynh
6 MWF 3:30–4:50 ICS 183 Yadhu Prakash (yprakash) Qasim Shareh, Patrick Mang
7 MWF 5–6:20pm ICS 183 Anurag Mishra (anuragm) Reid Pattis
8 MWF 6:30–7:50pm ICS 183 Anurag Mishra (anuragm) Xigui Liu
9 MWF 8–9:20pm ICS 183 Jason Desrosiers (jdesrosi) Jay Lin, Matthew McLaughlin
10 MWF 8–9:20am ICS 189 Swarun Krishna Krishnamoorthy (swarunk) Yifan Tian
11 MWF 9:30–10:50am ICS 189 Swarun Krishna Krishnamoorthy (swarunk) Arthur Tham, Dannian Cristalinas
12 MWF 11–12:20 ICS 189 Harun Rashid Anver (hanver) Benedict Mbakogu, John Jackson
13 MWF 12:30–1:50 ICS 189 Harun Rashid Anver (hanver) Lee Austin Suan
14 MWF 8–9:20am ICS 364A Karhtik Rajendra Prasad (prasadkr) Samir Ali-Chaouche, Ken Huang
15 MWF 9:30–10:50am ICS 364A Karhtik Rajendra Prasad (prasadkr) Emory Jiang
16 MWF 11–12:20 ICS 364A Jason Desrosiers (jdesrosi) Brian Singh

None of the 4.5 scheduled lab hours each week are optional. It is essential that you attend the lecture and lab you're officially enrolled in; the class is too full to accommodate "visiting." Most of your lab work will be done in pairs, so the scheduled lab times are the best times to work with your partner. Because the labs are full, switching lab or lecture sections is not automatically supported by the WebReg system. Note that lab sections 14 through 18 are "laptop only sections"; in accordance with the ICS Laptop Policy, students in those sections are required to bring a laptop computer to every section meeting.

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 my office during these scheduled hours, during which course-related matters will have first priority: Tuesdays from 12:45 to 1:15 and Wednesdays from 11:30 to 12:20 (starting the first day of class and ending the last day of class). 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 skip it without getting in touch). The quickest and most effective way to reach me is by electronic mail, as described below.

Questions and announcements: You can get a response to your course-related questions most quickly by posting them at Piazza.com. If you need to reach one of us privately, use our individual IDs listed above. I will never intentionally ignore a message, so if you don't receive a response, write again; sometimes overactive spam filters snag a legitmate message. Using course-specific subject lines and your UCInet Email address will help your messages get noticed.

We will also send course announcements by Email to the official course mailing list, so you should check your Email daily. 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. Don't let this slide; if you miss official announcements, your grade could suffer.

This course's web page is at http://www.ics.uci.edu/~kay/courses/31 and official course Email is archived at eee.uci.edu; follow the link on your MyEEE page.

Textbooks and software: Our textbook this quarter is Introduction to Computing Using Python: An Application Development Focus, second edition, by Ljubomir Perkovic. The course resource page has more information about electronic versions and how to attain them.

The Python software you need for your work (Python 3.5 and the IDLE environment) is installed on every machine in the ICS labs. Because every lab assignment is done with a partner, you'll do much of your work in the scheduled labs. You are also welcome to install Python on your personal machine; we just have to say that because everyone's computer is configured a little differently, we can't promise to fix the installation problems that may come up on your own machine. At http://www.ics.uci.edu/~kay/courses/31/refs.html is a list of supplementary resources on course topics, including information about installing Python.

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 ICS 31 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 such as the Friday after Thanksgiving (but not the Saturday and Sunday).

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.

Course structure:
• Weekly lab assignments (30% of the course grade). All the assignments will be available at
• Class participation: Based primarily on participating consistently and effectively in the lab, including turning in a partner evaluation for each lab assignment. Responding to various electronic surveys and contributing on Piazza.com may help this score, too. (10%)
• Weekly quizzes: Given on line through EEE, available from Sunday afternoon through 11:00 p.m. Tuesday. (10% together) Because these are self-graded, you get credit for completing them, whatever your answers. We can't support make-ups for missed quizzes, since all you have to do is read them and submit answers each week on EEE. This is easy credit to get; just don't forget to do each quiz by Tuesday. There is more information at http://www.ics.uci.edu/~kay/courses/31/quiz/ .
• Two midterms: Given in lecture, the first will be on Tuesday, October 18, and the second on Thursday, November 10 (20%, with the second being weighted more than the first). We can't give make-ups for missed midterms, but if you miss one for a good reason (and let us know about it), we won't count it against your grade.
• One final exam: On Tuesday, December 6. Lecture section A's exam is from 8:00 to 10:00 a.m.; section B's exam is from 10:30 a.m. to 12:30 p.m. (30%).

Your TA has primary responsibility for evaluating your work; see the TA first for any questions about grading or scoring. If that does not resolve your question, then see the instructor. To compensate for differences in grading between different TAs, we will calculate final grades for each TA's students separately rather than for the entire class as one group. Thus, comparison of scores between TAs is meaningless.

Lab scores will be recorded on the web in the EEE gradebook [[subject to change, Fall 2016]]. We will be happy to correct any errors that do occur, but we must ask that you bring your TA 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.

Our goal is to obtain the fairest overall grade outcomes. We find that we achieve this best by not committing in advance to a specific fixed point scale for assigning final letter grades in the course. Thus, no letter grades apply to anything until the end of the course and it is not possible to calculate your letter grade precisely until all the work has been done. Don't ask, "What grade am I getting so far?"; instead ask, "What more can I do to master the material?" or "What should I have done differently on this assignment (or exam)?" We urge everyone to focus not on letter grades but on learning what's necessary to earn high scores; the grades will follow from that. You should check the EEE gradebook periodically to make sure your assignment scores have been recorded correctly. EEE also indicates where your score falls compared to other students; if you find yourself in the bottom quarter consistently, talk with your TA or the instructor.

We're required to say that in unusual circumstances, these policies may change, but we do not expect that to happen.

Special needs: Any student who feels he or she may need an accommodation due to a disability should contact the UCI Disability Services Center at (949) 824-7494 as soon as possible to explore the possible range of accommodations. We encourage all students having difficulty, whether or not due to a disability, to consult privately with the TA or instructor at any time.

What to do this week to get started in ICS 31:
If you do not have a UCInet ID, get one (see http://activate.uci.edu/).
Learn how to read electronic mail sent to your UCInet ID (see http://www.oit.uci.edu/email/). If you prefer to read your electronic mail on an account other than your UCInet account, redirect your mail at http://www.oit.uci.edu/email/deliverypoint.html. If you don't read your course Email most every day, you may miss vital announcements.
If you do not have an ICS account for access to the Windows network in ICS, get one. See http://www.ics.uci.edu/~lab/students/acct_activate.php. The labs will have temporary IDs for the first week or two; get your own ID some time in that period.
On the Web, go to checkmate.ics.uci.edu, log in with your UCInet ID, choose "Fall 2016" and "Course Listing," click "Go" next to ICS 31, and then click "List me for this course." Use your UCInet ID (your Email adddress @uci.edu) for this. You'll submit most of your work electronically; this step is necessary to set that up.
Sign yourself up for ICS 31 at Piazza.com and read a little bit there about how the site works.
Get a lab printing key-card if you plan to do any printing in the lab. See http://www.ics.uci.edu/~lab/students/printing.php.
Complete the survey at http://eee.uci.edu/survey/ics31.f16.q.

Good advice and helpful hints:

Make every effort to attend each class meeting; we will often cover material that isn't directly in the textbook. It's not fair to ask the TA simply to repeat lecture material you missed, though of course the TA will always answer questions about it. And even though UCI Replay recordings will be available for most class sessions, they don't capture everything that goes on in class and they aren't 100% reliable (i.e., some days there will be no recording).

Attend your lab section, too; you will do most of your lab work there, and you can get a fresh perspective from the TA or lab tutor. Don't hesitate to ask your TA to address topics that will help you. Since most of your work will be done with a partner, your partner also depends on your consistent presence.

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. You will want to read the assigned sections early so you can ask us about parts that aren't clear.

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. Assignments will be due weekly, but you'll need to spend some time on them nearly every day, especially after the first couple of weeks. 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 lab about problems you encounter.

If you find yourself having trouble or getting behind, speak with your TA or the instructor. We have lots of ways to help. 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 or exam. ICS takes academic honesty very seriously; for a more complete discussion, see our course collaboration guidelines (http://www.ics.uci.edu/~kay/courses/31/collab.html) and the ICS departmental web page covering academic honesty issues (http://www.ics.uci.edu/ugrad/policies/index.php#academic_honesty).

Turn in whatever portion of an assignment you have completed on the due date. It's much better to turn in something rather than nothing; zeroes are hard to make up. 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. Likewise, don't skip any quizzes or partner evaluations if you can help it; too many zeroes will significantly lower your overall score.

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.

Approximate course outline:

Week Date Topics
0. 22 September Introduction to the course and computing • Models and abstraction
1. 27 September Things (nouns)/objects/data/information and actions (verbs)/statements/operations/functions
29 September Evaluating expressions • Numbers, strings • Variables • Input/output, imperative programming
2. 4 October Multiple-valued data • Namedtuples • Lists • Programmer-defined functions, design recipe
6 October Programming with multiple-valued data • Basic selection (if) and repetition (for)
3. 11 October Arguments and parameters • Extended example
13 October Mutable and immutable data • Mutable parameters and function side-effects
4. 18 October — First Midterm —
20 October Programming with nested data structures
5. 25 October Strings and text processing
27 October Formatting output
6. 1 November Files
3 November Control structures revisited
7. 8 November Combining data structures
10 November — Second Midterm —
8. 15 November Two-dimensional tables
17 November Dictionaries
9. 22 November Tuples and sets
24 November — No class meeting: Thanksgiving —
10. 29 November Extended example
1 December Looking back and looking forward
F. 6 December Final exam, Tuesday, sec. A from 8:00 to 10:00 a.m., sec. B from 10:30 a.m. to 12:30 p.m.

David G. Kay, kay@uci.edu
Saturday, October 8, 2016 7:43 AM