Fall 2013 — Informatics DepartmentBren School of ICSUC Irvine

Transfer Student Seminar (University Studies 4)

Beyond Java and C++: Functional Programming in Scheme

Course Reference

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

Quick links: Racket Quick Guide "Assignments" 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 (using a dialect called Racket). 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. Even so, today they're valuable additions to your programmer's toolkit.

This course exists for three reasons. First, the topic is interesting, useful, important, and forward-looking. Second, the topic is one that many UCI students have seen in their first year (in ICS 33, most likely) but transfer students typically don't. And third, like any transfer student seminar, it introduces you to an 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 Fridays from 11:00 to 11:50 in Donald Bren Hall 1425.

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 12:30 to 1:15 and Wednesdays from 11:30 to 12:20. 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 get a response to your course-related questions most quickly by posting them at Piazza.com (see below). If you need to reach me privately, send 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 legitmate 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/13f/w3m3/87590.

Readings and course materials: There is no single textbook that covers all the course material at the appropriate level; we will make a variety of suggestions depending on your background and level of commitment.

Course structure: Everyone can get a high grade in this class by showing up every Friday 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; start at the top of this set. 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, 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 Wednesdays from 4:00 to 5:20; it's one unit P/NP with no out-of-class work; it introduces you to the university and to various ICS faculty. There are currently plans to offer it again in the winter.

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".

If you choose to do some assignments, 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.