CS 105 Computer Programming: Perl
Fall 2010 (unique # 52230)

When Mondays and Wednesdays at 10:00-11:00 from August 25 through October 18
Where GAR 0.132
Web http://userweb.cs.utexas.edu/users/cdunham/cs105/
Instructor Curtis Dunham
Office hours Tuesdays 9:30-10:30 and Thursdays 1:30-2:30 in Perry-Castañeda library, 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. Beginning Perl (3rd edition) by James Lee is the closest to my course in terms of content. After this course is over and you still like and/or want to use Perl, I highly recommend Effective Perl Programming by Joseph N. Hall, et al. as well as books by Damian Conway and Mark Jason Dominus.

If you find yourself wanting more examples or explanations, I highly recommend purchasing a book!


Students are encouraged to attend every lecture. While poor attendence does not guarantee poor grades, regular attendence is highly correlated with good grades. Any lecture slides or code samples presented in class will be posted to Blackboard. Assignments will be announced in class but not through Blackboard, unless you configure Blackboard to send notifications about new assignments.

Office Hours

Office hours will be held as listed above, on the north side of the 5th floor (the group study floor) of Perry-Castañeda library, unless otherwise announced in class. If you are unable to attend the usual office hours, email me to set up a meeting. I am also happy to thwart a meeting by answering your question via email.


Seven weekly homeworks will be assigned, typically in Wednesday classes and due the following Wednesday. All homeworks are due at 9:00 AM (one hour before classtime) on the due date. Homework can be turned in up to 12 hours late (9:00 PM) for half credit. Homework will be submitted using the turnin program from a CS account (run man turnin on a CS machine for more details). Do not use the Microlab Turnin web page. You need to get a CS account if you don't yet have one. The instructor will run your programs on a CS machine with Perl 5.10.1. Hosts listed by cshosts pub64 have this newer Perl version. I suggest you at least test your programs on one of these hosts. To access your CS account on a machine with a newer Perl, visit the computer lab in ENS 31NR (basement) or log in remotely via SSH.


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 18, but office hours will continue to be available until the due date. Grades will be posted on Blackboard. 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 Blackboard.

Blackboard also has a Discussion Board so students can help each other. 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 are off-limits! (until 9:00 PM on the due date)

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 25 Course overview; Survey; Perl introduction; First program
2 Mon August 30 Perl basics: Variables; Sigils; Defined-ness; Truth; Control flow
3 Wed September 1 Perl basics: I/O; Context; String literals and quoting; Lists
Mon September 6 Labor Day holiday - no class
4 Wed September 8 Intermediate iteration and file I/O; Special variables
5 Mon September 13 Intermediate Array and Hash manipulation; Quoting; Lengths and more Context
6 Wed September 15 Advanced iteration; other print functions; Variable scoping; Function introduction
7 Mon September 20 References; Data structures
8 Wed September 22 Perl warning modes; Introduction to Regular Expressions; Basis in Automata
9 Mon September 27 Regular expressions: Operators, Metacharacters, Character classes, basic assertions
10 Wed September 29 Practical regular expressions; Advanced regular expressions
11 Mon October 4 Using modules and objects; Packages
12 Wed October 6 Object-Oriented theory, examples; some real-world code
13 Mon October 11 Miscellaneous helpful things
14 Wed October 13 discussion of final; catch-up and/or discussion/demonstration of practical issues
15 Mon October 18 Looking ahead: Perl 6
  Mon November 1 final project due at 9:00 PM, no late turn-in

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