| 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 |
| cdunham at cs.utexas.edu (Please include cs105 in the subject) |
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.
| Lecture | Day | Date | Topic |
|---|---|---|---|
| 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.