CS 105 Computer Programming: Perl
Fall 2009 (unique # 54525)

When Mondays and Wednesdays at 2:00-3:00 from August 26 through October 19
Where RLM 6.116
Web http://www.cs.utexas.edu/users/cdunham/cs105/
Instructor Curtis Dunham
Office hours Tuesdays and Thursdays 2:30-3:30 in TAY basement, or by appointment
E-mail cdunham at cs.utexas.edu (Please include cs105 in the subject)

Course Objectives

Perl is a programming language that combines the modern robustness of Java with the expedient pragmatism of scripting languages. It offers both the low-level system access of C and the high-level elegance of Lisp. One of its mottoes is, “There’s More Than One Way To Do It.” Its flexibility makes Perl a powerful tool, but its permissiveness can lead to incomprehensible code or mysterious bugs.

This course provides a brief introduction to the language for students who want to add Perl to their toolbox. It assumes familiarity with the fundamental elements of computer programming, but no prior experience with Perl or any other particular language is necessary. Brief weekly assignments will give students hands-on experience writing, debugging, and revising Perl programs. A final project will exercise students' ability to develop a slightly more involved program, integrating concepts familiar from the weekly assignments.


No textbook is required. All assignments should be possible to complete using only the lecture notes and the Perl documentation that it specifically mentions. The perl man page is a great place to start.

However, to get the most out of this course and Perl itself, a book is a great investment. The standard O'Reilly trilogy is Learning Perl (the llama book), Intermediate Perl (the alpaca book), and Programming Perl (the camel book). My presentation will be aimed at maximizing pedagogical value, just like the Llama, so in a sense it is redundant with the lecture materials, but depending on your learning style it may be helpful to have an alternative. The Camel on the other hand is more of a reference, which may be helpful if you want an alternative to the online documentation.


Students are encouraged to attend every lecture. Any lecture slides or code samples will appear after class at the bottom of this page (linked from the lecture number).

Office Hours

Office hours will be held as listed above, in the computer lab in the basement of Taylor Hall, unless otherwise announced in class or on the mailing list. Additional office hours may be available by request.


Seven weekly homeworks will be assigned in Wednesday classes and due the following Monday at 1:00 PM (one hour before the next class). Homework will be submitted using the turnin program from a CS account. (Do not use the Microlab Turnin web page.) The instructor will run your programs on a CS machine with Perl 5.8.8, so I suggest you at least test your program on the machine that you use to run turnin. Type man turnin on a CS machine for more details. If you don't yet have a CS account, create one here. To access a CS account, visit the computer lab in the basement of Taylor Hall or log in remotely (via SSH) to a CS machine listed at CS public host status page.

Solutions will be discussed in class on the due date. If you fail to turn in a solution on time or suspect that your solution is inadequate, you have the option of turning it in for half credit before the next class (Wednesday) at 1:00 PM. For this reason, exact solutions will not be presented on Monday, only key techniques, insights, or hints.


Each homework assignment counts as 10% of your final grade, so all homeworks will collectively count for 70%. The final project will account for the remaining 30% of the final grade. Note that the final project will be due after the class stops meeting on October 19, but office hours will continue to be available until the due date. Grades may be viewed on eGradebook. The instructor reserves the right to use attendance and class participation to improve your final letter grade if you are "on the fence." Any questions about grades must be submitted in writing (including via e-mail).

Class Announcements and Discussion

The instructor will send class announcements through a mailing list (cs105perl09f@utlists.utexas.edu). Please sign up for this list at the UT lists web site. If you prefer not to use email, you have the option of viewing and posting messages at the web site or subscribing to an RSS feed.

This list can also be used for class discussions. Appropriate discussion topics include questions about Perl itself, requests for clarification about anything said in class, requests for help with the computing environment, etc. In general, the discussion board is for sharing information that may be of interest to classmates, but obviously homework solutions (before the extended, half-credit due date) are off-limits!

Code of Conduct

See the Computer Science Department's Code of Conduct. Students are encouraged to work together to improve their understanding of the course material, but for all homework assignments, only their own work may be submitted. University policies on academic dishonesty will be strictly enforced.


1 Wed August 26 Course overview; Survey; Perl introduction; First program
2 Mon August 31 Perl basics: Variables; Sigils; Defined-ness; Truth; Control flow
3 Wed September 2 Perl basics: I/O; Context; String literals and quoting; Lists
  Mon September 7 Labor Day holiday - no class
4 Wed September 9 Intermediate iteration and file I/O; Special variables
5 Mon September 14 Intermediate Array and Hash manipulation; Quoting; More on Context
6 Wed September 16 Other print functions; Variable scoping; Functions
7 Mon September 21 class cancelled
8 Wed September 23 References
9 Mon September 28 Perl warning modes; Intro to Regular Expressions; Basis in Automata
10 Wed September 30 Regular expressions: Operators, Metacharacters, Basic assertions and character classes
11 Mon October 5 Practical regular expressions; Advanced regular expressions
12 Wed October 7 Using modules and objects; Packages; bless
13 Mon October 12 OO review, OOP theory, real-world examples
14 Wed October 14 Miscellaneous helpful things
15 Mon October 19 Looking ahead: new features in Perl 5.10 and Perl 6
  Mon October 26 first and only final pre-grade
  Mon November 9 final project due at 1:00 PM - no chance for half credit

The instructor reserves the right to adjust this schedule if necessary.