Fall 2011 — Informatics DepartmentBren School of ICSUC Irvine

Course Reference
Beyond Java and C++: Functional Programming in Scheme

Transfer Student Seminar (University Studies 4)

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

Quick links: Racket Quick Guide HtDP book PP book Video lectures Piazza Q&A Email archive References

Course goals and learning outcomes: In the 65 years we've had programmable computers, we've learned some things about how to write programs. We've learned more powerful ways to express what we want computers to do; we've learned what programmers have a particularly hard time getting right; we've developed tools to make the job faster and easier and the results more reliable. And this development hasn't stalled. Today's most popular programming languages will be the Fortrans and Cobols of tomorrow. At the university, we want to train you not for your first job, but for your third one; we try to teach principles and ideas that have staying power and a long shelf life so you can apply them to tomorrow's tools, concepts, and problems.

This course introduces a method of programming called functional programming and a programming language called Scheme. Together they let us do some things that more common, more popular approaches to programming don't. But they're not the ultimate, utopian tools; they're not suitable for every task; they will some day be supplanted by still newer techniques. But today, they're valuable additions to your programmer's toolkit.

This course exists for four reasons. First, the topic is interesting, useful, important, and forward-looking. Second, the topic is one that UCI students typically see in their first year (in ICS 22, Informatics 41, or ICS H21) but transfer students typically don't. Third, it introduces you to the practice of pair programming, which again is something that first-year UCI students do but that some transfer students haven't done. And fourth, like any transfer student seminar, it introduces you to an the upper-division UC approach to learning and scholarship.

Prerequisite courses and concepts: This course was designed for transfer students, primarily into the School of ICS but anyone with an interest in programming is welcome. We assume that everyone has had at least one course in programming, in some programming language. Beyond that we'll tailor the course to the group's background and interests.

Of course we expect you to have these basic computing skills: Searching and browsing the Web, reading and sending Email, downloading files, viewing and printing PDF (Adobe Acrobat) documents, and creating or saving documents for Email and other purposes in plain ASCII text form (not HTML or Word attachments).

Meeting place and times: Class meets Tuesdays from 4:00 to 4:50 in Rowland Hall 192.

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 or other topics. I will definitely be in or near my office during these scheduled hours, when course-related matters will have first priority: Tuesdays from 3:30 to 3:45 (and on the way to class) and Fridays from 12:15 to 12:45. 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.

Questions and announcements: You can usually get a response to your course-related questions within a few hours (perhaps a bit longer on the weekends) by sending electronic mail to kay@uci.edu. I will never intentionally ignore a message, so if you don't receive a response, write again; sometimes overactive spam filters snag a legitimate message. Using course-specific subject lines and your UCInet Email address will help your messages get noticed.

I will 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, you should set your UCInet account to forward your Email to your preferred account (see how in the Advice section below). Don't let this slide, in this class or any class; if you miss official announcements, your grade could suffer.

This course has a home page at http://www.ics.uci.edu/~kay/courses/us4/; there's an archive of official course Email at http://e3.uci.edu/11f/w3m3/87604.

Readings and course materials: There is no single textbook that covers all the course material. We will assign readings from a variety of sources, nearly all of them available on line.

Course structure: Everyone can get a high grade in this class by showing up every Tuesday and being engaged with the topic. Of course, I'll suggest programs for you to write and other activities, and the more of them you can do, the more you'll learn. If you anticipate missing a class, please get in touch with me. There will be no exams.

We're required to say that in unusual circumstances, these criteria could 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 instructor at any time.

What you must do right now to get started in US 4:
— If you do not have a UCInet ID, get one. See https://www.nacs.uci.edu/ucinetid/
— If you prefer to read your electronic mail on an account other than your UCInet account (which is a good idea, since if your UCInet account's mailbox fills up, you stop receiving mail), redirect your mail at http://www.oit.uci.edu/email/deliverypoint.html
— Go to www.piazza.com, select UCI and US 4, and follow the steps to add yourself as a student in this course. Piazza.com provides a discussion forum for this class.
— Complete the US 4 Questionnaire at eee.uci.edu (by the end of the first week).
— Consider enrolling in ICS 90, the ICS New Students' Seminar. It meets Fridays from 9 to 11, it's one unit P/NP with no out-of-class work, it introduces you to the university and to various ICS faculty.

Good advice and helpful hints (for this class and every class):

Check your electronic mail regularly; this is an official channel for course announcements. When sending course-related mail, start the subject line with "US 4" or "Scheme Course".

Read each assignment with care, more than once. Reading technical specifications requires different skills than reading on-technical material; acquiring those skills is one goal of this class. Expect to refer back to the assignment often, and check it first when you have questions about what's required or how to proceed.

Don't expect to complete every assignment in one sitting, especially not the night before it's due. If you start early,you'll have plenty of time to ask questions.